Letzte Änderung:  
13.05.2013 14:32:03
 
ein Counter...
Anmelden
  Tipps und Tricks - How To - Import in PG/SDO DB's  
 
Einführung
Bild  Das Produkt
Bild Entscheidungshilfen
Bild Systemübersicht
Screenshots
Bild Administration
Bild Anwenderoberfläche
cardo-Live
Bild  Starten/Anmelden
Anwender
Bild cardo Anwender
Bild Anwenderseiten
cardo - Module
Bild Module der Grundversion
Bild Erweiterungsmodule
Bild Fachschalen
Interner Bereich
Bild cardo customer service
Bild cardo Forum
Bild Ihr cardo
Bild Übersicht und pers. Daten
Kontakt/Impressum
Bild Kontakt
Bild Impressum
Bild Haftungsausschluss
Tipps und Tricks
Bild cardo Module
Bild How To
PixelBild Kartenausgestaltung
PixelBild Kartensymbole
PixelBild Styles der Startseite
PixelBild MSSqlServer und Co.
PixelBild PDF Vorlagen
PixelBild Flächengröße per Trigger
PixelBild ODBC Pkt + Projektion
PixelBild HQPrint.net anpassen
PixelBild ArcGIS / KOM:MIS
PixelBild ESRI Annotations
PixelBild Globale Einstellungen
PixelBild Rasterdaten
PixelBild ALK Import
PixelBild Garmin & IDUMap.net
PixelBild Daten aus Polygis
PixelBild PostgreSQL Backup
PixelBild Import in PG/SDO DB's
PixelBild Nutzen von WMS/WFS
PixelBild Postgres installieren
PixelBild Hyperlink-Umsetzung
PixelBild cardo per Link starten
PixelBild Installation von Patches
PixelBild Vista und cardo 3
PixelBild FOP - Schriftarten
PixelBild cardo::COM
PixelBild PDF Legenden
PixelBild Proxy für IDUMap.NET
PixelBild Login-XML
PixelBild cardo3 / IKX ConnString
PixelBild Tracing für Oracle
Bild cardo API
Bild Bekannte Probleme
 

Druckersymbol 

Geodatenimport für PostgreSQL und Oracle SDO

cardo unterstützt unter anderem PostgreSQL/PostGIS und Oracle Spatial/Locator basierte Geodatenquellen. Diese können zur einfachen Anzeige im Kartenteil im Zusammenhang mit dem Geodateneditor und im Kleinkataster verwendet werden.

I.d.R. geht der Nutzung ein Import aus einer Shape-Datei voraus. Die zu den jeweiligen Datenbanken mitgelieferten Importwerkzeuge (shp2sdo.exe bzw. shp2pgsql.exe) können durch die Funktionen der Anwendung geoTools (Bestandteil der cardo Installation und generell frei verfügbar) ersetzt werden.

Im Folgenden wird der Import in PostgreSQL und ORACLE SDO beschrieben. Es wird vorausgesetzt, dass "geoTools.exe" auf dem Rechner vorhanden ist und die jeweiligen Tools der Datenbankanbieter erreichbar sind.

Import von Shapedateien mit dem Werkzeug geoTools in PostgreSQL/PostGIS

Für den Import in PostgreSQL steht die Option Shape2OGCInsert zur Verfügung. Dabei wird eine SQL Datei erstellt, welche direkt importiert werden kann. Die Argumente im Einzelnen:

Shape2OGCInsert infile.shp outFile TableName GeoColumnName {CREATE|APPEND} {WKB|WKT} {SRID} {SerialPkColumnName}

  • infile - der (vollständige) Name der Datenquelle,
  • outFile - der vollständige Name der Ergebnisdatei; diese wird ohne Rückfrage überschrieben,
  • TableName - der Name der Zieltabelle, ein Schema kann durch Schema.Tabelle angegeben werden,
  • GeoColumnName - der Name der zu erstellenden Geometriespalte; dieses darf nicht mit einem Spaltennamen aus der Shapedatei kollidieren,
  • {CREATE|APPEND} - bei CREATE wird ein CREATE TABLE Statement erzeugt, bei Append muss die Tabelle bereits vorhanden sein,
  • {WKB|WKT} - die Geometrierepräsentation in Text- bzw. Binärschreibweise ausgeben,
  • {SRID} - die SRID der Geodaten, gemäß der PostGIS Spezifikation.
  • {SerialPkColumnName} - Name einer anzulegenden Autowertspalte

Nach der Erstellung der SQL Datei muss diese mit psql zum Server transportiert werden.

Features

Die generierte SQL Datei enthält alle Angaben (bei der Option Create) ...

  • zur Erstellung der Tabelle,
  • dem Befüllen der Tabelle GEOMETRY_COLUMNS,
  • dem Erstellen des GIS - Indizes,
  • dem Erstellen eines Indizes auf die OID Spalte,
  • einem abschließenden Vacuum dieser Tabelle,
  • eine Liste der invaliden Objekte wird zur Information ausgegeben

Demzufolge muss der ausführende Datenbankbenutzer Rechte für die genannte Objekte haben, vor allem ein Schreibrecht auf die Tabelle GEOMETRY_COLUMNS muss gewährleistet sein.

Beim Import werden die Geodaten einer Prüfung unterzogen, um möglichst wenige invalide Objekte in der Datenbank zu hinterlassen. Typische Probleme sind falsche Multi/Inselpolygone und doppelte Stützpunkte.

Ebenso werden die Datentypen so gewählt, dass keine IWAN iInkompatiblen Typen enthalten sind (z.B. keine Numeric's)

Beispiel

Hier die zwei Schritte zur Konvertierung einer Shapedatei und dem anschließenden Import in die Datenbank. Die Optionen zu psql, dem Frontend der Postgres, sind der Hilfe zu entnehmen. Wenn Sie ein Password übergeben müssen, z.B. bei Import im Batch-Betrieb, kann vorher die Umgebungsvariable PGPASSWORD gesetzt werden.

set PGPASSWORD=sagIchNicht
geoTools Shape2OGCInsert C:\rahmen.shp c:\test.sql g_tab1 geom CREATE
psql -h ServerName -U BenutzerName -d DatenBankName -f c:\test.sql

Die durch die Konvertierung entstandene Ausgabedatei:

DROP TABLE g_tab1;
BEGIN;
CREATE
TABLE g_tab1 (
ID int8,
geom geometry
)WITH
OIDS;
COPY
g_tab1 (ID,geom) FROM stdin;
0 SRID=-1;POLYGON((11215.26793132 9370.97681856,11215.26793132 10154.14505773,12006.37368643 10154.14505773,12006.37368643 9370.97681856,11215.26793132 9370.97681856))

\.
SELECT
'Erstelle - GEO Index ...';
CREATE INDEX IDX_G_g_tab1 ON g_tab1 USING GIST (geom GIST_GEOMETRY_OPS);
SELECT
'Ungueltige Elemente: '|| (SELECT COUNT(*) FROM g_tab1 WHERE NOT IsValid(geom));
SELECT
'Erstelle - OID Index ...';
CREATE
INDEX IDX_OID_g_tab1 ON g_tab1 (OID
);
DELETE
FROM geometry_columns WHERE f_table_schema = 'public' AND f_table_name = 'g_tab1' AND f_geometry_column = 'geom';
INSERT
INTO geometry_columns (f_table_catalog,f_table_schema,f_table_name,f_geometry_column,coord_dimension,srid,
"type")

VALUES ('','public','g_tab1','geom',2,'-1','GEOMETRY');
END
;
SELECT
'VACUUM ...';
VACUUM ANALYZE g_tab1;

Import von Shapedateien mit dem Werkzeug geoTools in Oracle SDO

Der Import in ORACLE (Datenbank ab Version 9) erfolgt ebenfalls in zwei Schritten, dem Erstellen der Daten für den sqlldr (Bestandteil der Oracle Client Installation) und dem Import in die Datenbank mit dem genannten Werkzeug. Die geoTools Option für die Erstellung der Dateien lautet Shape2ORALdr.

Die Argumente im Einzelnen:

Shape2ORALdr infile.shp outFile TableName GeoColumnName APPEND|INSERT|REPLACE|TRUNCATE SRID {RecnoColumnName} {RecnoStartNumber}

  • infile - der (vollständige) Name der Datenquelle,
  • outFile - der vollständige Name der Ergebnisdateien (es werden CTL,SQL und DAT genriert); diese werden ohne Rückfrage überschrieben, evtl. angegebene Extensionen werden ignoriert,
  • TableName - der Name der Zieltabelle, ein Schema kann durch Schema.Tabelle angegeben werden,
  • GeoColumnName - der Name der zu erstellenden Geometriespalte, dieses darf nicht mit einem Spaltennamen aus der Shapedatei kollidieren,
  • APPEND (anfügen an bestehende Tabelle)|INSERT (anlegen einer neuen Tabelle und befüllen)|REPLACE (leeren einer vorhandenen Tabelle und befüllen)|TRUNCATE (löschen einer vorhandenen Tabelle, neu anlegen und befüllen)- bei INSERT und TRUNCATE wird ein CREATE TABLE Statement erzeugt, im Control File für den SQL-Loader wird dieser Modus mit ausgegeben, weitere Informationen sind der Oracle Dokumentation zu entnehmen,
  • SRID - SRID der Geodaten, gemäß der Oracle Spezifikation, GK 4 ist z.B. 82032, alternativ kann auch -1 für unbekannt definiert werden,
  • RecnoColumnName - der Name einer Spalte für eine eindeutige ID, optional
  • RecnoStartNumber - entweder ein numerischer Start-Wert für die eindeutige ID oder ein Dateiname, in welcher die ID abgelegt werden.

Nach der Erstellung müssen die Dateien mit sqlLdr zum Server transportiert werden.

Features
  • Wenn die Tabelle erstellt wird, also bei den Optionen INSERT oder TRUNCATE, wird ein Statement zur Befüllung des USER_SDO_GEOM_METADATA Views generiert. Der unbedingt benötigte Spatial-Index muss manuell erstellt werden.
  • Die Geometrien werden ebenso wie beim Postgres Import validiert und evtl. korrigiert.
  • Der Import unter Angabe einer SRID ist möglich.
Beispiel

Import der Shapedatei 'rahmen'. Die benötigten Dateien werden in dem vorhandenen Ordner c:\o\ erstellt.

set NLS_LANG=American_America.WE8ISO8859P1
geoTools Shape2ORALdr C:\rahmen c:\o\test g_tab1 geom TRUNCATE -1
sqlplus
scott/tiger@instance @c:\o\test.sql
EXIT;
sqlldr control=c:\o\test.ctl
userid=scott/tiger@instance silent=feedback log=c:\o\test.log bad=c:\o\test.bad

Der Aufruf von sqlplus ist nur für den Modus TRUNCATE relevant. Werden Daten angefügt, sollte vorher ein evtl. vorhandener Index gelöscht werden.

Nach erfolgtem Import muss unbedingt ein Spatial Index erstellt werden. Dazu kann folgende SQL Anweisung genutzet werden:;


CREATE INDEX IDX_G_TAB1 ON G_TAB1(GEOM) indextype is mdsys.spatial_index;

Die erstellte SQL Datei:

CREATE TABLE g_tab1 (
ID NUMBER,
geom MDSYS.SDO_GEOMETRY
);

DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'G_TAB1' AND COLUMN_NAME = 'GEOM';
INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO,SRID)
VALUES ('G_TAB1', 'GEOM',
MDSYS.SDO_DIM_ARRAY (MDSYS.SDO_DIM_ELEMENT('X', 11215.27, 12006.37, 0.000000050),
MDSYS.SDO_DIM_ELEMENT('Y', 9370.98, 10154.15, 0.000000050) ),NULL);
COMMIT;
quit;

Druckersymbol Druckversion dieser Seite 

Zuletzt geändert am 03.08.2010 (th)
Gelesen: 6746
Seitenalias: "Geodatenimport"
   IDU Homepage: [http://www.idu.de] IWAN Homepage: [http://www.webmapserver.de] GDDB Homepage: [http://www.gddb.de]