Jak zaimportować plik KML z niestandardowymi danymi do bazy danych Postgres / PostGIS?

18

Nie mam na myśli innej struktury pliku KML, ale w <description></description>sekcji mam dane z tego rodzaju tagami HTML:

<?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>

Chcę łatwo zaimportować wszystkie te dane dla każdego oznaczenia miejsca do tabeli z odpowiednimi kolumnami w bazie danych, jak to zrobić?

elbaid
źródło
3
Istnieje wiele sposobów na osiągnięcie tego. Czy możesz nam powiedzieć więcej o tym, jakie narzędzia znasz? Szukasz rozwiązania programistycznego (jaki język lubisz?) Lub rozwiązania narzędziowego (np. ArgGIS, QGIS)?
katahdin

Odpowiedzi:

19

możesz użyć ST_GeomFromKML jako tej strony .

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

lub możesz użyć ogr2ogr w następujący sposób do przetwarzania całych plików KML;

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

Mam nadzieję, że Ci to pomoże...

Aragonia
źródło
1
ogr2ogr: mówisz, przejdź z KML do SHP, a następnie do PG. Dlaczego nie może korzystać z KML na PG jednym krokiem?
nickves
To działa! i dla odniesienia chcę dodać kilka komentarzy: Znalazłem ogr2ogr w /Library/Frameworks/GDAL.framework/Programs/ (na Macu) i są ostrzeżenia, jeśli zawartość sekcji <description> zawiera więcej niż 80 znaków. Dziękuję Ci!
elbaid
1

Dla szczęśliwszych w QGIS przeciągnij plik KML do QGIS. Następnie połącz się z bazą danych Postgres, jak tu udokumentowano , a następnie dodaj żądane warstwy z QGIS jako nową tabelę w schemacie

mapowanie dom
źródło
Tak bym zrobił!
DPSSpatial