Como importar um arquivo KML, com dados personalizados, para o banco de dados Postgres / PostGIS?

18

Por costume, não quero dizer uma estrutura diferente do arquivo KML, mas na <description></description>seção tenho dados com tags HTML desse 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>

Quero importar facilmente todos esses dados, para cada marcador, para uma tabela com as colunas correspondentes no banco de dados, como fazer isso?

elbaid
fonte
3
Existem muitas maneiras de conseguir isso. Você pode nos contar mais sobre quais ferramentas você conhece? Você está procurando uma solução orientada à programação (de qual idioma você gosta?) Ou uma solução baseada em ferramentas (por exemplo, ArgGIS, QGIS)?
Katahdin

Respostas:

19

você pode usar ST_GeomFromKML como esta página .

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

ou você pode usar ogr2ogr da seguinte maneira para processar arquivos KML inteiros;

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

espero que ajude você ...

Aragão
fonte
1
ogr2ogr: você está dizendo ir do KML para o SHP e depois para o PG. Por que ele não pode usar do KML para o PG com um passo?
nickves 10/09/12
Funciona! e para referência, quero adicionar alguns comentários: Encontrei ogr2ogr em /Library/Frameworks/GDAL.framework/Programs/ (em um Mac) e há avisos se o conteúdo da seção <description> contiver mais de 80 caracteres. Obrigado!
elbaid 11/09/12
1

Para os mais felizes no QGIS, arraste seu arquivo KML para o QGIS. Em seguida, conecte-se ao banco de dados do Postgres conforme documentado aqui e adicione as camadas desejadas do QGIS como nova tabela no seu esquema

mapeamento dom
fonte
Isso é o que eu faria!
DPSSpatial