September 2009
Ziel
In dieser Anleitung werden Sie durch die Grundlagen der Konvertierung von GIS-Vektordaten in KML mithilfe der Open-Source-Bibliothek OGR geführt. Diese Bibliotheken können mit den meisten GIS-Dateien verwendet werden. In dieser Anleitung geht es allerdings um ESRI-Shapefiles.
Einführung
Geografische Daten sind in vielen Formen im Web verfügbar. KML ist eines der gängigsten Dateiformate, es werden jedoch auch viele andere Dateitypen verwendet. Große Unternehmen, Behörden und NGOs verwenden geografische Informationssysteme, um ihre Karten zusammen mit speziellen Dateiformaten zu erstellen. Für diese Anwendungen ist häufig eine spezielle Schulung oder mindestens eine längere Lernzeit erforderlich. Proprietäre Programme können ziemlich teuer sein. Andererseits sind sie sehr leistungsstark und bieten zahlreiche Kartierungstools für professionelle Kartografen.
Viele Regierungsbehörden geben einen Teil ihrer GIS-Daten für die öffentliche Nutzung frei. Portale wie Data.gov, Massachusetts Geographic Information System und DataSF erleichtern die Suche nach Daten für ihre Communities. In diesem Artikel wird beschrieben, wie Sie Vektordaten, die aus einfachen Geometrien wie Punkten, Linien und Polygonen bestehen, in KML konvertieren. Dadurch erhalten Sie Zugriff auf eine Vielzahl verschiedener Arten von Daten:
- Grundstücksdaten, die die Grenzen von Parzellen darstellen
- Daten zu Vorfällen, z. B. Kriminalitätsberichte
- Grenzdaten für Grenzen von Gemeinden, Bundesländern, Bundesländern, Provinzen usw.
- Straßendaten, einschließlich geplanter und bestehender Straßen
- Baugenehmigungen, die angeben, wo Genehmigungen erteilt wurden
- Gesundheitsdaten, z. B. Beschreibungen von Grippeausbrüchen
Für die Datenkonvertierung gibt es viele hervorragende Anwendungen wie Google Earth Pro, shp2KML, KML2KML, Arc2Earth und viele mehr. In diesem Artikel geht es um die Konvertierung von Vektordaten in KML für die Verwendung in Google Earth oder Google Maps mit den Open-Source-Dienstprogrammen Geospatial Data absion Library (GDAL) über die Befehlszeile. Möglicherweise möchten Sie diese Bibliotheken in Ihre eigenen Anwendungen einbinden.
Hinweis zu den Dateitypen
In diesem Artikel werden die einzelnen Schritte für die Konvertierung von ESRI-Shapedateien in KML-Dateien beschrieben. Die GDAL-Dienstprogramme, insbesondere OGR, können jedoch für die Konvertierung aus vielen verschiedenen Dateitypen verwendet werden, darunter CSV, PostGRES/PostGIS-Datenbanken und andere Formate. Die meisten gängigen Datenformate werden unterstützt. Wenn Sie ein Format finden, das nicht unterstützt wird, können Sie einen Treiber für OGR schreiben, da es sich um eine Open-Source-Bibliothek handelt.
Shapefiles
Das beliebte Shapefile-Format der ESRI ist eines der gängigsten GIS-Datenformate. Technisch gesehen ist die Shape-Datei eine einzelne Datei mit der Erweiterung .shp .Sie kann jedoch nicht selbst geöffnet werden. Sie erfordert mindestens eine DBF- und SHX-Datei. Außerdem sind eine Reihe weiterer Dateien für verschiedene Zwecke erforderlich. Wenn Sie einen Verweis auf eine Shape-Datei sehen, bedeutet das fast immer, dass Sie eine Sammlung von Dateien haben, normalerweise in einer ZIP-Datei, die zusammengefügt werden kann. Deshalb verwenden wir in diesem Artikel den Begriff Shape-Datei.
Shapefiles enthalten eine große Menge an Informationen zu den von ihnen beschriebenen Regionen. Sie beschreiben die tatsächlichen Geometrien, Metadaten zu den Geometrien und Informationen über das verwendete räumliche Referenzsystem sowie viele andere Aspekte der Daten. Für die Zwecke dieses Artikels interessieren uns die Geometrien, Metadaten und das räumliche Referenzsystem.
Geometrien und Metadaten sind einfache Konzepte. Geometrien sind Punkte, Linien und Polygone. Sie können ganz einfach in KML ausgedrückt werden. Metadaten sind Daten zu den Daten, die häufig zum Filtern oder Abfragen verwendet werden. Zum Beispiel kann eine Linie, die eine Straße beschreibt, Metadaten über den Straßentyp (Gemeindestraße, Bundesstraße, Turnpike usw.), die Höchstgeschwindigkeit, den Betreiber, seine Größe usw. enthalten.
Räumliche Referenzsysteme (SRS) werden zur Identifizierung von Koordinatensystemen und Projektionen verwendet, um die Vektordaten zu erstellen. In KML werden Breiten- und Längengrad in einem WGS84-Koordinatensystem verwendet. Es gibt jedoch noch andere Möglichkeiten, Koordinaten auf einer Karte zu identifizieren. Zu den beliebtesten gehören die Systeme Universales transversales Mercator-Koordinatensystem, British National Grid und State Plane. Zum Konvertieren von Daten in KML müssen Sie diese Informationen möglicherweise identifizieren. KML unterstützt nur WGS84. In der Regel enthalten Shapefiles diese Informationen, oft in einer PRJ-Datei, und der OGR kann sie dort erkennen. Gelegentlich ist es jedoch erforderlich, den SRS zu identifizieren. Manchmal wird sie in irgendeiner Form von der Datenquelle entweder auf der Seite, von der Sie sie herunterladen, oder in einem Infodokument mit dem Download oder in einem anderen Format zur Verfügung gestellt. Das reicht normalerweise aus. Die Website Spatial Reference enthält weitere Informationen zu SRS und bietet eine Referenz, mit der du einzelne Referenzsysteme nachschlagen kannst.
Oger2ogr
GDAL bietet leistungsstarke Bibliotheken für die Arbeit mit Vektordaten. Insbesondere ist ogr2ogr
ein leistungsstarkes Dienstprogramm für die Datenkonvertierung. Viele Anwendungen, darunter einige der oben genannten, enthalten GDAL/OGR.
Laden Sie GDAL herunter und installieren Sie es. Dann benötigen Sie eine Shapefile-Datei. Verwenden Sie für diese Anleitung eine Datei von DataSF. Im folgenden Beispiel wird die Shape-Datei realtor_neighborhoods
verwendet, die Sie nach der Zustimmung zu dessen Lizenz abrufen können. Nachdem Sie die Datei heruntergeladen haben, entpacken Sie sie in einem Verzeichnis, das Sie sich gut merken können. Öffnen Sie eine Befehlszeile und gehen Sie zu dem Verzeichnis, in dem Sie die Daten gespeichert haben. Jetzt kommt der unterhaltsame Teil.
ogr2ogr
kann ganz einfach über die Befehlszeile verwendet werden. So wandeln Sie realtor_neighborhoods
von einer Shape-Datei in eine KML-Datei um:
ogr2ogr -f "KML" -where "NBRHOOD='Telegraph Hill'" realtor_neighborhoods.kml realtor_neighborhoods.shp
Im Folgenden finden Sie eine Erläuterung der Funktionsweise dieses Befehls:
ogr2ogr
: Dies ist der Hauptbefehl.-f "KML
: Dadurch wird das Ausgabeformat auf KML festgelegt.-where "NBRHOOD='Telegraph Hill'"
: Dies ist eine optionalewhere
-Klausel, wie in SQL. Grundsätzlich können Sie die Daten anhand von Metadaten abfragen. Es funktioniert mit Shapefiles und anderen Dateitypen, die Abfragen unterstützen. In diesem Fall wird das Feld NBRHOOD abgefragt und es werden nur Funktionen ausgewählt, die einen NBRHOOD von Telegraph Hill haben. Wenn Sie diesen Parameter nicht angeben, gibtogr2ogr
jedes Nachbarpolygon an.realtor_neighborhoods.kml
: Dies ist der Name der Ausgabedatei. Der Name der Ausgabedatei steht an erster Stelle.realtor_neighborhoods.shp
: Dies ist der Name der Eingabedatei. Die SHP-Datei stellt die gesamte Shape-Datei dar.
Das wars schon. Dieser Befehl schreibt eine KML-Datei, die so aussieht:
<?xml version="1.0" encoding="utf-8" ?> <kml xmlns="http://www.opengis.net/kml/2.2"> <Document><Folder><name>realtor_neighborhoods</name> <Schema name="realtor_neighborhoods" id="realtor_neighborhoods"> <SimpleField name="Name" type="string"></SimpleField> <SimpleField name="Description" type="string"></SimpleField> <SimpleField name="OBJECTID" type="float"></SimpleField> <SimpleField name="NBRHOOD" type="string"></SimpleField> <SimpleField name="SFAR_DISTR" type="string"></SimpleField> </Schema> <Placemark> <ExtendedData><SchemaData schemaUrl="#realtor_neighborhoods"> <SimpleData name="OBJECTID">81</SimpleData> <SimpleData name="NBRHOOD">Telegraph Hill</SimpleData> <SimpleData name="SFAR_DISTR">District 8 - Northeast</SimpleData> </SchemaData></ExtendedData> <Polygon><outerBoundaryIs><LinearRing><coordinates>-122.41041847319012,37.805924016582715,0 -122.407203813674,37.806324902060979,0 -122.40667792852096,37.803710121958744,0 -122.40348255423899,37.804117462290641,0 -122.40237202127015,37.798540648764529,0 -122.40876046662795,37.797723222540775,0 -122.41041847319012,37.805924016582715,0</coordinates></LinearRing></outerBoundaryIs></Polygon> <Style><LineStyle><color>ff0000ff</color></LineStyle> <PolyStyle><fill>0</fill></PolyStyle></Style> </Placemark> </Folder></Document></kml>
Die Metadaten der Shape-Datei sind in den Elementen Schema
und SimpleData
erhalten. Weitere Informationen zur Verwendung von ExtendedData und zur Aufbewahrung benutzerdefinierter Daten finden Sie im KML-Entwicklerhandbuch im Abschnitt Benutzerdefinierte Daten hinzufügen.
Nächste Schritte
GDAL/OGR liefert dir eine überwältigende Kraft. In der einfachsten Implementierung können Sie Ihre gesamten Daten jetzt in KML konvertieren und dann in Google Earth, Google Maps oder einem anderen KML-fähigen Geobrowser verwenden. Noch besser ist, dass Sie die GDAL/OGR-Bibliotheken in Ihre Anwendungen einbinden können. So haben Sie die Möglichkeit, die Konvertierung von GIS-Daten in KML zu automatisieren und die Ausgabe dieser Konvertierung zu steuern. Sie können sie mit libKML kombinieren, um die KML-Generierung noch programmatischer zu gestalten.