¿Cómo importar un archivo KML, con datos personalizados, a la base de datos Postgres / PostGIS?

18

Por costumbre, no me refiero a una estructura diferente del archivo KML, pero en la <description></description>sección, tengo datos con etiquetas HTML de este tipo:

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

Quiero importar fácilmente todos estos datos, para cada marca de posición, a una tabla con las columnas correspondientes en la base de datos, ¿cómo hacer esto?

elbaid
fuente
3
Hay muchas formas de lograr esto. ¿Puede contarnos más sobre las herramientas con las que está familiarizado? ¿Está buscando una solución orientada a la programación (¿qué idioma le gusta?) O una solución basada en herramientas (por ejemplo, ArgGIS, QGIS)?
katahdin

Respuestas:

19

puedes usar ST_GeomFromKML como esta página .

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

o puede usar ogr2ogr de la siguiente manera para procesar archivos KML completos;

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

Espero que te ayude...

Aragón
fuente
1
ogr2ogr: estás diciendo ir de KML a SHP y luego a PG. ¿Por qué no puede usar de KML a PG con un solo paso?
nickves
¡Funciona! y como referencia, quiero agregar algunos comentarios: he encontrado ogr2ogr en /Library/Frameworks/GDAL.framework/Programs/ (en una Mac) y hay advertencias si el contenido de la sección <descripción> contiene más de 80 caracteres. ¡Gracias!
elbaid
1

Para aquellos más felices en QGIS, arrastre su archivo KML a QGIS. Luego, conéctese a su base de datos de Postgres como se documenta aquí y luego agregue las capas que desee de QGIS como una nueva tabla en su esquema

mapeo dom
fuente
¡Eso es lo que yo haría!
DPSEspacial