Wie importiere ich eine KML-Datei mit benutzerdefinierten Daten in eine Postgres / PostGIS-Datenbank?

18

Mit "benutzerdefiniert" meine ich keine andere Struktur der KML-Datei, aber im <description></description>Abschnitt habe ich Daten mit HTML-Tags dieser Art:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Placemark>
  <name>New York City</name>
  <description><![CDATA[
    <table>
      <tr><td colspan='2'>Attributes</td></tr>
      <tr><td>CITY_ID</td><td>150335</td></tr>
      <tr><td>POPULATION</td><td>8244910</td></tr>
      <tr><td>AREA</td><td>468.48</td></tr>
    </table>]]>
  </description>
  <Point>
    <coordinates>40.712964,-74.003886,0</coordinates>
  </Point>
</Placemark>
</Document>
</kml>

Ich möchte einfach alle diese Daten für jede Ortsmarke in eine Tabelle mit entsprechenden Spalten in der Datenbank importieren. Wie geht das?

elbaid
quelle
3
Es gibt viele Möglichkeiten, dies zu erreichen. Können Sie uns mehr darüber erzählen, mit welchen Tools Sie vertraut sind? Suchen Sie eine programmierorientierte Lösung (welche Sprache mögen Sie?) Oder eine toolbasierte Lösung (z. B. ArgGIS, QGIS)?
Katahdin

Antworten:

19

Sie können ST_GeomFromKML als diese Seite verwenden .

SELECT ST_GeomFromKML('
        <LineString>
            <coordinates>-71.1663,42.2614 
                -71.1667,42.2616</coordinates>
        </LineString>');

oder Sie können ogr2ogr wie folgt verwenden, um ganze KML-Dateien zu verarbeiten;

ogr2ogr -f "PostgreSQL" PG:"host=yourhost user=youruser dbname=yourdb 
                            password=yourpass" inputfilename.kml

ich hoffe es hilft dir ...

Aragon
quelle
1
ogr2ogr: Sie sagen, Sie gehen von KML zu SHP und dann zu PG. Warum kann er nicht mit einem Schritt von KML zu PG?
nickves
Es klappt! und als Referenz möchte ich einige Kommentare hinzufügen: Ich habe ogr2ogr in /Library/Frameworks/GDAL.framework/Programs/ (auf einem Mac) gefunden und es gibt Warnungen, wenn der Inhalt des Abschnitts <description> mehr als 80 Zeichen enthält. Vielen Dank!
Elbaid
1

Wenn Sie mit QGIS zufrieden sind, ziehen Sie Ihre KML-Datei nach QGIS. Stellen Sie dann eine Verbindung zu Ihrer Postgres-Datenbank her, wie hier dokumentiert , und fügen Sie die gewünschten Layer aus QGIS als neue Tabelle in Ihr Schema ein

Zuordnung dom
quelle
Das würde ich tun!
DPSSpatial