Umsetzung von geometrischen Daten in Datenbanken in eine Shape-Struktur Version 1.1 Stand 27.09.2005 TOPO graphics Geoinformationssysteme GmbH Telefon Fax (02225) 94 88 00 (02225) 94 88 90 Neuer Markt 27 53340 Meckenheim Email [email protected] http: //www.topographics.de 1 Allgemeines MySQL2Shp ist ein Kommandozeilenprogramm, welches mit Parametern gestartet wird. Es wandelt geometrische Daten aus einer MySQL-Datenbank in eine Shape-Struktur um. Dabei werden sowohl die Geometrien als auch die Attribute übernommen. Vorraussetzung für die Nutzung des Programms ist eine geometriefähige Version der MySQL-Datenbank. 2 Aufrufparameter Das Programm kann auf zwei unterschiedliche Arten aufgerufen werden. Zum einen können die Parameter direkt in der Kommandozeile übergeben werden, zum anderen besteht die Möglichkeit der Nutzung einer Parameterdatei. Diese Varianten werden im Folgenden erläutert. 2.1 Start über direkten Aufruf in der Kommandozeile Die Parameter werden aufeinander folgend in der Kommandozeile angegeben. Parameter: ° –host:<rechnername> » Hostname des MySQL ° –port:<port> » Portnummer optionaler Parameter, falls nicht angegeben, wird Defaultwert (3306) verwendet ° –user:<username> » Username für Anmeldung an MYSQL-Datenbank ° –pwd:<passwort> » Passwort für Anmeldung an MYSQL-Datenbank ° –DB:<datenbankname> » Datenbank für den Zugriff ° –tab:<tabellenname> » Tabelle mit Geometrieobjekten ° –shp:<zielshapedatei> » Zielshape mit kompletter oder relativer Pfadangabe An den Dateiname wird jeweils Endung _a, _l , _p bzw. _t für die jeweiligen Geometrietypen angehängt. optional: ° –shp_a:<zielshapedatei> » Name des Zielshapes für Flächen mit kompletter oder relativer Pfadangabe ° –shp_l:<zielshapedatei> » Name des Zielshapes für Linien mit kompletter oder relativer Pfadangabe ° –shp_p:<zielshapedatei> » Name des Zielshapes für Punkte mit kompletter oder relativer Pfadangabe ° –shp_t:<zielshapedatei> » Name des Zielshapes für Texte mit kompletter oder relativer Pfadangabe Die optionalen Shapefile-Angaben überschreiben jeweils den vorher gesetzten globalen Wert für den Namen des jeweiligen Geometrietyps! ° –fields:<attributfelder> » optionaler Parameter Angabe der zu übernehmende Attribute (Spalten) der Datenbank. Ist dieser Parameter nicht angegeben, werden alle Attribute übernommen Bei der Verwendung mehrerer Tabellen und Datenbanken erfolgt die Angabe: Datenbank.Tabelle.Spalte Aufbau von <attributfelder>: Name des Attributes in MySQL#Name in DBF#Typ/Breite (Typ: T=Text,G=Ganzzahl,R=Reelle Zahl) z.B.: MYSQLATTR#DBFATTR#T30 Name in der DBF-Tabelle sowie Typ und Breite des Attributes sind optional! optional: ° –fields_a:<attributfelder> » Angabe der zu übernehmende Attribute (Spalten) für Flächen ° –fields_l:<attributfelder> » Angabe der zu übernehmende Attribute (Spalten) für Linien ° –fields_p:<attributfelder> » Angabe der zu übernehmende Attribute (Spalten) für Punkte ° –fields_t:<attributfelder> » Angabe der zu übernehmende Attribute (Spalten) für Texte Die optionalen Fields-Angaben überschreiben jeweils den vorher gesetzten globalen Wert für Fields des jeweiligen Geometrietyps! ° –join:<Verknüpfung> » optionaler Parameter bietet die Möglichkeit der Angabe von JoinVerknüpfungen innerhalb der Abfrage Bsp: -join:inner join tableB on tableA.spalte1=tableB.spalte2 ° –log:<protokolldatei> » optionaler Parameter Ist eine Datei angegeben, werden Informationen zur Datenumsetzung, Parameter, Hinweise, Warnungen und Fehler in diese Datei geschrieben, andernfalls erfolgt keine Dokumentation. ° –sql:<bedingung> » optionaler Parameter Mit diesem Parameter kann eine sachliche Selektion der zu übernehmenden Objekte erfolgen ° –area:<polygonangabe> » optionaler Parameter Mit diesem Parameter kann eine räumliche Selektion der zu übernehmenden Objekte erfolgen. Als Angabe sind hier zwei Arten zulässig, zum einen erfolgt sie durch Angabe eines Polygons im WKT-Format. Die zweite Möglichkeit ist die Angabe einer Shape-Datei, welche die Polygone für die Einschränkung des Gebietes enthält. ° –areaxy:<Rechtswertfeld>;<Hochwertfeld>» optionaler Parameter Werden hier Spalten für Rechts-und Hochwert angegeben, wird für die Ermittlung der im Area liegenden Objekte dieser Objektpunkt und nicht alle Objektpunkte verwendet. ° –d oder –d+ » optionaler Parameter Leere Shapes werden entfernt, d.h. wenn z.B. keine Punktobjekte enthalten sind, wird auch keine Punkt-Shapedatei angelegt. Ist dieser Parameter nicht angegeben, werden immer alle Dateien erzeugt. ° –d– » optionaler Parameter Leere Shapes werden nicht entfernt, d.h. wenn z.B. keine Punktobjekte enthalten sind, wird trotzdem eine Punkt-Shapedatei angelegt. Mit dieser Option kann bei mehreren Parameterdateien die Option –d bzw. –d+ rückgängig gemacht werden. ° –a oder –a+ » optionaler Parameter Daten werden an vorhandene Shapes angehängt. Ist dieser Parameter nicht vorhanden, werden die bestehenden Shapedateien gelöscht und die Struktur neu erzeugt. ° –a– » optionaler Parameter Bestehende Shapedateien werden vor der Umsetzung gelöscht gelöscht und neu erzeugt. Mit dieser Option kann bei mehreren Parameterdateien die Option –a bzw. –a+ rückgängig gemacht werden. ° –txt:<textfeld> » optionaler Parameter Hier kann eine Spalte für ein Textfeld angegeben werden. Ist ein Eintrag vorhanden wird eine zusätzliche Text-Shapedatei angelegt. Andernfalls werden nur Punkte Linien und Flächen erzeugt. ° –t2:<rotationsfeld>;<Linienlänge> » optionaler Parameter Ist dieser Parameter vorhanden, werden Texte als Linienobjekte erzeugt. Das Rotationsfeld wird für hierbei für die Linienerstellung von Punkten benötigt. Ist der Parameter nicht vorhanden, erfolgt eine Erzeugung von „Textpunkten“. Die Linienlänge ist optional. Wird hier ein Wert angegeben, werden die Linien für die Texte in der angegebenen Länge erzeugt. Bei Nichtangabe wird die Default-Länge 0.5 (Meter) verwendet. ° –geotyp:<geometrietypspalte> » optionaler Parameter Angabe eines Feldes zum Checken des Geometrietyps (1..Punkt, ..Linie,3..Fläche,4..Text) Ist dieses Feld nicht vorhanden erfolgt die Analyse des Geometrietyps über das Geometriefeld. Ein Objekt wird hierbei dem Typ „Text“ zugeordnet, wenn das Feld aus dem Parameter –txt keinen Leeren String enthält. ° –Winkel:Feldname;Richtung;Winkeladdition » optionaler Parameter Winkelkorrektor des Winkels, der im Feld <Feldname> enthalten ist: Richtung 0|1: Drehsinn nicht umkehren | umkehren Winkeladdition: angegebenen Winkel aufaddieren ° –fkz:<feldname>;Z<offset1>;N<offset2> » optionaler Parameter Flurstückstexte erzeugen: <Feldname>: DBF-Spalte mit Objektschlüsseln <Zoffset1>: Zähler-Offset in y-Richtung (vom Bruchstrich) <Zoffset2>: Nenner-Offset in y-Richtung (vom Bruchstrich) ° –zielmeridian:<Meridianstreifennummer>;<Spalte1>;<Spalte2>;… » optionaler Parameter Die Koordinaten der Objekte werden in den angegebenen Meridianstreifen transformiert: Werte: 2,3,4 oder 5 (DHDN Gauß-Krüger Meridianstreifen 2-5) Die Spalten geben die Spalten an, welche bei der Meridianstreifentransformation mit berechnet und umgesetzt werden sollen. Mehrere Spalten werden mit Semikolon getrennt. ° –zielepsg:<EPSG-Code> » optionaler Parameter Die Koordinaten der Objekte werden durch Angabe des EPSG-Codes in den angegebenen Meridianstreifen transformiert: Werte: 31465, 31466, 31467, 31468, 31469 (DHDN Gauß-Krüger Meridianstreifen 2-5) Beispiele eines Aufrufs: MySQL2SHP.exe -host:localhost -port:3306 -user:root -pwd: -DB:alk -tab:alkobjekte -shp:"E:\projekte\021.shp" -fields:rotation;txt;folie;objektid;fachbedeutung -log:"E:\projekte\021.log" -sql:(folie=21) -d -a -txt:txt -t2:rotation MySQL2SHP.exe -host:mapserver2 -port:3306 -user:root -pwd: -DB:muster_nrw -tab:alkobjekte -shp:"E:\ projekte\001_b.shp" -fields:rotation;txt;folie;objektid;fachbedeutung -log:"E:\ projekte \001.log" -sql:(folie=1) -d -txt:txt -a -area:"POLYGON((2518399.736 5686857.761,2518670.303 5686727.384,2518657.686 5686573.175,2518583.385 5686557.754,2518450.204 5686619.438,2518424.97 5686651.681,2518394.128 5686718.973,2518394.128 5686724.58,2518394.128 5686724.58,2518399.736 5686857.761))" 2.2 Start mit Hilfe einer Parameterdatei Für die Verwendung einer Parameterdatei muss in der Kommandozeile nur ein Parameter angegeben werden, welcher einen Verweis zur Parameterdatei liefert: - -param:<parameterdatei> .. Angabe des vollen Pfad- und Dateinamen nötig Beispiel eines Aufrufs: MySQL2SHP.exe -para:E:\ projekte\paramfile.txt In der Parameterdatei müssen dann die oben genannten Parameter zeilenweise aufgelistet sein. Beispiel einer Parameterdatei: -host:mapserver2 -port:3306 -user:root -pwd: -DB:muster_nrw -tab:alkobjekte -shp:"E:\projekt\001_b.shp" -fields:rotation;txt;folie;objektid;fachbedeutung -log:'E:\projekt\test\001.log' -sql:(folie=1) -d -txt:txt -a -area:POLYGON((2518399.736 5686857.761,2518670.303 5686727.384,2518657.686 5686573.175,2518583.385 5686557.754,2518450.204 5686619.438,2518424.97 5686651.681,2518394.128 5686718.973,2518394.128 5686724.58,2518394.128 5686724.58,2518399.736 5686857.761)) -areaxy:OK_RW;OK_HW Es besteht die Möglichkeit, mehrere Parameterdateien anzugeben. Hierbei wird derselbe Parameter mehrmals angegeben. Die Parameterdateien werden in der angegebenen Reihenfolge ausgelesen. Dabei werden bereits gelesene Einstellungsparameter durch neu angegebene ersetzt. Mit diesem Prinzip ist es möglich, eine BasisParameterdatei mit den Grundeinstellungen (Bsp.: Host, Port, User, Datenbank,…) und mehrere weitere Dateien mit erweiterten Einstellungen (Bedingung, Felder,…) zu erstellen. Zu beachten ist nur, dass für eine Umsetzung alle nötigen Parameter gesetzt werden müssen, egal aus welcher Parameterdatei. Beispiel eines Aufrufs: MySQL2SHP.exe -para:E:\ projekte\basisparamfile.txt -para:E:\ projekte\paramfile_01.txt MySQL2SHP.exe -para:E:\ projekte\basisparamfile.txt -para:E:\ projekte\paramfile_02.txt Lizenzbestimmungen der Komponente Shapelib: Der Konverter nutzt für das Ausgabeformat "Shape" die bekannte "Shapefile C Library V1.2" von Frank Warmerdam (siehe auch: "http://shapelib.maptools.org"). Diese Library wurde zur Datei "shapelib.dll" kompiliert, die dann vom Konverter dynamisch hinzugelinkt wird. Die Verwendung der "Shapefile C Library" unterliegt in diesem Fall der "MIT Style" license, welche die unbeschränkte Nutzung und Verbreitung der Library unter den Bedingungen gestattet, das die Copyright- und Nutzungs- bestimmungen mit der Software weitergereicht werden. Nachfolgend ist daher die Lizenzbestimmung aufgeführt, die unter http://shapelib.maptools.org/license.html zu finden ist. Copyright (c) 1999, 2001, Frank Warmerdam This software is available under the following "MIT Style" license, or at the option of the licensee under the LGPL (see LICENSE.LGPL). This option is discussed in more detail in shapelib.html. .. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.