Как импортировать файл KML с пользовательскими данными в базу данных Postgres / PostGIS?

18

Под обычаем я не подразумеваю другую структуру файла KML, но в <description></description>разделе у меня есть данные с тегами 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>

Я хочу легко импортировать все эти данные для каждой метки в таблицу с соответствующими столбцами в базе данных, как это сделать?

elbaid
источник
3
Есть много способов сделать это. Можете ли вы рассказать нам больше о том, с какими инструментами вы знакомы? Вы ищете решение для программирования (какой язык вам нравится?) Или решение на основе инструментов (например, ArgGIS, QGIS)?
Катахдин

Ответы:

19

Вы можете использовать ST_GeomFromKML в качестве этой страницы .

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

или вы можете использовать ogr2ogr как следующий для обработки целых файлов KML;

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

я надеюсь, что это поможет вам ...

Арагон
источник
1
ogr2ogr: вы говорите перейти от KML к SHP, а затем к PG. Почему он не может использовать от KML до PG с одним шагом?
Никв
Оно работает! и для справки, я хочу добавить несколько комментариев: я нашел ogr2ogr в /Library/Frameworks/GDAL.framework/Programs/ (на Mac) и есть предупреждения, если содержимое раздела <description> содержит более 80 символов. Спасибо!
Эльбаид
1

Для тех, кто счастлив в QGIS, перетащите свой файл KML в QGIS. Затем подключитесь к базе данных Postgres, как описано здесь, затем добавьте нужные слои из QGIS в качестве новой таблицы в вашу схему.

картография дом
источник
Вот что я бы сделал!
DPSSpatial