들어가며

 (이미지 출처: Switch from Shapefile )

작년 가을 국가지점번호를 제작하고 이를 공개하는 수단으로 Shape File (이하 SHP)을 고려했습니다. 그러나 당시 내린 결론은 "SHP는 빅 데이터(빅테이블)을 저장하거나 전달하는 수단이 될 수 없다" 입니다.  저희는 "왜 SHP를 사용하지?"라는 의문을 가지게 되었습니다.

본 글의 작성 목적은 다음과 같습니다. SHP는 우리가 사용해야 하는 데이터 형식 중 하나일 뿐이다. 하지만 현 시점에서 굳이 사용할 필요가 있을까하는 고민을 해보자는 것입니다.

SHP 파일은 무엇인가?

GIS분야에서 에서 널리 사용되는 SHP파일은 두 가지 분류가 존재합니다.  (참조: fileinfo )

  • AutoCAD shp file
    다양한 3D 디자인 프로그램에서 사용되는 객체,일반적으로 정점과 선으로 정의된 다각형을 표현
  • ESRI Shpfile
    ESRI 제품군에서 사용하는 데이터 셋으로 GIS 응용프로그램에서 점, 선, 면 같은 공간 형상요소를 저장하는데 사용

GIS사업 태동기 ESRI 제품군이 국내 GIS산업의 발전에 기여한 것은 부인할 수 없는 사실입니다. 공개SW나 대체할 수 있는 기술의 부재로 ESRI의 Arc* 제품군은 널리 사용되었습니다. 그런 이유로 SHP는 국내에서는 특히 사실 상(de facto)의 표준처럼 사용되었습니다.

 그러나 Big Data 의 출현 등 정보 이용 환경이 변함에 따라 그 한계 또한 보이고 있습니다. ESRI 또한 자신들의 사이트에서 이런 한계를 인정하고 극복하고자 노력하고 있음을 알리고 있다.

"shp 파일"은 단순 형상 지오메트리를 저장하는 데 사용할 수 있으나, 속성에 심각한 문제를 가지고 있다. 예를 들어 null 값을 저장할 수없고, 숫자를 반올림하며, 유니 코드 문자열을 제대로 지원하지 못하고, 10 자보다 긴 필드 이름을 사용할 수 없으며 날짜필드에 시간을 저장할 수 없다. 또한 도메인 및 하위 유형과 같은 지오 데이터베이스의 기능을 지원하지 않으므로,아주 단순한 속성이없고 지오 데이터베이스 기능이 필요하지 않으면 shp 파일을 사용할 필요가 없다."
(출처: ArcGIS )

SHP 문제 : 용량 제한 (Object별 2Gb)

 

다뤄야하는 데이터의 크기가 지금처럼 크지 않을 을 때 시스템간 데이터를 옮기는데 이보다 좋은 GIS 파일 형식은 존재하지 않았습니다.

 그러나 현재는 Big Data 시대입니다. 개인용 컴퓨터도 64bit이며, 사용가능한 디스크도 차고 넘치지만 SHP는 Object별(.shp, shx, dbf) 크기가 2Gb를 넘을 수 없습니다. 시대의 흐름에 맞춰 SHP가 진화를 하지 못했습니다. 


국가공간정보포털이 제공하는 연속지적도는 시도 또는 시군구로 나뉘어 배포되고 있습니다. 누군가는 구분된 것이 편하지만 그렇지 않을 경우도 있습니다.
하지만 SHP의 파일 크기 제한으로 지역별로 구분되어 배포될 수 밖에 없습니다. 
(이미지 출처: 
Switch from Shapefile )

예를 들면 Excel, Lotus123, dBaseⅢ 등은 동시대에 최고의 업무 도구였지만 지금은 파일 적재용량을 진화시켜 온 Excel만이 시장을 지키고 있습니다.  
(사실 이 부분도 시장에서 64bit 체계가 본격화 되면서 자연스레 진화 한 것이지 억지 용량을 확장 시키려 진화 한 것은 아니라고 생각된다.)

SHP는 3가지 핵심 구성요소 를 가지고 있다. *.shp, *shx, *.dbf

이 중 속성 적재 체계(*.dbf) 는 dBase의 파일적재 구조를 차용해서 사용하고 있다. 
(dBASE는 1980 년대 초에 개발 된 형식으로, 당시에는 특성 테이블을 저장하는 데 사용)

전체 3가지 구성요소 각각은 이론적으로 용량이 무제한이지만, 벡터요소를 저장하고 속성과 매칭 시켰을때 기술적 문제때문에 각각의 구성파일로 한개의 공간정보를 표출 할 수 있는 한계가 2Gb 였던 것으로 알고 있다. 
덕분에 shp 파일을 지원하는 도구들의 처리용량도 종속되어 shp 파일 용량 이상으로 확장 할 수 없다.

shp 파일은 명시적으로 32 비트 오프셋을 사용함으로 최대 8Gb 를 넘을 수 없지만 실제로는 16비트 word에 32 비트 오프셋을 사용 한다. 하지만 OGR shapefile 은 4Gb로 제한 되어 있다. 

 

SHP 문제 : 헐~ 이렇게나 많이

  • 좌표계 정의를 위한 별도 파일 요구
    좌표계를 가지기 위해 부가적으로 *.prj 파일 요구
  • 벡터, 속성, 인덱스가 분리된 다중 파일 형식
    사용자는 하나의 파일로 데이터를 주고 받을 수 없어, 네트워크 환경에서 이용하기에 제약이 존재
    (현재 zip 형식으로 배포하는 것이 가장 일반적임)
  • 속성 필드 명칭 길이 제한 (10자 보다 긴 이름을 사용할 수 없음)
  • 최대 필드 개수 제한 (DBF는 255개 이상 필드를 지원하지 않음)
  • 제한된 자료형 (Float, Integer, Date, text형의 254 character)
  • 문자 셋 이용 제한
    알 수 없는 문자 셋, 데이터베이스에서 사용되는 일부 문자셋 사용 불가, UTF-8 미지원
  • 토폴로지 (Topology)를 지원하지 않음
    지형 객체간 관계를 가질 수 없어 별도 3rd Party 도구 요구
    (Topology란 쉽게 말해서 "홍길동과 홍길순이 손을 잡았다"에서 "손을 잡았다(관계)"를 말합니다)
  • 다중 Geometry를 지원하지 않음
    하나의 SHP에 점, 선, 면을 함께 자장할 수 없습니다. 오직 한가지 형태의 도형만 저장
  • 단일 테이블만 지원
    테이블의 상속, 관계 등이 없음으로 전체 데이터 셋을 관리할 수 있는 방법을 제공하지 않음
  • Binary 형식으로 벤더 종속
    대용량 데이터의 Streaming Service 이행 불가, 기계판독(Machine-Readable)이 불가능한 벤더 종속적인 형식으로 데이터의 일부분을 가지고 시각화가 어려움

 

마치며

데이터를 개방하고 공유하는 시대입니다. SHP는 전체 시스템 관점에서 데이터를 생산하는 도구에서 사용되는 좋은 포맷일 수 있지만 개방 및 서비스를 위한 좋은 포맷은 아닙니다. 오랜기간 사용되어 친숙합니다. 편한 것 같기도 합니다. 하지만 주위를 둘러보면 이제는 다른 대안이 필요하다는 것을 알 수 있습니다.

작성하고 보니 SHP가 나쁜 놈처럼 보입니다. 그렇지 않습니다. SHP는 그 용도가 분명히 있습니다. 전체 시스템 관점에서 볼 때 언제 어떤 것이 쓰이는 것이 가장 좋을지 판단하고 사용하자라는 것입니다.

+ Recent posts