[GIS] BlackPoint, 항공영상 레이어 지원

현재 지오서비스에서 개발중인 안드로이드 기반의 GIS 솔루션인 블랙포인트에서 대용량의 항공영상 파일을 빠르게 화면상에 표시할 수 있는 기능이 추가되었습니다. 블랙포인트는 모바일 GIS 엔진으로 현장 중심의 데이터 편집 시스템 개발을 주목적으로 합니다. 네트워크가 되지 않은 현장을 지원하기 위해 SHP, 항공영상 등을 SD 메모리에 담아 어디서든 화면상에 표시하고 GPS를 통해 현재의 위치를 쉽게 파악하여 시설물등에 대한 도형 데이터를 생성하여 SHP 파일등으로 생성할 수 있습니다.

사용자 삽입 이미지
블랙포인트의 항공영상 표시 기능은 다음과 같은 장점을 갖습니다.

  1. 메모리를 거의 사용하지 않아 모바일 디바이스의 리소스 제약에 영향을 전혀 받지 않는다.
  2. 항공영상 파일을 로딩할때 준비하는 과정 없이 바로 화면에 표시된다.
  3. 일반 PC에서 항공영상을 표시하는 것처럼 매우 빠르다.

다음은 블랙포인트에서 SHP 파일을 표시하는 기능에 대한 화면입니다. 블랙포인트에서 SHP 파일을 표시하는데 사용하는 SHP 라이브러리는 지오서비스에서 개발하여 오픈소스로 제공하고 있는 SimpleSHP 라이브러리(SimpleSHP API)를 사용하였습니다.

사용자 삽입 이미지

[GIS] GeoService-Xr에서 새로운 DBMS 추가를 위한 인터페이스 구현

새로운 DBMS를 GeoService-Xr에 추가하기 위한 클래스 간의 관계를 정리해 봅니다. 이번에 새롭게 추가해야할 DBMS는 PostgreSQL에 기반한 PostGIS입니다. PostGIS이므로 공간검색이나 공간 데이터에 대한 관리는 모두 PostGIS의 기능을 그대로 사용합니다. 시간 상으로 PostGIS를 깊이 있게 살펴본 상태는 아니지만.. 지금까지의 느낌으로는 깔끔합니다. 속도 역시 빠릅니다. 아래 그림은 새로운 DBMS 추가 확장에 대해 관련이 있는 클래스만을 떼어 놓은 GeoService-Xr의 클래스 관계도입니다.

사용자 삽입 이미지
보시면… GeoService-Xr이 지원하고 있는 공간 데이터의 소스가 어떤 것인지를 알 수 있습니다. 현재는 파일기반, MySQL 그리고 ArcSDE입니다. 여기에 더해질 PostGIS가 가능합니다. 또한 편집이 가능한 데이터 소스는 MySQL과 PostGIS라는 것도 파악할 수 있습니다. 즉, 편집을 위한 인터페이스를 선언하고 있는 클래스가 XrEditableSpatialAccess인데 이 클래스를 상속받고 있는 클래스가 XrMySqlAccess와 XrPostGISAccess이기 때문입니다.

공간 데이터 서비스 및 공간 데이터의 편집이 가능한 공간 DBMS를 새롭게 추가하기 위해서 XrEditableSpatialAccess를 상속받아야 하며.. 이때 구현해야할 인터페이스 매서드의 개수는 13개입니다. 먼저 최상위의 Access 클래스에 대해 구현해야할 추상 매서드는 다음과 같습니다.

  • getAccessType : Access의 타입 반환함(AccessType이라는 enum 타입의 값 반환)
  • connect : 파일 열기, 소켓 오픈 등과 같은 데이터 소스 접근 준비
  • build : 파일이나 DB로부터 공간 쿼리가 실제 가능하도록 준비

그리고 SpatialAccess에 대해 구현해야 할 추상 매서드는 다음과 같습니다.

  • getMBR : 지정된 row에 대한 MBR을 얻음
  • collectConnectionInfo : 필드구성, 전체 row 수, 공간 도형 타입, MBR 정보를 얻음
  • queryByMBR : MBR에 포함되는 공간 데이터를 쿼리함

그리고 최종적으로 XrEditableSpatialAccess에 대해 구현해 줘야할 추상 매서드는 다음과 같습니다. 만약 편집 기능이 필요치 않을 경우 이 클래스의 추상 매서드는 구현할 필요가 없습니다.

  • updateFeature : 편집된 공간 데이터를 update 시킴
  • deleteFeature : 지정된 공간 데이터를 삭제함
  • insertFeature : 새로운 공간 데이터를 추가시킴
  • checkExistFID : 지정한 FID가 이미 존재하는지 검사함
  • checkExistFIDs : 지정한 FID 리스트가 존재하는지 검사함
  • writeEditedHistoryData : 공간 데이터에 대한 편집 이력을 기록함(반드시 구현할 필요는 없음)
  • getDBResource : 데이터 소스에 접근하기 위한 DB 리소스를 얻음

이상으로 XrGeoService-Xr 공간 서버에서 새로운 DBMS를 새롭게 지원하기 위해 구현해야할 인터페이스에 대한 정리였습니다.

[GIS] FingerEyes-Xr, 안드로이드 플래폼 지원

핑거아이즈(소개)는 플래시 기반의 GIS 엔진입니다. 웹에서 데스크탑 못지 않은 GIS의 기능을 지원하기 위해 개발한 제품입니다. 이번에 여러가지 다각적인 검토와 보완을 통해 핑거아이즈의 모든 기능을 안드로이드에서 지원할 수 있게 되었습니다.사용자 삽입 이미지위의 화면은 삼성 갤럭시에서 실제로 핑거아이즈를 구동시켜본 화면입니다. 타일맵을 통한 베이스맵 표현에서 시작해 수치지도의 피쳐를 터치하여 속성을 확인하고 편집하는 등의 핑거아이즈 모든 기능을 안드로이드에서 그대로 실행할 수 있습니다.

이제 핑거아이즈를 통해 하나의 GIS 시스템을 개발하게 되면 데스크탑에서는 물론 안드로이드 기반의 디바이스에서도 동일하게 GIS 시스템을 구동할 수 있습니다.

[GIS] DuraMap, 듀라맵 3.1.0.1 버전업

듀라맵이 3.1.0.1로 버전업 되었습니다. 추가된 기능 2가지와 해결된 오류입니다. 먼저 해결된 오류는 윈도우즈 XP에서 편집시 잦은 다운현상을 해결하였습니다. 이 문제에 대한 이유는 XP와 비스타(Windows 7 포함)에서 동기화 객체인 CriticalSection의 작동에 차이가 발생하는 것에 원인이 있었습니다. 그리고 추가된 기능 2가지는 다음과 같습니다. 첫번째로 사용자가 정의한 도형을 포인트 심벌로 사용할 수 있게 되었습니다. 그리고 두번째는 폴리곤의 라벨 표시에서 항상 폴리곤 위에 표시되도록 개선함으로써 라벨의 가시성을 향상시켰습니다.

먼저 사용자 정의 도형을 포인트 심벌로 지정하는 기능은 추후 CAD 데이터를 완벽하게 지원하기 위한 기능으로 CAD에서는 포인트에 대해 Block Symbol 기능과 유사합니다. 이 기능은 추후 CAD 데이터(DXF 파일)을 지원하는 기능을 추가할때 이 기능이 유용하게 사용될 예정입니다.

사용자 삽입 이미지
그리고 라벨 표시에서 항상 폴리곤 위에 표시되도록 개선한 기능은.. 기존에 폴리곤의 라벨은 항상 도형의 무게중심점(Centroid)를 기준으로 라벨을 표시하도록 하였으나 가끔 폴리곤 밖으로 라벨이 표시되는 현상이 발생하여 항상 도형 안에 라벨이 표시되도록 한 기능입니다. 위의 이미지에서 첫번째는 일반적인 도형의 무게중심점 위치에 라벨을 표시하도록 한 이미지이고 두번째가 이번에 새롭게 개선된 라벨 표시에 대한 이미지입니다.

추가된 새로운 기능에 대한 API 사용방법에 대해서는 추후 별도의 글을 통해 소개드리도록 하겠습니다.