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?

elbaid
la source
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...

Aragon
la source
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

cartographie dom
la source
Voilà ce que je ferais!
DPSSpatial