[GIS] FingerEyes-Xr, TMS(OSGeo Spec) 지원

핑거아이즈가 OSGeo 스펙인 TMS를 지원합니다. TMS는 타일맵 형태의 맵 서비스로 오픈스트리트, 다음, 네이버, 지오서비스의 지도 서비스에서 따르는 맵 서비스 형태입니다. 핑거아이즈에서  TMS를 지원함으로써 사용자가 원하는 다양한 배경지도를 쉽게 활용할 수 있습니다. 다음은 네이버에서 제공하는 배경지도를 핑거아이즈에서 레이어로 추가한 화면입니다.

사용자 삽입 이미지
TMS를 활용하기 위해서는 최소한 다음과 같은 메타데이터(Metadata)를 알고 있어야 합니다.

  • 1픽셀에 대한 지도단위 길이
  • 타일맵 이미지 요청 URL
  • MBR(Boundray)
  • 타일맵 이미지 크기(256×256 등)
  • 타일맵 이미지 형식(PNG/JPEG/GIF 등)

다음은 핑거아이즈에서 네이버의 지도를 TMS를 통해 레이어로 추가하는 코드입니다.

var lyr:IXrLayer = new XrTMSLayer(
  "basemap", 
  [
    "http://onetile1.map.naver.net/get/18/0/0/${z}/${x}/${y}/bl_vc_bg/ol_vc_an",
    "http://onetile2.map.naver.net/get/18/0/0/${z}/${x}/${y}/bl_vc_bg/ol_vc_an",
    "http://onetile3.map.naver.net/get/18/0/0/${z}/${x}/${y}/bl_vc_bg/ol_vc_an",
    "http://onetile4.map.naver.net/get/18/0/0/${z}/${x}/${y}/bl_vc_bg/ol_vc_an"
  ],     
  [2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 0.5, 0.25],
  new XrExtent(90112, 1192896, 1990673, 2761664)
);
    
map.layers.addLayer(lyr);

참고로 TMS를 지원 사이트에서 지도 데이터를 업데이트 하면서 metadata가 자주 변경될 수 있습니다.

[GIS] DuraMap-Xr을 활용한 Windows 기반의 GIS 프로그래밍

듀라맵은 작고 가벼운 GIS 엔진으로 빠르고 풍부한 기능을 제공합니다. 수치지도와 항공영상 기반의 지도 표시, 공간 데이터 편집, 지오메트리와 그리드 기반의 공간분석, 통계 데이터의 차트 표시, 좌표변환, 공간 데이터 생성과 같은 기능을 제공합니다.

사용자 삽입 이미지
듀라맵을 활용한 윈도우즈 기반의 GIS 프로그래밍을 위한 개발자 문서입니다. 문서의 다운로드는 다음 URL을 참고하시기 바랍니다.

[GIS] 오픈된 공간데이터를 활용한 배경맵(BaseMap-Xr) 소개

국가에서 제공하는 많은 오픈된 데이터가 존재합니다. 이러한 오픈된 데이터를 필요로 하는 개인 또는 기업/기관에서 받아 또 다른 형태의 정보로 가공될 수 있습니다. 아래에 소개할 BaseMap-Xr 역시 바로 이러한 예입니다.

향후에 국가에서 공개하는 공간 데이터가 많이 늘어난다고 합니다. 이러한 공개된 공간 데이터를 많은 기업에서 서로 경쟁적으로 활용하고 응용한다는 부분에서 많은 기술 발전이 이루어 질 것입니다. 바로 이러한 기술의 발전의 유도가 공간 데이터를 국가에서 오픈하는 이유이기도 합니다. 국가에서 공간 데이터의 공개 그리고 공유는 이러한 부분에서 매우 긍정적인 정책이라고 생각합니다.

아래의 화면은 오픈 공간 데이터를 이용하여 제작한 배경맵입니다. 전국에 존재하는 모든 건물을 빠짐없이 제공하며 1년에 4번의 업데이트를 통해 최신성을 유지하는 배경맵인 BaseMap-Xr입니다.

사용자 삽입 이미지

BaseMap-Xr은 최신의 배경지도로써 정확하고 풍부한 POI를 제공합니다. GIS 엔진에서 쉽게 사용할 수 있는 타일맵 구조로 되어 있어서 GIS 엔진에 쉽게 적용이 가능합니다. DuraMap-Xr, BlackPoint-Xr, FingerEyes-Xr은 이미 BaseMap-Xr을 기본맵으로 제공하고 있습니다. GIS 엔진과 배경맵을 따로 따로 고려하는 기존의 비효율성과 불편함은 더 이상 존재치 않습니다.

사용자 삽입 이미지
위의 표는 BaseMap-Xr의 제원입니다. BaseMap-Xr을 비상업적인 용도로 활용되는 경우 기술지원 및 활용에 대해서 무상으로 제공드리도록 하겠습니다.

[GIS] 오픈소스, 자바스크립트 좌표계 변환 라이브러리, proj4js

C언어 기반의 좌표계 변환을 자바스크립트(Javascript) 언어로 그대로 포팅한 proj4js에 대한 사용에 있어 간단한 예를 통해 정리해 보려고 합니다. 아직 다양한 좌표계 간의 상호 변환에 적용해 보지는 않았으나 OpenLayers와 같은 오픈소스에서 사용하는 좌표계 변환 API이므로 이미 검증은 되었다고 판단할 수 있습니다.

먼저 proj4js는 http://trac.osgeo.org/proj4js/ 에서 다운로드 받을 수 있고.. 저는 여기서 WGS84 경위도를 Bessel 타원체 경위도로 변환하는 것과.. WGS84 타원체 경위도를 카텍(Katec) TM 직각 좌표계로 변환하는 것에 대한 2가지 예를 정리해 봅니다. 먼저 WGS84 경위도를 Bessel 경위도로 변환하는 코드입니다.




코드를 설명하면.. 1번 코드는 proj4s 라이브러리를 사용할 수 있도록 가져오는 것입니다. 그리고 4번 코드는 proj4js를 사용함에 있어서 오류가 있다면 오류에 대한 메세지를 표시합니다. 여기서는 alert 함수를 사용하여 메세지 창으로 표시하도록 하였습니다. 그리고 5번과 6번이 proj4의 좌표를 정의하는 문자열입니다. 그리고 9번과 10번은 변환을 위한 Proj 객체를 생성합니다. 12번 코드는 변환할 좌표입니다.

13번이 실제로 좌표계를 변환하는 transfrom 함수입니다. 이 함수의 첫번째 인자는 원본 좌표계이고 두번째는 변환되어질 좌표계입니다. 세번째는 변환할 좌표인데.. 변환이 성공하면 다시 이 인자에 결과가 저장됩니다. 주의할 점은 서로 다른 타원체 간의 변환이므로 5번과 같이 towgs84 파라메터를 반드시 지정해야 합니다. 또한 동일한 타원체 간의 변환에서는 towgs84를 지정해서는 않됩니다. 여기서는 3개의 파라메터를 사용하였으나 보다 정확한 변환을 위해 다른 파라메터를 사용하셔도 됩니다. 다음으로 WGS84 경위도를 카텍으로 변환하는 코드입니다.




중요한 부분은 6번에서 카텍에 대한 좌표계 정보에 대한 문자열 값입니다. 또한 towgs84 값을 반드시 지정하였는데.. 이유는 서로 다른 타원체 간의 변환이기 때문입니다. 즉, WGS84 타원체에서 카텍이 사용하는 타원체인 Bessel의 변환이기 때문입니다. 만약 서로 동일한 타원체 간의 변환이라면 towgs84 파라메터를 지정해서는 않됩니다.

(주)지오서비스에서 론니플래닛(Lonely planet) KOREA 버전에 지도엔진 제공

작년에 세계적인 여행가이드 모바일 앱인 론니플래닛에 사용되는 지도 엔진 개발을 의뢰 받아 개발을 진행 했었습니다. 지도 데이터는 오픈스트리트맵(OpenStreet Map)을 사용하기로 하였고 이 지도를 표시하고 론니플래닛에 사용할 맵뷰(지도 엔진) 형태로 제공해 달라는 요청이였습니다. 참으로 힘들게 작업했던 기억이 납니다만…. 저희 (주)지오서비스에서 개발하여 제공한 맵엔진이 적용되어 실제로 구글의 앱장터인 Play 스토어에 등록되어 출시가 되었습니다.

실제로 출시된 버전들중 제가 가장 좋아하는 ‘파리’에 대한 앱의 화면을 몇가지 올려봅니다. 이 앱에서 지도 기능에 대한 화면은 아래와 같습니다.

지도와 정보를 함께 제공하고 있는 화면인데요.. 지도 부분에 대한 내용만을 표시하고 있는 화면은 아래와 같습니다.

개발을 의뢰한 업체는 이미 오픈소스를 검토한 상태였고.. 지도 표출 속도 등의 문제와 라이선스로 인해 오픈소스를 사용하지 않기로 결정하였던 터였습니다. 하지만 지도 데이터는 오픈된 오픈스트리트 맵을 사용하였습니다. 오픈스트리트맵은 공간 데이터를 SHP 형태로 제공하고 있습니다. 이를 받아 지도를 원하는 스타일로 디자인하고 가공하여 타일맵으로 만들어 활용을 하였습니다.