Meine Daten befinden sich in einer PostGIS-Datenbank. Ich möchte aus einer Abfrage ein Shapefile generieren. Wie kann ich das machen?
Meine Daten befinden sich in einer PostGIS-Datenbank. Ich möchte aus einer Abfrage ein Shapefile generieren. Wie kann ich das machen?
Antworten:
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.shp
im 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
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'"
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!
pgsql2shp
eine Ansicht in ein Shapefile zu exportieren?