2011년 9월 5일 월요일

다양한 포맷을 지원하는 .NET C#용 GIS Viewer 프로그램 만들기

간단한 GIS Viewer 프로그램을 하나 만들면서 진행한 과정입니다.

▣ 미션
 - WPS 결과물(Vector, Raster, Geometry)을 시각화하는 프로그램
 - Vector = Shaepfile, GML2, GML3 등
 - Raster = GeoTiff, Jpeg2000 등
 - Geometry = GML, WKT, WKB, GeoJSON, KML 등

▣ 요구사항
 - Visual Studio 2008 C# .NET Framework 2/3.5 환경
 - WPS 결과물로 리턴되는 다양한 GIS 포맷을 읽을 수 있어야 함
 - 이미 만들어진 프로그램에 Map Control 2개만 들어가야 함 - Shapefile, Grid, Graphic 등을 사용자가 설정한 스타일에 맞게 렌더링
 - 자체 뷰어를 만들기보다 오픈소스나 무료로 사용가능한 라이브러리 검토

▣ 오픈소스 및 라이브러리 검토
 ○ 검토대상 라이브러리
    - MapWindow6
    - SharpMap V2 
    - 김형준 GIS 연구소 (for Developers) - DuraMap-Xr

 ○ 포맷변환
 - GDAL/OGR CSharp bindings

 ○ 검토결과
 - MapWindow6, SharpMap 등은 .NET Framework4에서만 운영되며기본 포맷 외 확장 포맷 변환은 GDAL/OGR 라이브러리 사용 - 대상에서 제외
 - 포맷 변환은 GDAL/OGR 사용
 - DuraMap-Xr은 COM 기술로 제작되어 .NET Framework 제약을 받지 않음
 - DuraMap-Xr은 Shapefile, Graphic(Geometry), GeoTiff 등을 직접 읽을 수 있음
 - DuraMap-Xr의 GridMap Layer를 이용하여 래스터 픽셀단위의 읽고 쓰기가 가능하며 스타일 설정이 간단함
--> DuraMap-Xr 사용 결정

▣ DuraMap-Xr 적용
 ○ GeoTiff Raster와 GML Point
 - GML Point 레이어를 Raster Kernel Density 알고리즘을 이용하여 분석

 ○ GML Geometry와 GML Polygon
 - Point, Polygon Geometry를 Buffer 후 원본 Point, Polygon, Buffered Polygon 및 버텍스를  화면에 출력