Bagaimana cara mengimpor file KML, dengan data khusus, ke database Postgres / PostGIS?

18

Secara khusus, maksud saya bukan struktur file KML yang berbeda, tetapi pada <description></description>bagian ini, saya memiliki data dengan tag HTML semacam ini:

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

Saya ingin mengimpor semua data ini dengan mudah, untuk setiap tanda letak, ke tabel dengan kolom yang sesuai di basis data, bagaimana melakukan ini?

elbaid
sumber
3
Ada banyak cara untuk mencapai ini. Bisakah Anda memberi tahu kami lebih lanjut tentang alat apa yang Anda kenal? Apakah Anda mencari solusi berorientasi pemrograman (bahasa apa yang Anda sukai?) Atau solusi berbasis alat (misalnya, ArgGIS, QGIS)?
katahdin

Jawaban:

19

Anda dapat menggunakan ST_GeomFromKML sebagai halaman ini .

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

atau Anda dapat menggunakan ogr2ogr sebagai berikut untuk memproses seluruh file KML;

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

Saya harap ini membantu Anda ...

Aragon
sumber
1
ogr2ogr: Anda mengatakan pergi dari KML ke SHP lalu ke PG. Kenapa dia tidak bisa menggunakan dari KML ke PG dengan satu langkah?
Nikel
Berhasil! dan untuk referensi, saya ingin menambahkan beberapa komentar: Saya menemukan ogr2ogr di /Library/Frameworks/GDAL.framework/Programs/ (di Mac) dan ada peringatan jika konten bagian <description> berisi lebih dari 80 karakter. Terima kasih!
elbaid
1

Bagi mereka yang lebih bahagia di QGIS, seret file KML Anda ke QGIS. Kemudian sambungkan ke database Postgres Anda seperti yang didokumentasikan di sini lalu tambahkan layer yang Anda inginkan dari QGIS sebagai tabel baru dalam skema Anda

pemetaan dom
sumber
Itu yang akan saya lakukan!
DPSSpatial