도로중심선만으로 네트워크 데이터 구축하기 ㅡ 3/3

이제 앞서서 도로중심선을 이용해 구축한 Network DB를 기반으로 최단 거리를 찾는 툴을 소개합니다. 이 툴은 필자가 인터넷에서 소개된 A* 알고리즘 내용을 학습하고 직접 개발한 툴입니다. A* 알고리즘은 별도의 글(A* Algorithm)을 통해 설명을 드리겠지만, 한줄로 요약한다면, 최선의 길을 찾으려는 지속적인 노력과 시행 착오를 통한 개선을 통해 결국 최단경로를 찾는 알고리즘이라고 할 수 있습니다. 이 알고리즘을 이해하게 되면 이 한줄의 정의에 대해 고개를 끄덕이게 될거라 생각됩니다. 이 알고리즘에 대해 더 자세한 내용은 다른 많은 글을 통해 설명되어 있으니 당장 궁금한 분들은 검색을 통해 찾아 보시기 바랍니다. 이 툴은 다음과 같은 네트워크 DB를 사용합니다.

위의 파일들이 포함된 폴더를 선택하고 시작 노드와 도착 노드를 클릭해서 선택하게 되면 다음과 같이 최단 경로가 표시됩니다.

아래는 또 다른 최단 경로에 대한 검색 결과(소요소간 약 1.8초)입니다.

지금까지 도로중심선을 이용해 노트워크 DB를 생성하고 최단경로 알고리즘인 A*를 직접 구현한 툴을 소개해 보았습니다.

도로중심선만으로 네트워크 데이터 구축하기 ㅡ 2/3

단순 선형 데이터인 도로중심선을 이용해 노드와 링크 DB를 생성하기 위한 툴을 DuraMap-Xr을 이용해 개발하였습니다. 아래는 해당 툴의 화면입니다.

이 툴을 이용해서, 입력된 도로중심선에 대해 생성된 Node와 link 데이터를 표현해 보면 아래와 같습니다. 먼저 입력된 도로중심선입니다.

위의 도로중심선이 아래처럼 노드와 링크 데이터로 분리되어 생성됩니다.

생성된 노드 DB에 대한 속성 데이터는 아래와 같습니다. 노드에 표시된 숫자는 각 노드에 연결돈 링크의 개수입니다.

그리고 링크 DB에 대한 속성 데이터는 아래와 같습니다.

그러나 위의 노드와 링크에 대한 SHP 파일만을 가지고는 최단 경로 찾기에 대한 알고리즘(A*)을 효율적으로 적용하기 어렵습니다. 특히 Link에 대해서는 빠르고 효율적인 Node 참조가 가능 수 있도록 SQLite와 같은 DBMS에 저장해 둘 필요가 있으며 이러한 목적으로 아래와 같은 툴을 사용하여 Link에 대한 데이터를 SQLite 파일로 생성할 수 있습니다.

위의 SQLite 파일안에는 Link 테이블이 존재하며 Link에 대한 SHP 파일 중 도형 정보 이외의 속성정보를 그대로 가지고 있습니다. 또한 LinkID와 StartNode 그리고 EndNode에 대한 인덱싱 정보를 가지고 있어서 빠른 Query가 가능합니다. 이로써 최단 경로 알고리즘에서 사용하기 위한 기본적인 노드, 링크에 대한 데이터 파일이 준비되었습니다.

도로중심선만으로 네트워크 데이터 구축하기 ㅡ 1/3

도로중심선에 대한 SHP 파일을 통해 노드와 링크 데이터로 구성된 네트워크 데이터를 구축하고자 합니다. 이 목표를 이루기 위해서 3단계의 과정으로 나눠 정리를 하였습니다. 추후 이 3단계 과정을 실제 구현하여 실제로 네트워크 데이터를 구축할 것이고, C# 또는 Java언어를 통해 출발점과 종착점에 대한 최단 거리를 얻을 수 있는, 프로그램에 쉽게 적용할 수 있는 라이브러리를 만들 것이고, 이 라이브러리를 통해 기존의 GIS 엔진중 공간서버와 모바일 GIS 엔진에 최단거리에 대한 기능을 추가할 것입니다.

앞서 3단계의 과정을 언급하였는데요. 먼저 1단계입니다. 아래 그림을 통해 설명하면…

좌측 그림은 원래의 도로중심선입니다. 3개로 구성되어 있습니다. 이해를 돕고자, 폴리라인이 떨어져 보이도록 표시했는데, 붙어 있다고 생각하시기 바랍니다. 결국, 1단계를 거치게 되면 우측처럼 6개의 폴리라인으로 분리됩니다. 즉, 폴리라인의 모든 교차점은 잘려진다가 바로 1단계의 결과입니다. 다음은 2단계를 설명하기 위한 그림입니다.

위의 그림에서, 좌측은 원래의 도로중심선입니다. 2개의 폴리라인으로 구성되어져 있는데, 떨어져 보이도록 구성했으나 원래는 붙어 있다고 생각하시기 바랍니다. 결국, 2단계를 거치게 되면 우측처럼 1개의 폴리라인으로 합쳐집니다. 즉, 단 2개의 폴리라인만이 양 끝지점에서 교차할 경우 하나의 폴리라인으로 만든다가 2단계의 결과입니다. 다음은 마지막 3단계에 대한 설명을 위한 그림 3개 입니다.

위의 그림은 이 글의 가장 처음에 등장한 1단계에서의 그림에서 우측에 해당하는 그림으로 노드는 빨간색 원으로 표기했고, 링크는 노란색 원으로 표기한 것입니다. 총 7개의 노드와 6개의 링크로 구성되어져 있습니다. 어떻한 경우이든 1단계와 2단계를 거친 결과가 바로 아래의 그림이라는 점입니다. 이 그림을 통해 노드와 링크에 대한 테이블에 대한 정보는 아래와 같은데, 먼저 노드에 대한 테이블 정보입니다..

다음은 링크에 대한 테이블 정보입니다.

여기서 한가지 더, 선택적으로 고려해야할 부분이 있습니다. 즉, Undershot 문제인데요. 아래의 이미지를 먼저 살펴보시기 바랍니다.

Undershot이란 위의 이미지에서 왼쪽처럼, 두개의 폴리라인이 만나야 하지만 편집자의 실수로 약간 이격이 발생한 경우입니다. 이때 프로그램으로 이 이격을 제거해주는 작업이 필요합니다.

위 2개의 노드와 링크에 대한 테이블 정보를 통해 최단거리를 얻기 위한 알고리즘의 입력값이 준비된 셈입니다.

공간서버(GeoService-Xr) GS인증 획득

GIS 공간서버인 GeoService-Xr이 GS 인증을 획득(인증번호 15-0307)하였습니다. GeoService-Xr은 항공영상, 수치지도, DEM 데이터를 사용자에게 서비스할 수 있으며, 이러한 공간 데이터의 빠른 처리 및 표출 그리고 분석이 가능합니다. 또한 어플리케이션, 웹, 모바일을 지원하고 이러한 환경 모두에서 공간 데이터의 편집 및 분석 기능을 제공하는 전문가형 공간서버 소프트웨어입니다. GS 인증을 통해 제품으로써의 우수성이 인증되었으며 인증기관(TTA)의 공인된 제품으로써 고객 신뢰성을 확보하게 되었습니다.

아울러 GS인증에 대한 국가의 제도적 해택은 다음과 같습니다.

  • 조달청 제3자 단가 계약 체결을 통해 별도의 경쟁 절차 없이 수의계약으로 구매기관과 직접 납품 계약 체결 가능(조달 법령)
  • 공공기관에서 필요한 SW가 있을 경우 중소기업에서 개발한 GS인증획득 제품을 우선적으로 구매토록 하는 중소기업청 우선구매 제도 혜택(중소기업청)
  • 중소기업 개발제품에 대해 우선구매할 수 있도록 지원하는 성능인증 획득 시 성능검사 면제(중소기업청)
  • 중소기업청의 성능인증을 받은 GS인증 제품이 공공기관 납품 후 결함이 발생하여 손해가 발생 할 경우 이를 배상해 주는 성능보험제도 적용
  • 성능보험에 가입된 GS인증제품 구매로 인해 손실이 발생할 경우 공공기관 구매자에 대한 면책 부여(중소기업청)
  • 신SW상품대상 수상작 GS인증 의무화
  • 공공기관에서 상용SW 구매 시 SW기술성 평가 대체 및 SW 기술제안서 평가 시 가산점 부여 (정보통신부 고시 제2004-4호, 2004.1.28,지식경제부 고시 제2011-148호) – GS인증획득 시 상용SW 기술성 평가기준에 의거, 공급업체 지원의 제품 신뢰도 항목에 대해 2점 부여
  • 병역특례업체 선정 심사 시 가산점 부여 – 중기청 병역지정업체 신청·접수 지침에 의거, 정보통신 분야 업체 병역특례업체 선정 시 [기술력 보유기업] 평가 항목에 대해 5점 부여
  • 전자정부사업 기술제안서 평가 시 가산점 부여 (한국전산원 전자정부지원사업 사업관리방안)
  • 분리발주 대상 SW 요건으로 GS인증획득 제품 지정 고시(지식경제부 고시 제2013-41호)

도로명주소(GRS80 타원체 UTM-K 좌표계)를 지적도(Bessel 타원체 중부원점 TM 좌표계)로 변환하기

국가공간정보유통시스템(NSIC)에서 다운로드 받은 도로명주소의 좌표계는 GRS80 타원체의 UTM-K 좌표계입니다. 그리고 국가 관공서에서 입수한 지적도는 Bessel 타원체의 중부원점 TM 좌표계입니다. 이 도로명 주소를 지적도의 좌표계로 변환하기 위한 내용을 정리해 둡니다. (맨날 까먹어.. –a)

사용하는 툴은 XrProjection입니다. 실행하고 가장먼저 변환 파라메터를 지정합니다. 지적도가 10 파라메터의 Molodensky-Badekas 변환이므로 아래처럼 지정합니다. 즉, 변환 파라메터 사용 여부를 체크하고 10 파라메터를 선택하고 Bessel -> GRS80(WGS84)의 체크를 제거합니다.

다음으로 폴더 대상 SHP 파일 변환을 선택합니다. 폴더를 지정해서 다수의 SHP 파일을 변환할 수 있습니다. 변환할 SHP 파일이 저장된 입력 폴더를 지정하고 좌표계를 UTM-K(GRS80 타원체)를 선택합니다. 그리고 출력 폴더에는 좌표가 변환된 SHP 파일이 저장될 폴더를 지정합니다. 출력 폴더 위의 좌표계는 변환할 좌표계인 대한민국 TM 중부원점(Bessel 타원체) – 10.405 보정을 선택합니다.

변환 버튼을 클릭하면 변환이 됩니다. 아래는 실제 도로명주소와 지적도에 대한 좌표계 일치를 통해 함께 중첩한 화면입니다.

사용자 삽입 이미지