如何将带有自定义数据的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>

我想轻松地将每个地标的所有这些数据导入数据库中具有相应列的表中,该怎么做?


3
有很多方法可以完成此任务。您能告诉我们更多您熟悉的工具吗?您是在寻找面向编程的解决方案(您喜欢哪种语言?)还是基于工具的解决方案(例如ArgGIS,QGIS)?
katahdin 2012年

Answers:


19

您可以将ST_GeomFromKML用作此页面

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

或者您可以按照以下方式使用ogr2​​ogr处理整个KML文件;

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

我希望它可以帮助您...


1
ogr2ogr:您说的是从KML转到SHP,然后再到PG。为什么他不能一步一步地将其从KML转换为PG?
尼克斯2012年

有用!作为参考,我想添加一些评论:我在/Library/Frameworks/GDAL.framework/Programs/(在Mac上)中找到了ogr2ogr,并且如果<description>部分的内容包含80个以上的角色,则会发出警告。谢谢!
elbaid 2012年

1

对于那些在QGIS中更快乐的人,请将您的KML文件拖到QGIS中。然后按此处记录连接到Postgres数据库,然后将QGIS中所需的图层添加为架构中的新表


那就是我会做的!
DPSSpatial
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.