Wie kann ich ein Shapefile aus einer Postgis-Abfrage erhalten?

44

Meine Daten befinden sich in einer PostGIS-Datenbank. Ich möchte aus einer Abfrage ein Shapefile generieren. Wie kann ich das machen?

rudivonstaden
quelle

Antworten:

86

Die empfohlene Vorgehensweise ist die Verwendung des Dienstprogramms pgsql2shp , das mit PostGIS installiert werden sollte. Beachten Sie, dass Sie die Geometriespalte in die Abfrage aufnehmen müssen.

$ pgsql2shp -f <path to output shapefile> -h <hostname> -u <username> -P <password> databasename "<query>"

Beispiel (erstellt qds_cnt.shpim aktuellen Verzeichnis):

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"

Initializing... 
Done (postgis major version: 2).
Output shape: Polygon
Dumping: XXXXXXXXXXXXXXXXXXXX [1947 rows].

Wenn Sie eine ganze Tabelle als Shapefile speichern möchten, verwenden Sie einfach den Tabellennamen als Abfrage.

Sie können auch das Dienstprogramm ogr2ogr verwenden , es weist jedoch mehr Abhängigkeiten auf, sodass dies nicht die erste Option sein sollte. Wenn Sie festgelegt sind, lautet der entsprechende Befehl:

$ ogr2ogr -f "ESRI Shapefile" qds_cnt.shp PG:"host=localhost user=postgres dbname=gisdb password=password" -sql "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"

Siehe auch

rudivonstaden
quelle
Ist es möglich, pgsql2shpeine Ansicht in ein Shapefile zu exportieren?
Ricardo Barros Lourenço
8

Ich habe nicht genug Reputationspunkte, um die Antwort von rudivonstaden zu kommentieren, aber ich würde hinzufügen, dass es für pgsql2shp wichtig ist, SQL-Befehle in Großbuchstaben zu schreiben.

Zum Beispiel funktioniert das nicht:

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "Select sp_count, geom from grid50_rsa where province = 'Gauteng'"

in der Erwägung, dass dies funktionieren wird:

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"
Pandorabob
quelle
7

Je nachdem, welche Daten Sie exportieren möchten, können Sie auch qgis oder ein ähnliches Produkt verwenden: Dort öffnen Sie eine Verbindung zu postgis und wählen die Daten aus, an denen Sie interessiert sind. dann speichern Sie als Shapefile ...

Wenn Sie automatisch und / oder große Teile von Daten exportieren möchten, gab rudivonstaden entsprechende Lösungen!

Ein Name
quelle