Gibt es Versuche, das Shapefile zu ersetzen? [geschlossen]

67

In letzter Zeit habe ich viel Zeit damit verbracht, perfekt gute Feldnamen wie "Prozent der Bürger ab 25 Jahren mit einem Bachelor-Abschluss oder höher" in "edbchogtr" umzuwandeln, um die 10-stellige Feldnamenbeschränkung des DBF zu erfüllen.

In einem anderen Thread ( "Seltsamkeiten" in der technischen Spezifikation von Shapefile ) bemerkte Geospatialpython : "Trotz der Mängel, Seltsamkeiten und Einschränkungen des Shapefile-Formats ist es in und um das GIS-Gebiet hartnäckig geblieben. Jeder andere Versuch, es zu ersetzen, war zu aufgebläht einfache Vektorspeicherung oder zu proprietär. "

Diese Aktivität in Verbindung mit dem Kommentar von Herrn Lawhead hat mich gefragt:

  • Wurden jemals explizite Versuche unternommen, das Shapefile als allgegenwärtiges Datenspeicher- und Austauschformat von GIS zu ersetzen?
  • Gibt es Anwärter?
  • Warum sind konkurrierende Formate gescheitert?
  • Hat Esri sich geweigert, sie zu unterstützen, oder handelt es sich bei der Geschichte nur um eine technologische Trägheit?
  • Wenn es keine Versuche gegeben hat ... warum nicht?

Es scheint, als könnten wir uns als GIS-Entwickler und -Nutzer etwas verbessern.

canisrufus
quelle
2
@Mapperz Abgesehen von der kürzlich veröffentlichten Geodatabase-API werden keine Tools zum Schreiben einer Geodatabase angezeigt, die kostenlos sind. Ich denke nicht, dass dies als Ersatz gelten könnte, außer im ESRI-Teil der Welt.
Canisrufus
2
Sie können Geodatabases (via API) mit GDAL schreiben und lesen gdal.org/ogr/drv_filegdb.html mit resources.arcgis.com/content/geodatabases/10.0/file-gdb-api
Mapperz
1
Möchten Sie, dass die Python-API File-Geodatabase (zumindest Simple Features) ohne ArcGIS-Lizenz liest / schreibt? Das wäre "Offen".
PolyGeo
2
@PolyGeo Sie und alle anderen :)
Ragi Yaser Burhum
3
@celenius From gdal.org/ogr/drv_shapefile.html "Geometrie: Das Shapefile-Format verwendet explizit 32-Bit-Offsets und kann daher 8 GB nicht überschreiten (es werden 32-Bit-Offsets für 16-Bit-Wörter verwendet). Daher wird die Verwendung einer Datei nicht empfohlen Größe über 4 GB. Attribute: Das dbf-Format enthält keine Offsets und kann daher beliebig groß sein. " Sie können also ziemlich große dbfs haben, aber Sie müssen vorsichtig sein, wenn Ihr shp 4 GB überschreitet. Dann spielst du mit dem Feuer.
Ragi Yaser Burhum

Antworten:

50

Dies ist ein Thema, das immer wieder auftaucht. Möglicherweise habe ich nicht die richtige Antwort, aber ich kann Ihnen meine persönliche Meinung mitteilen .

Der Grund, warum sie unterstützt werden, kann auf mehrere Merkmale über sie zurückgeführt werden, lassen Sie mich einige erwähnen.

  • Erstens gibt es eine Spezifikation . Ich meine, ich bin Anfang dreißig und dieses Ding gab es, seit ich ein Teenager war. Man kann also mit Sicherheit sagen, dass es diese Spezifikation schon seit einiger Zeit gibt. Natürlich gibt es auch einige andere Formate, die veröffentlicht werden, aber der Unterschied zu diesem ist, dass ...

  • Es ist relativ einfach! Es baut auf dem DBF-Format auf , das zu diesem Zeitpunkt bereits existierte und auf mehreren Plattformen / Betriebssystemen weitgehend unterstützt wurde. Es gab bereits Parser, die die Hälfte dieses Formats (den DBF-Teil) lesen konnten, wodurch die Unterstützung des zusätzlichen Zusatzes vereinfacht wurde. Sie haben eine Geometrie? Sicher, serialisiere es einfach und schreibe es. Du bist fertig. Vergleichen Sie dies mit einer Berichterstattung ! Versuchen Sie, jemandem in einfachen Worten zu erklären, was eine Topologie-Bereinigung bewirkt . Es ist nicht trivial, eine topologisch saubere Berichterstattung zu schreiben.

  • Vor allem glaube ich, dass der Hauptgrund für die Beliebtheit von Shapefiles darin besteht, dass sie sowohl in Open Source- als auch in Proprietary-Systemen unterstützt werden . Welches GIS unterstützt keine Shapefiles?!? Unerhört.

Als Ersatz hören wir von File GeoDatabases und Spatialite . Beide Formate sind in Bezug auf Funktionalität, Flexibilität, Geschwindigkeit usw. Shapefiles weit überlegen. Auf ihre eigene Art haben sie bestimmte Dinge, die sie in verschiedenen Bereichen besser machen als andere, aber ein Vergleich von Spatialite und FileGDB ist sicherlich nicht in Frage zu stellen.

Glaube ich, dass eines dieser Formate Shapefiles ersetzen wird? Nicht in ihren aktuellen Inkarnationen .

Warum?

Nicht wegen eines technologischen Arguments (ich habe doch gesagt, dass sie in diesem Aspekt überlegen sind), sondern wegen etwas anderem: der Lizenzierung.

Also, was sind ihre Probleme?

FileGDB :

FileGDB bietet Interoperabilität über die neue FileGDB-API. Trotzdem wird diese API im Binärformat bereitgestelltvon ESRI. Dies ist keine Spezifikation. Nachdem ich in der Vergangenheit im GeoDatabase-Team gearbeitet habe, kann ich Ihnen sagen, dass dies, im Gegensatz zu allen Verschwörungstheoretikern, überhaupt nicht böswillig ist. Dies liegt daran, dass sich die Interna der GeoDatabase bei jeder Veröffentlichung ändern. Das Veröffentlichen einer vollständigen Spezifikation würde im Grunde bedeuten, alle Details darüber anzugeben, wie alles gewartet werden soll, und dann die Änderungen des Formats bei jeder jährlichen Veröffentlichung sorgfältig zu dokumentieren. Das ergibt keinen Sinn. Die FileGDB-API abstrahiert all diese kleinen Änderungen, auch wenn es sich nicht um eine Spezifikation handelt. Und jetzt kann es plattformübergreifend eingesetzt werden! Wohlgemerkt, das ist ein großer Schritt vorwärts! Angesichts des konservativen Charakters von ESRI ist dies definitiv eine Reaktion in die richtige Richtung.

Und dennoch macht die reine Binärunterstützung niemanden in der Open Source-Welt allzu glücklich. Wie können Sie dann den Vorteil nutzen, Code zu portieren, um ihn einer anderen Linux-Variante mitzuteilen, wenn ESRI dies nicht unterstützt? Das kannst du nicht. Das macht Open Source so mächtig, und jetzt können Sie das nicht mehr ausnutzen. Wenn ESRI beschließt, Debian nicht mehr zu unterstützen, ist das alles. Du bist fertig. Und es gibt nichts, was Sie tun können, um es zu ändern.

Spatialite :

Spatialite ist fantastisch, weil es die gesamte kostenlose Funktionalität von SQLite erhält . SQLite wird überall verwendet. Es ist auf Ihrem Android-Handy, auf Ihrem iPhone / iPad, in Firefox, in Google Chrome und auf mehreren kommerziellen Embedded-Geräten - kann für immer weitergehen. Um es wirklich in ein Geoformat zu verwandeln (und nicht nur dumme Bounding-Box-Operationen auszuführen), muss dieselbe Geometriebibliothek verwendet werden, die PostGIS verwendet: GEOS . Leider basiert GEOS auf einer weiteren, noch besseren Geometriebibliothek, die als JTS bekannt ist . Alle Algorithmen in JTS sind extrem leistungsfähig. Wo liegt also das Problem?

Nun, JTS ist als Open Source LGPL lizenziert und LGPL ist eine virale Lizenz . JTS ist LGPL, bedeutet, dass GEOS LGPL ist, bedeutet, dass Spatialite statisch mit GEOS LGPL verbunden ist. Das ist scheiße. Warum? Ohne zu viele Erklärungen zu Open-Source-Lizenzen zu machen, kann ich Ihnen sagen, dass ich beispielsweise nicht Spatialite für eine iPhone-App verwenden kann, da dadurch meine gesamte App automatisch Open Source wird (iOS erlaubt nur statische Verknüpfungen). Jede Art von GPL-Lizenz erschreckt (vernünftigerweise) den Mist von ESRI, und so werden sie ihn nicht mit einer 10-Fuß-Stange berühren. Daher unterstützt ArcGIS, das beliebteste GIS-System der Welt, Räumlichkeiten von Haus aus nicht (und wird dies wahrscheinlich auch nie tun). Dadurch wird es automatisch als funktionsfähiges Format gelöscht.

Und so kehren wir zu beschissenen Shapefiles zurück, die überall unterstützt werden.

Update :

Anscheinend war meine Antwort so kontrovers, dass jemand entschied, dass es in Ordnung sei , die gesamte Bedeutung meiner Antwort frei zu bearbeiten und zu ändern , um ihren Standpunkt darzulegen. Bitte tu das nicht. Wenn Sie mit mir nicht einverstanden sind, ist das völlig in Ordnung, posten Sie einfach Ihre Meinung in einer anderen Antwort und lassen Sie die Community entscheiden. Ich habe die Änderungen an meiner Antwort rückgängig gemacht, um die ursprüngliche Bedeutung zu zeigen. Ich füge dieses Update hinzu, falls Sie die bearbeitete Antwort lesen, in der behauptet wird, SQLite sei ein brauchbares Format.

Ragi Yaser Burhum
quelle
Das Problem mit SQLite / Spatialite ist, dass es sich nicht um ein Format handelt, sondern um eine relationale Datenbank-Engine mit räumlicher Bibliothek. Während es das tut, was es sehr gut kann, werden die Daten auf relationale Weise gespeichert, was nicht immer der am besten geeignete Weg ist. Auch die Komplexität des SQLite-Dateiformats ( sqlite.org/fileformat2.html ) erschwert den Zugriff auf die Daten ohne die SQLite-Engine und ist daher nicht als offenes und leicht zugängliches Dateiformat für den Datenaustausch geeignet. Es war nicht wirklich dafür gedacht.
Igor Brejc
8
LGPL ist eigentlich keine virale Lizenz - sie wurde speziell entwickelt, um dies zu vermeiden. Darüber hinaus ist Spatialite unter der MPL-Tri-Lizenz ( Source ) lizenziert. Dies bedeutet, dass Sie unter anderem die Mozilla Public License als die am besten geeignete Lizenz auswählen und unter deren Bedingungen (sehr schwaches Copyleft) arbeiten können. Ich lese zumindest, dass ESRI keinen Grund hat, Spatialite wegen der Lizenz nicht zu unterstützen - ob sie (vorausgesetzt, sie konkurriert auf fast demselben Raum wie FileGDB), ist eine andere Geschichte ...
om_henners
3
@Ragi, Sie mischen mit einer Bibliothek und die Portierung es. Natürlich muss die Portierung LGPL sein, da dies im Wesentlichen eine abgeleitete Arbeit ist. Wenn Sie es jedoch dynamisch verknüpfen, wird es nicht als abgeleitete Arbeit betrachtet, sondern als "Arbeit, die die Bibliothek verwendet", und Sie können Ihre Lizenz behalten ( en.wikipedia.org/wiki/GNU_Lesser_General_Public_License ). Die Aussage "LGPL ist viral" ohne zusätzliche Erklärung ist also nicht korrekt.
Igor Brejc
2
Dies ist jedoch auch ein strittiger Punkt, da Spatialite unter einem baumlizenzierten Schema ( groups.google.com/forum/?fromgroups#!topic/spatialite-users/… ) lizenziert ist , sodass Sie die passende Lizenz auswählen können Sie am meisten - MPL ermöglicht die statische Verknüpfung.
Igor Brejc
2
@ bugmenot123 Gut, dann korrigiere es, wenn du willst, aber beschuldige mich nicht, FUD über das Betriebssystem zu verbreiten, weil es beleidigend ist. Ich habe über ein Jahrzehnt lang OS-Code geschrieben (wäre nicht überrascht, dass Sie einige von mir tatsächlich verwendet haben), und das war kein böser Scherz. Es war wahr - und ist es immer noch. Dynamische Verlinkung in iOS von LGPL (na ja, Frameworks waren in iOS 8 erlaubt). Dies war nie ein technisches Problem, sondern ein rechtliches. Die Verbreitung im Appstore erfordert eine Codesignatur - und leider für alle Betriebssystemliebhaber wie mich - LGPL ist eine Fuzzy-Lizenz dafür. Kein Präzedenzfall vor Gericht.
Ragi Yaser Burhum
18

Das SHP + SHX-Teil selbst ist nicht so schlecht. Das eigentliche Problem liegt im DBF-Teil. Das könnte mit einem neuen Format geschehen, das Unicode und alle möglichen modernen Feldtypen unterstützt. Das Problem ist, dass es von der gesamten Software gut unterstützt wird.

Uffe Kousgaard
quelle
6
+1 Das Verbessern des DBF-Teils ist überhaupt nicht schwierig: Es kommt wirklich darauf an, Software-Entwickler zu überzeugen, sich auf etwas
Whuber
1
Hat es einen Versuch gegeben?
Canisrufus
5
Ich habe oft nach einer Shapefile-Änderung gesucht, die einfach eine UTF-8-CSV-Datei für die DBF ersetzt. Es ist einfach zu unterstützen und erfordert minimale Änderungen an vorhandenen Softwarepaketen.
scw
1
Ende der 80er Jahre unternahm @canis Fox Software einen kleinen (proprietären) Versuch. Nachdem MS sie gekauft hatte (ca. 1990), war das alles. Die Community hat einen DBF 3-Standard entwickelt, der die gesamte Entwicklung einfror. MS veröffentlicht Access; FoxPro ist ausgestorben; Die Welt ging weiter.
whuber
1
Im Gegenteil, bei @Uffe kann auf CSV-Dateien nach dem Zufallsprinzip zugegriffen werden: Sie benötigen nur einen Index, genau wie DBF-Dateien für eine effiziente Suche. Das größte Problem, das ich sehe, ist, dass scheinbar geringfügige Änderungen, die auf natürliche Weise an CSV-Dateien vorgenommen werden, wie das Zitieren von Zeichenfolgen oder CR / LF-Konvertierungen, alle Byte-Offsets vermasseln. Die Datensatzstruktur mit fester Länge einer DBF-Datei weist dieses Problem nicht auf, obwohl sie im Speicher weniger effizient ist.
whuber
7

Zumindest Spatialite hat das vor, siehe zB diese Präsentation http://www.sourcepole.ch/assets/2010/9/10/foss4g2010_spatialite.pdf

Andererseits glaube ich, dass der Hauptgrund für das Scheitern darin besteht, dass shp von vielen Anwendungen gut unterstützt wird und nur geringfügige Mängel aufweist.

Andere teilen diese Meinung ebenfalls:

Dies liegt nicht daran, dass das SpatiaLite-Projekt uns keine Tools zur Implementierung gegeben hat, sondern daran, dass sich die Community weniger darum kümmern könnte. SHP arbeitet für sie und es gibt keinen Grund, sich zu ändern.

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

Weitere Gedanken zu Esri File Geodatabase, Spatialite und Autodesk SDF hier: http://www.spatialdbadvisor.com/blog/121/the-shapefile-manifesto

johanvdw
quelle
So großartig ich denke, dass spatiaLite ist, es sind ~ 3 Megabyte Overhead in Funktionen, Referenzsystemen usw., die verhindern, dass es ein gutes Allround-Austauschformat ist.
Scro
Eigentlich ist die Lizenz für Spatialite alles andere als ideal - sie hat nichts mit den Tools zu tun.
Ragi Yaser Burhum
@Scro, 3 Megabyte ist zu groß? Es ist sicherlich nicht zu groß für den Desktop. Sie müssen mobile Geräte in Betracht ziehen. Gibt es auch eine andere Spatial-API mit vergleichbarer Funktionalität in einer kleineren Größe als Spatialite?
Klewis
@klewis - es ist per se nicht zu groß, es ist nur sehr ineffizient, wenn man bedenkt, dass es viele kleine (etwa <200 KB) Datensätze gibt. Dies ist ein erheblicher Aufwand, insbesondere angesichts der Tatsache, dass Sie jedes Dataset nach dem Empfang in der Regel in seiner 3-MB-Datei belassen oder in eine vorhandene Datenbank rollen. Um es klar zu sagen, ich <3 spatiaLite - aber wir sprechen von Datenübertragung, wo eine Art Flatfile / xml / wkb viel effizienter wäre.
Scro
6

Esri bewirbt File Geodatabases seit mehreren Jahren als Ersatz für Shapefiles.

In jüngerer Zeit haben sie eine API bereitgestellt , die alle Kuriositäten verbirgt.

Kirk Kuykendall
quelle
Ich habe nicht viel mit Geodatabases gearbeitet. Wikipedia gibt an, dass es sich um einen "geschlossenen" Standard handelt, z. B. wurde die Geodatabase-Spezifikation nicht veröffentlicht. Es scheint schwierig zu sein, eine breite Akzeptanz zu erzielen, ohne die Interna des Formats zu veröffentlichen. Ich bin zwar zu jung, um die Geschichte zu kennen, aber ich vermute, dass Shapefiles zum Teil aufgrund des öffentlichen Teils der Spezifikation so beliebt sind. Die API scheint ein guter Schritt zu sein.
Canisrufus
1
@canis du bist richtig. Zu dieser Zeit hätte niemand Shapefiles übernommen, außer dass ESRI sie ausdrücklich als offenes Format für den GIS-Datenaustausch bewarb. Sogar mit den begrenzten Softwaretools, die zu der Zeit verfügbar waren, wurde es mit ESRIs Veröffentlichung einer klaren .shp / .shx-Spezifikation (und der Verpflichtung, sich daran zu halten) zu einer Frage von nur wenigen Stunden Arbeit, Code zu schreiben, um ihn zu lesen und zu bearbeiten Shapefiles schreiben: kein Reverse Engineering notwendig.
whuber
Solange die API ein Black-Box-Binär-Blob ist, wird FGDB nicht dieselbe Akzeptanz wie SHP finden. Auch wenn Esri alle Kunden davon überzeugt, von SHP zu FGDB zu wechseln, ist die API nicht wirklich mit Open Source kompatibel.
Dericke
3

Ein XML-Dialekt wie GML ist definitiv nicht für den Betrieb großer Datenmengen optimiert, sondern kann als Austauschformat zwischen Software oder zwischen Plattformen verwendet werden.

Ich glaube nicht, dass es ein Problem mit der Lizenzierung gibt (siehe Ragi Yaser Burhums Post über die viralen Eigenschaften von Spatialite), und es ist ziemlich einfach, vorhandene Parser bei Bedarf anzupassen.

Stéphane Henriod
quelle
1
Ich denke, es wurde nicht nur aus dem Grund erwähnt, den Sie ansprechen, sondern auch, weil es nicht für große Datenmengen optimiert ist. XML ist aufgebläht. Die hier genannten Formate sind Binärformate, in denen GML Punkte als Zeichenfolgen speichert. Die Größe kann über eine Größenordnung unterschiedlich sein.
canisrufus
3
Canisrufus ist richtig. Es gibt verschiedene Probleme mit GML. Das Infoset kann mit XPath navigiert werden, aber jeder, der versucht hat, eine räumliche Indizierung über XML zu implementieren, wird Ihnen sagen, wie irrational dies ist und wie schlecht es traditionellen relationalen Datenbanken zugeordnet ist. Ohne auf viele Details einzugehen, ist das Format aufgebläht, wenn etwas so Grundlegendes wie Indizieren und Abfragen nicht trivial wird und Sie den gesamten Datensatz im Speicher haben müssen, um irgendetwas damit zu tun, dann ist dies keine gute Option.
Ragi Yaser Burhum
4
XML ist aufgebläht, wenn es als einfacher Text gespeichert wird. Es gibt freie (sowohl kostenlose als auch frei zu modifizierende und weiterzuverteilende) Binär-XML-Bibliotheken, die als Ersatz für XML-Reader dienen können und den Menschen die Freiheit geben, sowohl die menschliche Lesbarkeit von XML als auch die Leistung und Speichereffizienz von Binär zu nutzen . Der einzige Grund, warum ich daran denken kann, dass es nie in großem Umfang aufgegriffen wird, ist, wie johandvw oben bemerkt : Es interessiert niemanden, .shp war "gut genug" wie es ist.
Matt Wilkie
1

Um dies aus einer anderen Perspektive zu betrachten, bin ich mir nicht sicher, ob die Verwendung von "Prozentsatz der Bürger ab 25 Jahren mit einem Bachelor-Abschluss oder höher" ein perfekter Fachname ist. Während das Mischen von Leerzeichen und Apostrophen behandelt werden kann, ist es wahrscheinlicher, dass beim Schreiben von Code oder Abfragen Fehler auftreten.

Meiner Meinung nach sollte sich die Zukunft der Geodatenverteilung auf das Web und die Webdienste konzentrieren, und die WFS- Spezifikation (die GML verwendet) ist offen und etabliert. GeoJSON ist kleiner und es kann einfacher sein, mit JavaScript zu arbeiten. Bei Kompression sind die Größen jedoch vergleichbar.

Ich möchte auch eine Stimme für die Personal Geodatabases von ESRI abgeben . Möglicherweise handelt es sich um ein häufig fehlerhaftes Microsoft-Format, es unterstützt jedoch ODBC, SQL-Abfragen und -Sichten und ermöglicht es Nicht-Entwicklern, einfache Dateneingabeformulare zu erstellen und mindestens einige Datenintegritätsprüfungen (Datentypen, Längen, eindeutige Werte) durchzuführen. .

geographika
quelle
Das ist ein gültiger Punkt. Das Gute an ihnen ist, dass man bei Kenntnis der englischen Sprache herausfinden kann, was die Felder bedeuten.
Canisrufus
Dies ist jedoch die eigentliche Rolle der Metadaten der Datensätze. Das Shapefile kann eine XML-Datei mit demselben Namen verwenden, um diese zu speichern.
Geographika