Hinzufügen von Shapefiles zur PostGIS-Datenbank

30

Ich konnte eine Postgresql-Datenbank erstellen und dann habe ich ausgeführt,

createlang plpgsql geospecies
psql -d geospecies -f postgis.sql
psql -d geospecies -f spatial_ref_sys.sql

Kann ich die Shapefiles jetzt direkt importieren? Wäre dies der richtige Befehl,

ogr2ogr -f PostgreSQL PG:"host=server_ip user=username dbname=dbname password=password" yourshapefile.shp;

Ich bin mir nicht sicher, wie ich die Datenbank strukturieren soll. Benötigt sie keine Tabelle? Ich werde irgendwann eine Menge Shapefiles hinzufügen müssen und gibt es dafür einen Befehl?

Sam007
quelle

Antworten:

49

Versuchen Sie es shp2pgsql. Die grundlegende Syntax ist wie folgt:

shp2pgsql -s SRID SHAPEFILE.shp SCHEMA.TABLE | psql -h HOST -d DATABASE -U USER

Ich finde dieses Cheatsheet von http://www.bostongis.com immer nützlich. Wenn Sie ein wenig nach unten scrollen, finden Sie einfache Beispiele zum Laden von Daten.

Ich hoffe es hilft.

Stophface
quelle
Ich habe aber keinen Tisch. Welche Tabelle und welches Schema soll ich erstellen?
Sam007,
1
Wenn Sie sich das Spickzettel ansehen , (-d|-a|-c|-p)sind die Flags für Tabellen. Wenn Sie nichts angegeben haben, wird -cstandardmäßig ausgewählt (erstellt eine neue Tabelle und füllt sie auf). Was SRID, weiß ich nicht - das auf der Projektion der Daten abhängt. Wenn Sie die .projDatei haben, die mit den Shapefiles geliefert wurde , können Sie die Projektion unter prj2epsg.org/search überprüfen . Hoffe, es hilft ..
danke für die antwort @Haziq. Ich bin nur verwirrt, woher das -ckommt? Ich habe es versucht shp2pgsql -s 4326 /var/www/geo/shapefile/PimaPine.shp -c public.Pima | psql -h localhost -d geospecies -U smaranh, erhalte
Sam007
Ich denke das -csollte nach -s 4326und vor gehen /var/www/geo/shapefile/PimaPine.shp.. Die Syntax ist shp2pgsql [OPTIONS] shapefile [schema.]table. Wirkt sich das Ändern der Position von -cStandbildern auf Fehler aus?
Nö immer noch der selbe Fehler. Es könnte auch mit dem ROLLBACK-Fehler zu tun haben
Sam007
4

Ahh! Kann noch nicht kommentieren!

Was Haziq gepostet hat, wäre die richtige Befehlszeilenmethode, um es zu tun, Sam.

TABLE ist genau das, was Sie benennen möchten. Wenn Sie TABLE aus einer Abfrage aufrufen, wird die Tabelle beim Import generiert.

Wenn Sie so faul sind wie ich, verwende ich einfach das fantastische SPIT (Shapefile to PostGIS Import Tool), das als QGIS-Plugin verfügbar ist, um jetzt alle meine Shapefiles zu importieren. Angenommen, Sie verwenden QuantumGIS, wie Sie gesagt haben, dass Sie OpenGeo früher verwendet haben.

RomaH
quelle
1
Das Problem ist, ich habe keine GUI. Ich arbeite remote an Ubuntu Server.
Sam007,
SPIT funktioniert aus der Ferne. Ich mache die ganze Zeit von der Arbeit bis zu meiner Heimat-DB. Sie müssen nur die Verbindungsinformationen ausfüllen, wie Sie es getan haben, um sich bei psql anzumelden.
RomaH
Wie
führe
Nun, ich nahm an, dass Sie lokale SHP-Dateien nehmen und sie auf Ihrem Remote-Server ablegen. Sie würden QGIS starten und das SPIT-Plugin auf Ihrem lokalen Computer verwenden, Ihren Remote-Server verbinden und hochladen.
RomaH
Alle meine SHP-Dateien befinden sich auf dem Server
Sam007