shapefile을 바꾸려는 시도가 있습니까? [닫은]


67

최근 저는 DBF의 10 자 필드 이름 제한을 충족시키기 위해 "25 세 이상의 시민 비율이 학사 학위 이상인"과 같은 완벽하게 좋은 필드 이름을 "edbchogtr"과 같은 것으로 변환하는 데 많은 시간을 소비하고 있습니다.

또 다른 스레드 ( Shapefile 기술 사양의 "Oddities" )에서 geospatialpython 은 " Shapefile 형식의 결함, 이상한 점 및 제한 사항에도 불구하고 GIS 분야와 그 주변에서 완고하게 지속됩니다. 교체하려는 모든 시도는 너무 부 풀었습니다. 단순한 벡터 저장 또는 너무 독점적입니다. "

이 활동은 Lawhead 씨의 의견과 함께 다음과 같이 궁금합니다.

  • GIS의 유비쿼터스 데이터 저장 및 교환 형식으로 shapefile을 대체하려는 명확한 시도가 있었습니까?
  • 경쟁자가 있습니까?
  • 경쟁 형식이 있었는데 왜 실패 했습니까?
  • Esri는이를지지하지 않았습니까, 아니면 이야기는 단순히 기술적 인 관성 중 하나입니까?
  • 시도하지 않은 경우 ... 왜 안됩니까?

GIS 개발자와 사용자 모두 자신을 위해 조금 더 잘할 수있을 것 같습니다.


2
@Mapperz 최근에 출시 된 Geodatabase API 외에는 무료로 지오 데이터베이스를 작성하는 도구가 없습니다. 나는 이것이 세계의 ESRI 부분을 제외하고는 대체물로 간주 될 수 있다고 생각하지 않습니다.
canisrufus 2019

2
당신은 GDAL를 사용하여 작성하고 (API를 통해) 지오 데이터베이스를 읽을 수 gdal.org/ogr/drv_filegdb.html을 사용하여 resources.arcgis.com/content/geodatabases/10.0/file-gdb-api을
Mapperz는

1
ArcGIS 라이센스없이 파일 지오 데이터베이스 (최소한 단순 기능)를 읽고 쓰는 Python API를보고 싶습니다.
PolyGeo

2
@PolyGeo 당신과 다른 사람 :)
Ragi Yaser Burhum

3
@celenius gdal.org/ogr/drv_shapefile.html "지오메트리 : Shapefile 형식은 명시 적으로 32 비트 오프셋을 사용하므로 8GB를 초과 할 수 없습니다 (실제로는 32 비트 오프셋을 16 비트 단어까지 사용). 따라서 파일을 사용하지 않는 것이 좋습니다. 4GB 이상의 크기. 속성 : dbf 형식에는 오프셋이 없으므로 임의로 클 수 있습니다. " 따라서 매우 큰 dbfs를 가질 수 있지만 shp가 4GB 이상이되도록주의해야합니다. 그럼 당신은 불을 가지고 놀고 있습니다.
Ragi Yaser Burhum

답변:


50

이것은 항상 나오는 주제입니다. 나는 정답을 얻지 못하지만 개인적인 의견을 줄 수 있습니다 .

그들이 지원하는 이유는 그들에 대한 몇 가지 특성 때문일 수 있으므로 몇 가지를 언급하겠습니다.

  • 먼저 spec이 있습니다. 나는 30 대 초반이고 십대 때부터 존재했습니다. 따라서이 사양은 얼마 동안 사용되었다고 말하는 것이 안전합니다. 물론 몇 가지 다른 형식도 게시되어 있지만이 형식과 다른 점은 ...

  • 비교적 간단합니다! 그것은 이미 존재하고 여러 플랫폼 / OS에서 광범위하게 지원되었던 DBF 형식 위에 구축되었습니다 . 이 형식 (DBF 부분)의 절반을 읽을 수있는 구문 분석기가 이미 있으므로 추가를 더 쉽게 지원할 수 있습니다. 당신은 기하학이 있습니까? 물론 직렬화하여 작성하십시오. 끝났습니다. 이것을 커버리지 와 대조하십시오 ! 토폴로지 정리가하는 일을 간단한 용어로 누군가에게 설명해보십시오 . 위상 적으로 깨끗한 커버리지를 작성하는 것은 쉽지 않습니다.

  • 가장 중요한 것은 shapefile이 여전히 인기있는 이유 중 하나는 오픈 소스와 독점 시스템 모두에서 지원되기 때문 입니다. shapefile을 지원하지 않는 GIS는 무엇입니까?!? 들어 본 적이 없습니다.

대체, 우리는 듣고 파일 지오 데이터베이스Spatialite . 두 가지 형식 모두 Shapefile과 비교할 때 기능, 유연성, 속도 등의 측면에서 매우 우수합니다. 그들 자신의 방식으로, 그들은 서로 다른 영역에서 서로보다 더 나은 것들을 가지고 있지만 공간적 공간과 FileGDB의 비교는 분명히이 질문의 범위를 벗어납니다.

이 형식 중 하나가 Shapefile을 대체 할 것이라고 생각합니까? 그들의 현재 화신에는 없습니다 .

왜?

기술적 인 주장 때문이 아니라 (결국 그 측면에서 우월하다고 말 했음) 라이센싱이라는 다른 이유 때문이었습니다.

그래서 그들의 문제는 무엇입니까?

FileGDB :

FileGDB는 새로운 FileGDB API를 통해 상호 운용성을 제공합니다. 그럼에도 불구하고이 API는 이진 형식으로 제공 됩니다.ESRI에 의해. 이것은 사양이 아닙니다. 과거 GeoDatabase 팀에서 일한 결과, 모든 주석 호일 모자를 쓴 음모 이론가와는 달리 이것은 악의적이지 않습니다. GeoDatabase의 내부는 매번 릴리스마다 변경되기 때문입니다. 전체 사양을 게시하려면 기본적으로 모든 내용을 유지 관리하는 방법에 대한 모든 세부 정보를 제공 한 다음 매년 릴리스마다 형식 변경 사항을 신중하게 문서화해야합니다. 말이되지 않습니다. 따라서 FileGDB API는 사양이 아니지만 작은 변경 사항을 모두 추상화합니다. 이제 크로스 플랫폼으로 사용할 수 있습니다! 당신을 염두에 두십시오, 이것은 중대한 전진입니다! ESRI의 보수적 인 특성을 고려할 때 이것은 올바른 방향으로의 반응입니다.

그러나 바이너리 전용 지원은 오픈 소스 세계의 어느 누구도 너무 행복하게 만들지 않습니다. ESRI가 지원하지 않는 경우 일부 코드를 이식하여 다른 Linux 버전에 적용하는 방법을 어떻게 활용할 수 있습니까? 당신은 할 수 없습니다. 이것이 오픈 소스를 강력하게 만드는 이유이며 이제는 이것을 이용할 수 없습니다. ESRI가 데비안 지원을 중단하기로 결정했다면 바로 그 것입니다. 끝났습니다. 그리고 그것을 바꾸기 위해 할 수있는 일은 없습니다.

스파 티아 라이트 :

Spatialite는 SQLite 에서 모든 무료 기능을 가져 오기 때문에 훌륭합니다 . SQLite는 모든 곳에서 사용됩니다. Android 전화, iPhone / iPad, Firefox, Chrome, 여러 상용 임베디드 장치에 있으며 영원히 사용할 수 있습니다. 바보 경계 상자 작업뿐만 아니라 Geoformat으로 진정으로 만들려면 PostGIS가 사용하는 것과 동일한 지오메트리 라이브러리를 사용해야합니다. GEOS . 안타깝게도 GEOS는 JTS로 알려진 또 다른 멋진 지오메트리 라이브러리를 기반으로 합니다. JTS의 모든 알고리즘은 매우 강력하므로 어떤 문제가 있습니까?

JTS는 오픈 소스 LGPL로 라이센스 가 있고 LGPL은 바이러스 라이센스 입니다. JTS는 LGPL, GEOS는 LGPL, GEOS와 정적으로 연결된 공간적 공간은 LGPL임을 의미 합니다. 짜증나 왜? 오픈 소스 라이센스를 너무 많이 설명 하지 않으면 , 예를 들어, 전체 앱을 자동으로 오픈 소스로 만들 수 있기 때문에 iPhone 앱에서 공간 라이트를 사용할 수 없다고 말할 수 있습니다 (iOS는 정적 링크 만 허용). 모든 유형의 GPL 라이센스는 (합리적으로) ESRI의 허풍을 두려워하므로 10 피트 폴로 터치하지 않습니다. 따라서 세계에서 가장 인기있는 GIS 시스템 인 ArcGIS는 기본적으로 공간을 지원하지 않습니다. 이것은 자동으로 실행 가능한 형식으로 종료합니다.

따라서 우리는 모든 곳에서 지원되는 엉뚱한 shapefile로 돌아갑니다.

업데이트 :

분명히 내 대답은 논란의 여지가 있었으므로 누군가 견해를 바꾸기 위해 내 대답의 전체 의미자유롭게 편집하고 변경할 수 있다고 결정했습니다 . 그렇게하지 마십시오. 당신이 나에게 동의하지 않는다면, 그것은 완전히 괜찮습니다. 당신의 의견을 다른 답변에 게시하고 커뮤니티가 결정하게하십시오. 원래 의미를 나타 내기 위해 편집 내용을 내 답변으로 롤백했습니다. sqlite가 실행 가능한 형식이라고 주장하는 편집 된 답변을 읽는 경우이 업데이트를 추가하고 있습니다.


SQLite / Spatialite의 문제점은 형식이 아니라 공간 라이브러리가있는 관계형 데이터베이스 엔진이라는 것입니다. 그것이 잘하는 일을하는 동안 데이터를 관계형 방식으로 저장해야합니다. 항상 가장 적합한 방법은 아닙니다. 또한 SQLite 파일 형식 ( sqlite.org/fileformat2.html ) 의 복잡성으로 인해 SQLite 엔진 없이는 데이터에 액세스하기가 어려우 므로 데이터 교환을 위해 개방적이고 쉽게 액세스 할 수있는 파일 형식으로 적합하지 않습니다. 실제로 설계된 것은 아닙니다.
Igor Brejc

8
실제로 LGPL은 바이러스 성 라이센스가 아닙니다. 특히이를 피하도록 설계되었습니다. 또한 Spatialite는 MPL 트라이 라이센스 ( source )에 따라 라이센스가 부여됩니다. 이는 무엇보다도 Mozilla Public License 를 가장 적합한 라이센스 로 선택 하고 (매우 약한 카피 레프트) 조건으로 운영 할 수 있다는 것을 의미 합니다. 적어도 필자는 ESRI가 라이센스 때문에 Spatialite를 지원하지 않을 이유가 없다는 것입니다. FileGDB와 거의 같은 공간에서 경쟁 할 수 있는지 여부는 또 다른 이야기입니다 ...
om_henners

3
@Ragi, 라이브러리를 사용하여 포팅 합니다. 물론 포팅은 본질적으로 파생적인 작업이므로 LGPL이되어야합니다. 그러나 동적으로 연결하면 파생 작업으로 간주되지 않으며 "라이브러리를 사용하는 작업"이며 라이센스를 유지하게됩니다 ( en.wikipedia.org/wiki/GNU_Lesser_General_Public_License ). 따라서 추가 설명없이 "LGPL이 바이러스 성"이라고 말하는 것은 정확하지 않습니다.
Igor Brejc 2019

2
그러나 Spatialite는 트리 라이센스 스키마 ( groups.google.com/forum/?fromgroups#!topic/spatialite-users/… )에 따라 라이센스가 부여되었으므로이 점이 문제입니다 . 따라서 적합한 라이센스를 선택할 수 있습니다 MPL은 정적 연결을 허용합니다.
Igor Brejc 2019

2
@ bugmenot123 좋아, 원한다면 수정하되, 모욕적이기 때문에 OS에 대해 FUD를 퍼뜨린다 고 비난하지 마십시오. 나는 10 년 넘게 OS 코드를 작성 해 왔으며 (실제로 내 일부를 사용했다는 사실에 놀라지 않을 것입니다) 화난 분노는 아니 었습니다. 사실이었고 여전히 그렇습니다. LGPL의 iOS에서 동적 연결 (정확히 말하면, iOS 8 에서는 프레임 워크 가 허용됨). 이것은 기술적 인 문제가 아니라 법적인 문제입니다. 앱 스토어 배포에는 코드 서명이 필요하며 슬프게도 나와 같은 모든 OS 애호가에게는 LGPL이 퍼지 라이센스입니다. 법정에서 전례가 없습니다.
Ragi Yaser Burhum

18

SHP + SHX 부분 자체는 그렇게 나쁘지 않습니다. 실제 문제는 DBF 부분에 있습니다. 그것은 유니 코드와 모든 종류의 최신 필드 유형을 지원하는 새로운 형식으로 할 수 있습니다. 문제는 모든 소프트웨어가 잘 지원하고 있다는 것입니다.


6
+1 DBF 부분을 개선하는 것은 결코 어려운 일이 아닙니다. 소프트웨어 개발자가 무언가
whuber

1
시도가 있었습니까?
canisrufus

5
나는 종종 DBF를 UTF-8 CSV 파일로 대체 한 Shapefile 수정본을 자주 사용했습니다. 기존 소프트웨어 패키지를 간단하게 지원하고 최소한으로 변경해야합니다.
scw

1
@canis Fox Software는 80 년대 후반에 사소한 (독점적 인) 시도를했습니다. MS가 그것들을 구입 한 후 (1990 년경) 그게 다였습니다. 커뮤니티는 DBF 3 표준을 만들었으며 모든 개발이 거의 중단되었습니다. MS는 액세스를 발표했다; FoxPro는 죽었다; 세상은 움직였다.
whuber

1
반대로 @Uffe의 CSV 파일은 임의로 액세스 할 수 있습니다. 효율적인 검색을 위해 DBF 파일과 마찬가지로 인덱스 만 있으면됩니다. 내가 보는 가장 큰 문제는 따옴표 문자열이나 CR / LF 변환과 같이 CSV 파일에 자연스럽게 발생하는 사소한 변경이 모든 바이트 오프셋을 망칠 것입니다. 스토리지에서는 비효율적이지만 DBF 파일 의 고정 길이 레코드 구조에는 문제가 없습니다.
whuber


7

적어도 공간적 의도는 의도가 있습니다. 예를 들어이 프리젠 테이션을 참조하십시오 http://www.sourcepole.ch/assets/2010/9/10/foss4g2010_spatialite.pdf

반면에, 실패한 주된 이유는 shp가 많은 응용 프로그램에서 잘 지원되고 약간의 결함 만 있기 때문이라고 생각합니다.

다른 사람들도이 의견을 공유합니다.

이는 SpatiaLite 프로젝트가 구현할 도구를 제공하지 않았기 때문에 커뮤니티가 관심을 덜 가질 수있는 도구였습니다. SHP는 그들에게 효과가 있으며 변경할 이유가 없습니다.

http://www.spatiallyadjusted.com/2010/09/16/spatialite-is-not-the-shapefile-of-the-future/

Esri 파일 지오 데이터베이스, 공간 및 오토 데스크 sdf에 대한 자세한 내용은 여기를 참조 하십시오 : http://www.spatialdbadvisor.com/blog/121/the-shapefile-manifesto


spatiaLite가 생각하는 한, 기능, 참조 시스템 등에서 약 3MB의 오버 헤드가 발생하여 훌륭한 만능 교환 형식이되지 않습니다.
Scro

실제로, 공간적 공간의 라이센스는 이상적이지 않으며 도구와는 아무런 관련이 없습니다.
Ragi Yaser Burhum

@Scro, 3MB가 너무 큽니까? 데스크탑에는 그리 크지 않습니다. 모바일 장치를 고려해야합니다. 또한 Spatialite보다 작은 크기의 동등한 기능을 가진 다른 Spatial API가 있습니까?
klewis

@ klewis-그 자체로는 너무 크지 않습니다. 작은 (생각 <200kb) 데이터 세트가 많이 있다고 생각하면 매우 비효율적입니다. 수신 된 후에는 일반적으로 각 데이터 세트를 3MB 파일에 그대로 두거나 기존 데이터베이스에 롤링한다는 사실에 비추어 볼 때 이는 많은 오버 헤드입니다. 명확하게 말하면, 나는 <3 spatiaLite입니다. 그러나 우리는 일종의 플랫 파일 / xml / wkb가 훨씬 더 효율적인 데이터 전송에 대해 이야기하고 있습니다.
Scro

6

Esri 는 쉐이프 파일을 대체하기 위해 몇 년 동안 파일 지오 데이터베이스홍보하고 있습니다.

더 최근에는 이상한 점을 숨기는 API 를 제공 했습니다 .


지오 데이터베이스를 다루지 않았습니다. Wikipedia는 "폐쇄 된"표준이라고 말합니다. 예를 들어 지리 데이터베이스 사양이 게시되지 않았습니다. 형식의 내부를 게시하지 않으면 서 광범위하게 채택하기가 어려워 보입니다. 역사를 알기에는 너무 어리지만 셰이프 파일은 사양의 공개 부분으로 인해 부분적으로 인기가 있다고 생각합니다. API는 좋은 단계처럼 보입니다.
canisrufus

1
@ canis 당신이 맞습니다. 당시 아무도 ESRI는 특히 오픈 GIS 데이터 교환 형식으로이를 추진하는 것을 제외하고 shape 파일을 채택하지 않은 것입니다. ESRI의 명확한 .shp / .shx 사양 (그리고 그 표준을 준수하겠다는 약속)을 ​​발표하면서 당시에 사용 가능한 제한된 소프트웨어 도구를 사용하더라도 코드를 읽고 작성하는 데 몇 시간의 작업이 필요했습니다. shapefile 작성 : 리버스 엔지니어링이 필요하지 않습니다.
whuber

API가 블랙 박스 바이너리 블롭 인 한 FGDB는 SHP와 동일한 채택을 보지 못할 것입니다. Esri가 모든 고객이 SHP에서 FGDB로 전환하도록 설득하더라도 API는 실제로 오픈 소스와 호환되지 않습니다.
dericke

3

GML과 같은 XML 언어는 거대한 데이터 세트를 운영하도록 최적화되지 않았지만 소프트웨어 간 또는 플랫폼 간 교환 형식으로 사용될 수 있습니다.

라이센스에 문제가 있다고 생각하지 않으며 (Spatialite의 바이러스 특성에 대한 Ragi Yaser Burhum의 게시물 참조) 필요한 경우 기존 파서를 쉽게 조정할 수 있습니다.


1
나는 그것이 당신이 제기하는 이유 때문에 그것이 언급되지 않았다고 생각합니다. 그것이 큰 데이터 세트에 최적화되어 있지 않습니다. XML이 부풀어 오른다. 여기에 언급 된 형식은 바이너리이며 GML은 포인트를 문자열로 저장합니다. 크기는 다른 순서로 다를 수 있습니다.
canisrufus

3
Canisrufus가 옳습니다. GML에는 몇 가지 문제가 있습니다. XPath를 사용하여 Infoset을 탐색 할 수 있지만 XML을 기반으로 공간 인덱싱을 구현하려는 사람은 이것이 비합리적이며 전통적인 관계형 데이터베이스에 얼마나 잘못 매핑되는지 알려줍니다. 많은 세부 사항을 보지 않고 인덱싱 및 쿼리와 같은 기본 사항이 사소하지 않으면 형식이 부풀어 오르고 기본적으로 메모리에 전체 데이터 세트가 있어야 아무것도 할 수 없으므로 좋은 옵션이 아닙니다.
Ragi Yaser Burhum

4
일반 텍스트로 저장하면 XML이 부풀어 오른다. XML 리더를 대체 할 수있는 이진 xml 라이브러리 (무료 및 무료 및 수정 및 재배포가 모두 가능)는 사람이 XML을 읽을 수 있고 바이너리의 성능 및 저장 효율성을 모두 활용할 수있는 자유를 제공합니다. . 내가 그렇게 크게 생각하지 않는 유일한 이유는 johandvw가 위에서 관찰 한 것처럼 : 아무도 신경 쓰지 않는다. .shp는 "충분히"충분했다.
matt wilkie

1

다른 관점에서이 문제를 해결하기 위해 "25 세 이상의 시민 비율이 학사 학위 이상인 경우" 를 사용하는 것이 완벽한 필드 이름 인지 확실하지 않습니다 . 공백과 아포스트로피를 혼합 할 수는 있지만 코드 나 쿼리를 작성하는 경우 버그가 발생할 가능성이 높습니다.

제 생각에 공간 데이터 배포의 미래는 웹 및 웹 서비스에 중점을 두어야 하며 GML을 사용 하는 WFS 사양이 공개되어 확립되어 있습니다. GeoJSON 은 더 작으며 JavaScript에서 작업하기가 더 쉽습니다. 그러나 압축시 크기는 비슷합니다.

또한 ESRI의 개인 지오 데이터베이스 에 대한 투표를하고 싶습니다 . 종종 Microsoft 형식으로 정렬 될 수 있지만 ODBC, SQL 쿼리,보기를 지원하고 개발자가 아닌 사용자도 쉬운 데이터 입력 양식을 만들 수 있으며 데이터 무결성 검사 수준 (데이터 유형, 길이, 고유 값)을 최소한 포함해야합니다. .


그것은 유효한 포인트입니다. 그들에 대한 좋은 점은 영어에 대한 지식이 주어지면 필드의 의미를 알 수 있다는 것입니다.
canisrufus

그것은 실제로 데이터 세트 메타 데이터의 역할입니다. shapefile은 동일한 이름의 XML 파일을 사용하여이를 저장할 수 있습니다.
geographika
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.