Shape-Daten in der Datenbank zusammenfügen

Aus kvwmap
Wechseln zu: Navigation, Suche

--Heinz Schmidt 16:13, 18. Okt 2006 (CEST)
Es Bestand das Problem die Daten von mehreren Shape-Files mit gleicher Struktur (das ist Bedingung) zusammenzufügen. Man könnte auch die Shape-Files vereinigen und dann einen Shape-File in die Datenbank einlesen. Einfacher ist es PostGIS dieses machen zu lassen :-) Man erzeugt mit dem Kommando shp2pgsql eine SQL-Datei für die entsprechende Tabelle jeweils für jeden Shape-File.

Beispiel Erzeugung der SQL-Dateien mit den Daten der Shapefiles die vereinigt werden sollen:

/usr/local/pgsql/bin/shp2pgsql -c /datenpfad_zum_shapefile/shape1.shp -s 2398 tabellenname  > daten_aus_shape1.sql 
/usr/local/pgsql/bin/shp2pgsql -c /datenpfad_zum_shapefile/shape2.shp -s 2398 tabellenname  > daten_aus_shape2.sql 
...

Wichtig ist, dass man als user postgres in einem Verzeichnis steht, in dem man Schreibrechte hat. Die Angabe des EPSG-Codes sollte auch nicht fehlen, hier 2398. Die Pfade sind entsprechend anzupassen.

Dann in pgAdmin III die erste SQL-Datei öffnen und die Kommandos abschicken. Anschließend die weiteren Dateien in pgAdmin III öffnen und nur die darin enthaltenen INSERT-Statements abschicken, also das CREATE TABLE u.a. entfernen, weil die Tabelle ja schon besteht und nur neue Datensätze hinzugefügt werden sollen. Geht alles in Windeseile! Die Datenstruktur der Shapfiles muss aber gleich sein!

--Markus Hentschel 07:26, 19. Okt 2006 (CEST) Das geht noch einfacher! shp2pgsql bietet verschiedene Optionen für das Einlesen an. Sie verwenden hier "-c", d.h. "Lege eine neue Tabelle an und fülle sie". Es gibt z.B. auch "-a", d.h. "Schreibe das Shape in eine bestehende Tabelle, wenn das Schema exakt gleich ist". Geben Sie als Befehl einfach mal "shp2pgsql" ein, dann bekommen Sie alle möglichen Optionen angezeigt.