Shape-Daten in der Datenbank zusammenfügen: Unterschied zwischen den Versionen

Aus kvwmap
Wechseln zu: Navigation, Suche
 
Zeile 3: Zeile 3:
 
Man könnte auch die Shape-Files vereinigen und dann einen Shape-File in die Datenbank einlesen.  
 
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 :-)
 
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.
+
Man erzeugt mit dem Kommando ''shp2pgsql'' mit dem Parameter -c eine SQL-Datei für die Erzeugung der entsprechende DB-Tabelle und die Daten des ersten Shape-Files.
  
Beispiel Erzeugung der SQL-Dateien mit den Daten der Shapefiles die vereinigt werden sollen:
+
Beispiel Erzeugung der ersten SQL-Datei mit den Daten des Shapefiles:
  
 
  /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/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  
+
 
 +
Für die folgedateien benutzt man den Parameter -a für shp2pgsql.<br>
 +
Beispiel für die Erzeugung der SQL-Dateien der folgenden Shape-Files, die zusammengefügt werden sollen.
 +
 
 +
  /usr/local/pgsql/bin/shp2pgsql -a /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.
 
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!
+
Dann in pgAdmin III die erste SQL-Datei öffnen und die Kommandos abschicken. Anschließend die weiteren Dateien in pgAdmin III öffnen und abschicken. Geht alles in Windeseile! Die Datenstruktur der Shapfiles muss aber gleich sein!
 
+
:--[[Benutzer:Markus Hentschel|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.
+

Aktuelle Version vom 23. Oktober 2006, 09:17 Uhr

--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 mit dem Parameter -c eine SQL-Datei für die Erzeugung der entsprechende DB-Tabelle und die Daten des ersten Shape-Files.

Beispiel Erzeugung der ersten SQL-Datei mit den Daten des Shapefiles:

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

Für die folgedateien benutzt man den Parameter -a für shp2pgsql.
Beispiel für die Erzeugung der SQL-Dateien der folgenden Shape-Files, die zusammengefügt werden sollen.

/usr/local/pgsql/bin/shp2pgsql -a /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 abschicken. Geht alles in Windeseile! Die Datenstruktur der Shapfiles muss aber gleich sein!