[GIS] DBF 필드값 최적화시켜 용량 대폭 줄여주는 툴, OptimizeDBF

간혹, 사실은 거의 대부분.. 가지고 있는 Shape 파일의 속성 정보인 DBF 파일이 내용에 비해 그 용량이 매우 크게 느껴질때가 있습니다. 하나의 예로 아래는 제가 가지고 있는 62MB 크기의 DBF 파일의 덤프 내용입니다. 가장 윗부분에 필드 이름이 정의되어져 있고, 그 아래로 쭈욱~ 값들이 기록되어져 있는데.. 실제 내용보다는 빈문자열이 훨씬 많습니다. 이렇게 된 이유는, 특히 문자열 필드의 경우 길이를 기본적으로 255자로 정의하고 DBF를 생성했기 때문입니다.

사용자 삽입 이미지
아래는 이런 불성실한 ^^; DBF 파일의 용량을 줄여주는 툴입니다. 필드값을 저장할 수 있는 필드의 최대 길이를 자동으로 계산해 줌으로써 사용자가 따로 계산할 필요가 없습니다. 또한 저장할 필드를 따로 선택해 저장시킬 수 있습니다.

사용자 삽입 이미지
위의 툴을 이용해 생성된 DBF 파일의 덤프 내용은 아래와 같습니다. 용량이 62MB에서 3.45MB로 꽤나 많이 줄었습니다.

사용자 삽입 이미지
이 툴을 만들게 된 목적은 개발중인 맵 엔진(XGE)에 데이터를 제공하는 웹방식의 데이터서버가 관리하고 있는 속성 데이터를 최적화시킬 목적으로 만들게 되었습니다. XGE 지도 엔진을 만들기 위한 Core 라이브러리를 이용해 제작했습니다.

[GIS] DXF를 ESRI Shape로 변환해주는 툴, DXF to SHP

DXF를 ESRI의 SHP 파일로 변환해주는 툴입니다. 수치지도 DXF 파일과 내보낼 레이어를 선택하고, 변환될 Shape의 종류를 선택해주면 Shape 파일로 생성해 주는 간단한 툴입니다. 개발중인 맵 엔진에 DXF 수치지도를 표시하는 기능에 대비해, 회사에서 DXF를 Shape 파일로 변환해야할 일이 생겨서 겸사 겸사 만들어 보았습니다. Shape의 속성은 Layer 명 하나만 만들어 집니다.

사용자 삽입 이미지
사용하기 전에 알면 좋은 점이.. DXF 수치지도를 Point나 Polyline, Polygon으로 내보기기 할때 DXF에서 이용할 Enitity입니다.

  • Point : CAD의 INSERT 엔티티를 사용
  • Polyline : CAD의 POLYLINE 엔티티를 사용
  • Polygon : CAD의 POLYLINE 엔티티를 사용하며, 폐합된 엔티티만을 Polygon으로 내보냄(만약 Force Close-Polygon을 체크하면 강제로 폐합시키고 모든 엔티티를 내보냄)

아래는 화면은 이 툴을 이용해 실제 수치지도를 등고선 레이어 7XXX 대를 폴리라인으로 내보내기 해서 ArcMap으로 살펴본 화면입니다.

사용자 삽입 이미지
이 툴은 XGE 지도 엔진을 이용하지 않고, XGE 지도 엔진을 구현하기 위한 Core 라이브러리를 이용해 개발하였습니다. C++로 개발된지라 .NET 2.0 역시 필요치 않습니다.