2012-12-04 6 views
5

J'ai téléchargé quelques adresses vers BatchGeo et téléchargé le fichier KML résultant dont je veux extraire les coordonnées. Je suis parvenu à simuler le fichier texte en ligne here, mais je ne sais pas comment l'analyser pour extraire les coordonnées.Extrait des coordonnées du fichier KML BatchGeo avec Python

<?xml version="1.0" ?> 
<kml xmlns="http://earth.google.com/kml/2.0"> 
    <Document> 
     <Placemark> 
      <name>...</name> 
      <description>....</description> 
      <Point> 
       <coordinates>-3.1034345755337,57.144817425039,0</coordinates> 
      </Point><address>...</address> 
      <styleUrl>#0</styleUrl> 
     </Placemark> 
    </Document> 
</kml> 

Il semble y avoir plusieurs bibliothèques kml pour python, mais pas beaucoup de la manière de la documentation (par exemple pyKML). En utilisant le tutoriel, j'ai loin et a créé un objet « lxml.etree._ElementTree » mais je ne suis pas sûr de ses attributs:

from pykml import parser 

kml_file = "BatchGeo.kml" 

with open(kml_file) as f: 

    doc = parser.parse(f) 

coordinate = doc.Element("coordinates") 
print coordinate 

Cela donne à l'erreur:

AttributeError: 'lxml.etree._ElementTree' object has no attribute 'Element' 

Alors comment puis-je obtenir une liste de coordonnées? Merci.

Répondre

10
from pykml import parser 

root = parser.fromstring(open('BatchGeo.kml', 'r').read()) 
print root.Document.Placemark.Point.coordinates 

voir the pykml docs

espoir qui aide!