MSSqlServer und Co.
Die Untersützung für MySql und MS SqlServer 2008 nahmen wir zum Anlass die Tools für den Datenimport zu verallgemeinern.
Die Beschreibungen für den Import für PostgreSQL/PostGis und Oracle SDO sind nach wie vor gültig.
Überblick
GeoTools wurde dazu um den Befehl ConvertTo erweitert. Es muss dabei Quelle und Ziel definiert werden (geoTools.exe ist ein Kommandzeilentool der IDU, unsere Kunden finden dieses Werkzeug im Downloadbereich).
Die ersten Parameter beschreiben die Optionen für das Zielformat, danach folgen alle Parameter für die Beschreibung der Datenquelle.
Die Parameter sind jeweils abhängig vom Quell und Zielformat. Im folgenden ein erstes Beispiel (Ausgabe ist SQL Server 2008, Datenquelle ist Oracle SDO):
|
geotools convertto -target:Sql08 -... -input:SDO -iserver:ltv -i... |
Zielformat (SQL08,SDO....) x Quellformat (SDO,SHAPE...) y y |
Bei den Datenbankzielformaten wird i.d.R. eine SQL Datei erstellt, welche mit dem jeweiligen Datenbanktools importiert werden muss.
Beispiel(e)
Als erstes einige Beispiele, die Parameterbeschreibungen für Quell- und Zielformate finden sie am Ende dieser Seite (Siehe Parameterbeschreibung).
Wichtige Hinweise: Alle Angaben verstehen sich im Zusammenhang mit der Anweisung "geoTools ConverTo" in einem Kommandofenster (Start->Ausführen->{CMD} <ENTER>). Enthalten Parameterwerte Leerzeichen, müssen diese Werte in Anführungzeichen übergeben werden. Die Zeilenumbrüche in den Beispielen dienen nur der Übersicht und müssem beim Aufrufen weggelassen werden (letztgenannte Regeln sind generell gültig bei Verwendung der Kommandzeile).
ESRI Shapefile in Micrososft SQL Server 2008 importieren.
Erstellen der Importdatei:
Kommandozeile:
geotools ConvertTo -target:Sql08 -tableName:geomTable -targetFile:c:\temp\sqlsrv.sql -colName:geom -typ:create -srid:31469 -input:SHAPE -iFileName:c:\test.shp
Erstellt in diesem Fall als Ergebnis die Datei c:\temp\sqlsrv.sql, diese muss im Anschluss in die Datenbank importiert werden.
Auszug aus der erstellten SQL Datei: DROP TABLE geomTable
Go
CREATE TABLE geomTable (
objectid double precision,
schluessel varchar(30),
vonbis varchar(16),
str_wdm varchar(5),
geom geometry,
UID bigint identity primary key
)
Go
INSERT INTO irt_strskn (objectid,schluessel,vonbis,str_wdm,geom) VALUES (
1,'14509010','0360001003600008','U',
geometry::STGeomFromWKB(0x010...,31469)
) .... ....
CREATE SPATIAL INDEX g_idx_geomTable
ON geomTable (geom)
WITH (
BOUNDING_BOX = ( xmin=5400615.28600, ymin=5649395.97900, xmax=5427367.73900, ymax=5672157.23700),
GRIDS = (LOW, LOW, MEDIUM, HIGH),
CELLS_PER_OBJECT = 64,
PAD_INDEX = ON )
GO
Import der Datei in SQL Server
Der Import kann entweder über das Managementstudio erfolgen, oder via Kommandozeile. Das Kommandozeilentool für Sql Server 2008 nennt sich sqlCmd.exe und ist im Installationsordner des Sql Servers im Ordner tools\binn zu finden. Weitere Informationen erhalten Sie durch die Eingabe von SqlCmd -?.
cd /d "C:\Programme\Microsoft SQL Server\100\Tools\Binn"
sqlCmd -H localhost -U sa -P geheim -d geo -i c:\temp\sqlsrv.sql
Weist den Sql Server an localhost an, in der Datenbank geo mit der Benutzerkennung sa/geheim die Datei sqlSrv.sql auszuführen.
Evtl. sollten danach die Objekte validiert werden. Bei Abfragen durch den MapServer Iwan kann es sonst zu Fehlern kommen, wenn ungültige Objekte vorhanden sind.
SELECT COUNT(*) FROM geomTable where geom.STIsValid() <> 1 GO UPDATE geomTable SET geom = geom.MakeValid() GO
Für weitere Abfragen und Dokumentationen zu den Spatial Erweiterungen des SQL Server 2008 sei auf die Dokumentation der (Online)hilfe verwiesen.
Dokumentation zu dem Geometry Datentyp für SQL Server 2008, OGC Methoden für Geometrieinstanzen: http://msdn2.microsoft.com/en-us/library/bb933960(SQL.100).aspx
Parameterbeschreibung der Option ConvertTo
Quellformate
Folgende Quellformate sind verfügbar:
Esri SDE Vektordatenquelle
Formatname: SDE
- iserver - Name des Server server:5151/tcp
- iinstance - Name der Instanz
- idb- Name der Datenbank
- itable- Name des SDE Layers
- iuser- Benutzername
- ipwd - Kennwort
Esri Shapefile
Formatname: SHAPE
PostgreSQL/PostGis
Formatname: PG
- iconnstr - Verbindungszeichenfolge (in der Form "host=localhost dbname=cardo port=5432 user=cardo password=xxx")
- itable - abfragbares Objekt, bei Abfragen den Alias nicht vergessen: (SELECT * FROM FOO) a
- icol - Name der Geometriespalte
- isrid - SRID der Datenquelle (die EPSG der Daten)
Oracle Spatial
Formatname: SDO
- iserver - Name des Servers ( TNS-Name der Instanz)
- iuser - Datenbank Benutzername
- ipwd - Datenbank Kennwort
- isource - abfragbares Objekt, bei Abfragen den Alias nicht vergessen: (SELECT * FROM FOO) a
- icol - Name der Geometriespalte
- isrid* - optional, SRID der Datenquelle
Web Feature Service
Formatname: WFS
- wfsUrl - Url des Dienstes
- wfsLayers - {Layernames}
- wfsversion - {1.0.0}
- wfsForceBboxasfilter - bool
- wfsForcePostOperation - bool
- httpsrvlogin - {user, pwd}
- httpProxyLogin - {user, pwd}
- httpProxyServer - {name, port}
Ausgabeformate
Folgende Ausgabeformate sind verfügbar:
PostgreSQL/PostGis
Formatname: PGSql
- tablename - Name der Ausgabetabelle, evtl. mit Schema
- targetfile - Name der zu erstellenden SQL Datei
- colname - Name der Geometriespalte
- typ - APPEND,CREATE,TRUNCATE
- srid - SRID (EPSG Code)
MySql Server ab 5.x, Spatial
Formatname: MYSQL
- tablename - Name der Ausgabetabelle
- targetfile - Name der zu erstellenden SQL Datei
- colname - Name der Geometriespalte
- typ - APPEND,CREATE,REPLACE
- srid - SRID (EPSG Code)
Esri Shapefile
Formatname: SHAPE
- targetfile - Name der Zieldatei ohne Extension
Microsoft SQLServer 2008 Spatial
Formatname: Sql08
- tablename - Name der Ausgabetabelle
- targetfile - Name der zu erstellenden SQL Datei
- colname - Name der Geometriespalte
- typ - APPEND,CREATE,REPLACE
- srid - SRID (EPSG Code)
|