±ÍÇÏ´Â ¼Õ´Ô À̽ʴϴÙ
·Î±×ÀÎ
ȸ¿ø°¡ÀÔ
  
  µ¨¸¶´ç °ø½Ä ÀºÇà°èÁÂ
  ÇϳªÀºÇà 227-910235-83607
  ¿¹±ÝÁÖ ÀÌ»ó±¹(¿î¿µÁø)
ÇÁ·ÎÁ§Æ® °Ô½ÃÆÇ
ÅõÇ¥°Ô½ÃÆÇ
µ¨¸¶´ç¼Ò°³
±âÃʺÎÅÍ È°¿ë±îÁö! µ¨ÆÄÀÌ ±³À° - µ¥ºê±â¾î
ÀÚ·á½Ç ÀÚ·á½Ç ÀÔ´Ï´Ù.
±Û³»¿ë - ÀÚ·á½Ç
 [Delphi] ±¹°¡°ü½ÉÁöÁ¡(POI)À» MDB ·ÎÄ÷Π°Ë»öÇϱâ
È«¼º¶ô
(È«¼º¶ô)
2016-02-14 ¿ÀÈÄ 4:40:15
3061ȸ Á¶È¸


÷ºÎÆÄÀÏ ´Ù¿î·Îµå
POI°Ë»ö.png
¿¹Àü¿¡´Â POI, ÁöÀû, °Ç¹°, Ç¥±âÁö¸í, µµ·Î¸í, ÇàÁ¤°æ°è µîÀ» ÀÌ¿ëÇØ °Ë»öâÀ» ¸¸µé°í, DB¸¦ ±¸ÃàÇÏ°í À妽º¸¦ ¸¸µå´Â µî ÀÛ¾÷ÀÌ ¸¹¾Ò´Ù. ¿äÁò¿¡´Â OpenAPI·Î Áö¸í°Ë»ö, Áö¹ø°Ë»ö, µµ·Î¸íÁÖ¼Ò°Ë»ö, Geocoder µîÀ¸·Î µ¥½ºÅ©Å¾¿¡¼­ ½±°Ô »ç¿ëµµ ÇÏ°í ÀÖ´Ù.

ÇÏ¿©°£ ÁÁÀº Äõ¸®¹®µµ Áß¿äÇÏÁö¸¸ ÁÁÀº µ¥ÀÌÅ͵µ ÇÊ¿äÇÕ´Ï´Ù.

Áö³­¹ø ±æã±âµµ ³×ºñ°ÔÀ̼Ǡ¾÷üÀÇ µ¥ÀÌÅ͸¦ ÀÌ¿ëÇÏµí ³×ºñ°ÔÀ̼ÇÀÇ °Ë»ö±â´Éµµ GISÀÀ¿ëÇÁ·Î±×·¥¿¡ Á¢¸ñÇϱ⿣ ÁÁÀº ¾ÆÀ̵ð¾îÀÔ´Ï´Ù. ÁÖº¯/ÃÖ±Ù/Ãʼº Ã£±âµµ ÀÖ°í, ´ë¿ë·®À» »¡¸® Ã£°í, Å׸¶¶ó°íÇؼ­ ´ëÁß¼Ò ºÐ·ù·Î À½½ÄÁ¡/ÁÖÀ¯¼Ò µî DB Å×À̺íÀÇ Ä÷³¿¡ ºÐ·ùü°è°¡ Àß µÇ¾î ÀÖ¾î È°¿ë¼ºÀÌ ÁÁ½À´Ï´Ù.




1. ±¹°¡°ü½ÉÁöÁ¡(Point of interest)À» MDB·Î ¸¸µç ÆÄÀÏÀº ¾à 600¸¸°Ç(6,065,659)À¸·Î, 

    Äõ¸® ¼Óµµ¸¦ À§ÇØ À妽º Çϳª ¸¸µé¾î ³ÖÀ¸¸é ¾à1.2GB (¾ÐÃàÇϸé 324MB)ÀÔ´Ï´Ù.

    - ´ë¿ë·®À̶ó °Ô½ÃÇÒ ¼öµµ ¾ø¾î¼­, ³×À̹öŬ¶ó¿ìµå µå¶óÀ̺꿡 ¿Ã·Á ¸µÅ©¸¦ °É¾ú½À´Ï´Ù

    - ¸µÅ©´Â ¿ø¹®(http://cafe.naver.com/gisapplication/905)¿¡¸¸ °Ô½ÃÇÕ´Ï´Ù. (Á¤È¸¿ø¸¸ Á¢±ÙÇÏ°Ô µÇ¾îÀÖ½À´Ï´Ù)

       Á¦°¡ ¹«·á·Î¸¸ »ç¿ëÇϹǷΠURL ¸¸·áÀÏ(2016.03.14)µµ ÀÖ°í 100¿©¸í Á¦Çѵµ À־¿ä ¤Ð¤Ð

    - °Ë»öÀº ¾Æ·¡ ´ëÁ߼Һзù¿Í PNU/ÁÖ¼Ò µîÀ» È°¿ëÇؼ­ »ó¼¼ Áö¸íÀ» °Ë»öÇϵµ·Ï ÀÀ¿ëÇÒ ¼ö Àִ ±¸Á¶ÀÔ´Ï´Ù

    - ÁÂÇ¥´Â ÀÌÀü ±âÁØÀΠ"UTM-K GRS80"À» »ç¿ëÇÕ´Ï´Ù. 


 

2. POI MDB¸¦ ÀÌ¿ëÇÑ ´Ü¼ø Áö¸í°Ë»ö ¿¹Á¦ ÇÁ·Î±×·¥


 - À§¿¡¼­ º» Å×ÀÌºí ±¸Á¶¸¦ º¸¸é  ´ëÁ߼Һзù¿Í PNU/ÁÖ¼Ò µîÀ» È°¿ëÇؼ­ »ó¼¼ Áö¸íÀ» °Ë»ö ÀÀ¿ëÇÒ ¼ö ÀÖÁö¸¸ 

    º» ¿¹Á¦´Â ´Ü¼ø ¸íĪ¸¸ °Ë»öÇÕ´Ï´Ù. Àε¥½º »ý¼ºÇÏÁö ¾ÊÀ¸¸é ¾à 20~25ÃÊ °É¸®³ª À妽º »ý¼ºÇϸé 1Ãʵµ ¾È°É¸³´Ï´Ù.

    ±×¸®°í, Äõ¸®½Ã Äõ¸®¾çÀÌ ¸¹°Å³ª ¾à 600¸¸°ÇÀ» ´Ù µ¹¸®´Â°Íº¸´Ù´Â "select TOP 50 " µîÀÇ Á¦ÇÑÀ¸·Î ¸Þ¸ð¸® ÃÊ°úµî 

    ¿À·ù¸¦ ¿¹¹æÇϼ¼¿ä.

 - Äõ¸®¸¦ ½º·¡µå(Thread)¸¦ »ç¿ëÇÏ¿© ÇÁ·Î±×·¥ ¸ØÃãÀ̳ª ¹ö¹÷°Å¸²À» ¿¹¹æÇÏ¿´½À´Ï´Ù.

 - ÁÂÇ¥´Â ÀÌÀü ±âÁØÀΠ"UTM-K GRS80"À» »ç¿ëÇÕ´Ï´Ù. ¼Ò½º¿¡¼­´Â °£´ÜÇÑ ¼ö½ÄÀ¸·Î ±Ù»çÄ¡ WGS84·Î º¯È¯ÇÏ¿© ºêÀÌ¿ùµå¸¦ 

   À̵¿½Ãŵ´Ï´Ù

 - µ¨ÆÄÀ̼ҽº·Î ¿¹Á¦¸¦ ¿Ã·ÈÀ¸³ª ¸¶Âù°¡Áö·Î ¿ø¹®(http://cafe.naver.com/gisapplication/905)¿¡¸¸ °Ô½ÃÇÕ´Ï´Ù. 

   (¼Ò½º¼öÁ¤°ü¸®)

- ½ÇÇà¹æ¹ýÀº ¾ÐÃàÀ» Ç®°í, ½ÇÇàÆÄÀÏÀÌ Àִ ReleaseÆú´õ¿¡ À§¸µÅ©¿¡¼­ ´Ù¿î¹ÞÀº TN_NPOIBASS.mdb¸¦ °°Àº 

  À§Ä¡¿¡ ³Ö¾î¼­ ½ÇÇàÆÄÀÏÀ» °¡µ¿Çϼ¼¿ä



* ÁÖ¿ä¼Ò½º



function YLconnect (aConn: TADOConnection): boolean;
var
    sSql, sPath: string;
begin
    result := True;
    if aConn.Connected then
        exit;
    result := False;
    try
        sPath := ExtractFilePath (Application.ExeName);
        aConn.ConnectionString := format (CSConnStr,
            [sPath + 'TN_NPOIBASS.mdb', sPath]);     //6,065,659°Ç
        aConn.Open;
        result := True;
    except
    end;
end;


function MyThread(P:pointer):LongInt;StdCall;
begin
  with Thread_aQuery do begin
    close;
    sql.Clear;
    //sql.add(Thread_asSql);
    SQL.Text := Thread_asSql;
    open;
    //ExecSQL;
  end;
end;

function YLExeQueryThread (aQuery: TADOQuery; asSql: string; End_Proc:TEndProc): integer;
var
  waitresult: Dword;
begin
  result := -1;

  try
    if(Thread_hThread = 0)then begin
      result := 0;
      Thread_aQuery := aQuery;
      Thread_asSql := asSql;

      Thread_hThread := CreateThread(nil,
                          0,
                          @MyThread,
                          nil,
                          0,
                          Thread_ID);
      if(Thread_hThread <> 0)then begin
         repeat
             try
               Application.ProcessMessages;
               if Thread_NowClose then exit;
               waitresult := WaitForSingleObject(Thread_hThread, 100); // ½º·¹µå°¡ Á¾·áÇÒ ¶§±îÁö ´ë±â  INFINITE
             except
             end;
         until waitresult <> WAIT_TIMEOUT;
         if waitresult <> WAIT_FAILED then begin
            try
              CloseHandle(Thread_hThread);
              TerminateThread(Thread_hThread,0);
              Thread_hThread := 0;
              End_Proc(0);
            finally
            end;
         end;
      end;
    end;
  except
  end;
end;

/////////////////////////////////////////////////////////////////////

procedure TFormMain.BitBtn1Click(Sender: TObject);
var
    sSql, FieldValue: string;
    strArr : TStringList;
    i : integer;
begin
  if(YLConnect(ADOConnection1))then begin
    strArr := TStringList.Create;
    ExtractStrings([' '],[],Pchar(Edit1.Text),strArr);
    FieldValue := '';
    for i:= 0 to strArr.Count-1 do begin
        if(strArr.Strings[0] <> '')then begin
           if(i = 0)then
              FieldValue := '(FMYNM Like ' + '''' + strArr.Strings[i] + '%'')'
           else
              FieldValue := FieldValue + 'AND'+ '(FMYNM Like ' + '''%' + strArr.Strings[i] + '%'')';
        end;
    end;
    strArr.Free;

    if(FieldValue <> '')then begin
      sSql := format ('select TOP 50 FMYNM,LEGALCD,RNADRES,ETCADRES,XCOORD,YCOORD  from TN_NPOIBASS where %s ', [FieldValue]);
      sSql := sSql + ' and LEGALCD IS NOT NULL ';
      TGIFImage(Image1.Picture.Graphic).Animate := true;
      Image1.Visible := true;
      YLExeQueryThread(ADOQuery1, sSql, End_Query);
    end;
  end;
    //FMYNM  LEGALCD (¹ýÁ¤ÄÚµå10ÀÚ¸®) RNADRES(µµ·ÎÁÖ¼Ò) ETCADRES(ÁöÀûÁÖ¼Ò) XCOORD YCOORD
end;