Comment importer un fichier KML, avec des données personnalisées, dans la base de données Postgres / PostGIS?


18

Par coutume, je ne veux pas dire une structure différente du fichier KML, mais dans la <description></description>section, j'ai des données avec des balises HTML de ce type:

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

Je souhaite importer facilement toutes ces données, pour chaque repère, dans un tableau avec les colonnes correspondantes dans la base de données, comment faire?


3
Il y a plusieurs façons d'accomplir ceci. Pouvez-vous nous en dire plus sur les outils que vous connaissez? Vous recherchez une solution orientée programmation (quelle langue aimez-vous?) Ou une solution basée sur des outils (par exemple, ArgGIS, QGIS)?
— katahdin

Réponses:


19

vous pouvez utiliser ST_GeomFromKML comme cette page .

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

ou vous pouvez utiliser ogr2ogr comme suit pour traiter des fichiers KML entiers;

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

J'espère que ça t'aide...


1
ogr2ogr: vous dites passer de KML à SHP puis à PG. Pourquoi il ne peut pas utiliser de KML à PG en une seule étape?
— nickves

Ça marche! et pour référence, je veux ajouter quelques commentaires: j'ai trouvé ogr2ogr dans /Library/Frameworks/GDAL.framework/Programs/ (sur un Mac) et il y a des avertissements si le contenu de la section <description> contient plus de 80 caractères. Je vous remercie!
— elbaid

1

Pour ceux qui sont plus heureux dans QGIS, faites glisser votre fichier KML vers QGIS. Ensuite, connectez-vous à votre base de données Postgres comme indiqué ici, puis ajoutez les couches souhaitées de QGIS en tant que nouvelle table dans votre schéma


Voilà ce que je ferais!
— DPSSpatial
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.