Verwenden Sie shp2pgsql anstelle von ogr2ogr, um Shapefile in PostGIS zu importieren? [geschlossen]

8

Ich kann hier sehr gut etwas falsch machen, aber:

Wenn ich ein Shapefile mit shp2pgsql in eine PostGIS-Datenbank importiere , muss ich zuerst die SRID / EPSG dieses Shapefiles herausfinden. Ich denke, dies ist mindestens ein zweistufiger Prozess. Zuerst frage ich das Shapefile folgendermaßen ab:

>ogrinfo -al -so someshapefile.shp

Dies gibt die bekannten Text (wkt) -Projektionsinformationen zurück, ist aber etwas ausführlich und etwas undurchsichtig [für mich]. Etwas wie:

GEOGCS["NAD83",
DATUM["North_American_Datum_1983",
    SPHEROID["GRS 1980",6378137,298.257222101,
        AUTHORITY["EPSG","7019"]],
    AUTHORITY["EPSG","6269"]],
PRIMEM["Greenwich",0,
    AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
    AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4269"]]

Normalerweise führe ich die wkt-Informationen dann über ein Konvertierungstool wie Prj2EPSG aus , um die EPSG / SRID zu finden.

Zu diesem Zeitpunkt kann ich das Shapefile importieren mit:

>shp2pgsql -I -s 4269 someshapefile.shp <schema>.<table> | psql -U <user> -d <dbname> -h <hostaddress> -p 5432

Hinweis: Ich gebe die SRID mit dem -sFlag an.

Wenn ich shp2pgsql ohne Angabe der SRID ausführe, ist keine Projektion festgelegt und ich denke, die Geom-Spalte muss manuell aktualisiert werden, um eine Projektion einzuschließen.

Alternativ kann ich die Suche überspringen und einfach ogr2ogr verwenden :

>ogr2ogr -f "PostgreSQL" "PG:host=<hostaddress> user=<user> dbname=<dbname> password=<password>" "C:/shapefile.shp" -nln <schema>.<table>

Dies setzt die Projektion anscheinend in Ordnung und extrahiert sie vermutlich automatisch aus dem Quell-Shapefile / prj.

Frage

Was ist der Nachteil bei der Verwendung von ogr2ogr? Gibt es tatsächlich ein Flag, mit dem shp2pgsql automatisch die richtige Projektion extrahiert und setzt? Wenn nicht, warum nicht?


Nachtrag

Es gibt eine interessante, vielleicht leicht veraltete, vergleichende Analyse der Verwendung von ogr2ogr vs shp2pgsql, die auf naturalgis.pt verfügbar ist . Es zeigt für ihre speziellen Beispieldaten, dass ogr2ogr bei kleinen Datensätzen eine signifikant bessere Leistung erbringt , während shp2pgsql bei größeren Datensätzen eine etwas bessere Leistung erbringt .

Ich glaube nicht, dass dies eine endgültige Antwort liefert. Die Codebasen haben sich möglicherweise weiterentwickelt und die Leistung jedes Einzelnen verbessert. Sie haben nur einen sehr kleinen Satz von Beispieldaten getestet. Der repräsentative "große" Datensatz ist eigentlich nicht so groß. Außerdem werden hauptsächlich Leistungsprobleme erörtert, die sich sicherlich auf die Benutzerfreundlichkeit auswirken. Die ursprüngliche Frage ist jedoch eher an den Anforderungen an die Benutzereingabe im Zusammenhang mit der Benutzerfreundlichkeit interessiert.

jac
quelle
1
Ich glaube nicht, dass ich jemals ein Shapefile hatte, in dem ich an der SRS gezweifelt habe. Ich hatte sicherlich Shapefiles, die mich gezwungen haben, meinen Willen, auf so vielen anderen Ebenen zu leben, in Frage zu stellen, aber das Problem ist die bessere Umgebung, um ein veraltetes, auf 2 GB beschränktes Format zu analysieren, das alle Arten von sich selbst überschneidenden Geometrien zulässt Viele andere Schrecken gehören nicht dazu.
John Powell

Antworten:

4

Ohne mit den Entwicklern von shp2pgsql zu sprechen, ist meine Antwort meinungsbasiert, aber zumindest ist shp2pgsql ohne automatische Erkennung der Projektion viel einfacher. Der Hauptteil des Quellcodes besteht aus ca. 1800 Zeilen. Http://postgis.net/docs/doxygen/2.2/d8/da3/shp2pgsql-core_8c_source.html und er tut das Wesentliche: Konvertiert Geometrien und Attribute aus Shapefiles in PostGIS.

In GDAL-Quellen besteht der Code, der sich nur um die Interpretation der ESRI .prj-Dateien kümmert, aus 2700 Zeilen https://github.com/OSGeo/gdal/blob/master/gdal/ogr/ogr_srs_esri.cpp .

Vor-und Nachteile:

Aus Anwendersicht sind die Hauptvorteile von shp2pgsql:

Der Hauptnachteil von shp2pgsql ist, dass es nur Shapefiles unterstützt.

GDAL und ogr2ogr bieten die gleichen Funktionen für Shapefiles wie shp2pgsql, aber GDAL kann Dutzende verschiedener Vektorformate verarbeiten: https://gdal.org/ogr_formats.html und bietet viel mehr Optionen zum Auswählen und Verarbeiten von Daten während der Konvertierung. Allerdings mit GDAL

  • Der Benutzer muss GDAL installieren
  • Der Benutzer muss lernen, GDAL zu verwenden, insbesondere ogr2ogr und die vielen Optionen des PostGIS-Treibers
  • ogr2ogr ist ein Befehlszeilenprogramm ohne GUI
user30184
quelle
Sie haben einen gültigen Punkt - die Logik zum Parsen der PRJ-Datei ist kompliziert und enthält nicht adressierte Eckfälle. Meine Frage bezieht sich jedoch hauptsächlich auf die Benutzerfreundlichkeit der Tools.
Jac
ogr2ogr und gdal sind notwendige Übel, aber Ihr Punkt ist gut - sie sind nicht offensichtlich und haben eine Lernkurve. shp2pgsql macht das, was auf der Dose steht.
John Powell