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 -s
Flag 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.