Niveau | Débutant |
Logiciels utilisés |
Python simplekml |
Plateforme | Windows | Mac | Linux | FreeBSD |
Vous voulez créer facilement créer un fichier KML mais vous ne connaissez pas encore bien Python ou la structure d'un tel fichier ?
Une exemple «brut » (sans module) à déjà été proposé sur le Portail dans « Python: création de cartes dynamiques Google Maps avec Google Charts (kml) », mais il y a plus simple.
Essayez simplexml. C'est un module Python qui permet de créer des fichiers KML en quelques lignes de code :
création d'un fichier KML
import simplekml # initiation monkml = simplekml.Kml() # ajout d'un point monkml.newpoint(name="Equerre", coords=[(4.607398,50.66310)]) # création du fichier monkml.save("testkml.kml")
- 5061 lectures
Et le fichier KML résultant :
résultat : testkml.kml
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2"> <Document id="feat_2"> <visibility> 1 </visibility> <open> 0 </open> <Placemark id="feat_3"> <name> Equerre </name> <visibility> 1 </visibility> <Point id="geom_1"> <extrude> 0 </extrude> <altitudeMode> clampToGround </altitudeMode> <coordinates> 4.607398,50.6631,0.0 </coordinates> </Point> <open> 0 </open> </Placemark> </Document> </kml>
- 4333 lectures
simple non ?
Principes
Python dispose de nombreux modules pour traiter les fichiers XML et ce, depuis longtemps (pypi.python.org/pypi). Certains d'entre eux ont été intégrés dans la distribution standard comme ElementTree. Je ne discuterai pas ici sur la structure d'un document XML car il y a des nombreux tutoriels sur le sujet mais notons qu'un fichier KML peut être traité facilement à l'aide de ceux-ci.
Je conçois très bien que ce n'est pas évident pour un débutant. C'est pourquoi il existe aussi des modules pour traiter directement des fichiers KML (pypi.python.org/pypi ). Parmi ceux-ci, les plus faciles à utiliser sont keytree, pykml et simplekml. Les deux premiers ajoutent des fonctions supplémentaires à ElementTree et à lxml, ce qui oblige l'utilisateur à connaître ces bibliothèques au préalable. Simplekml ne nécessite aucune connaissance préalable mais il ne permet que la création de fichiers kml et non des traitements complets comme les autres (analyse complète d'un fichier KML en lecture et en écriture) et il est très facile à utiliser. Le module est basé sur le module standard xml (xml.dom.minidom).
Pour aller plus loin
code.google.com/p/simplekml/wiki/Usage#Quick_Example montre comment créer des lignes et des polygones.
lignes et polygones
# ligne maligne = kml.newlinestring(name="Chemin", description="un chemin près de la place des Equerres", coords=[(4.60986,50.66426),(4.60985,50.66419),(4.60987,50.66414), (4.60988,50.66404),...]), # polygone monpolygone = kml.newpolygon(name="place", outerboundaryis=[(4.609526001204531,50.66413214425602),(4.609939009766122,50.66374792717222),(4.61001435640537,50.66369069629207),(4.610342259475906,50.66378334906315),(4.610450084002493,50.66386095602384),(4.610490685181712,50.66390816131144),...]) innerboundaryis=[(4.609989464405848,50.66401766069535),(4.610026692288005,50.66392451827618),(4.610224269649357,50.66378145164556),(4.610377500017511,50.66384069580727),(4.610254076404501,50.66393619825927),(4.610157502728665,50.6640175148756),...]) # il est possible de spécifier le z [(4.609989464405848,50.66401766069535, 120)
- 3852 lectures
Il est aussi possible de créer des styles (ici pour les points)
styles
pnt = kml.newpoint(name="Equerre", coords=[(4.607398,50.66310)]) pnt.labelstyle.color = 'ff0000ff' #le texte Equerre est écrit en rouge pnt.labelstyle.scale = 2 pnt.iconstyle.color = 'ffff0000' pnt.iconstyle.scale = 3 pnt.iconstyle.icon.href = 'http://maps.google.com/mapfiles/kml/shapes/info-i.png'
- 3533 lectures
et des éléments de type MultiGeometry (c'est un ensemble, un groupe, contenant de multiples géométries de type différents) : code.google.com/p/simplekml/wiki/MultiGeometryTutorial
Tous les traitements ont été effectués sur Mac OS X avec Python 2.6.1.
Site officiel : simplekmlSite officiel : keytree
Site officiel : pykml
Autres Liens : Python: création de cartes dynamiques Google Maps avec Google Charts (kml)
licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique Commerciale 2.0 France
Commentaires
équivalent sous R
Pour info, à noter que l'équivalent sous R existe et est en voie de développement avec la librairie plot kml.
https://r-forge.r-project.org/projects/plotkml/
Elle doit permettre de créer des KMLs très facilement à partir d'objets vecteurs ou rasters.
et les raster ?
Les kml de raster,tel qu'évoqués dans http://www.forumsig.org/showthread.php?t=30407&highlight=raster+kml sont ils pris en charge ?
non, il faut se tourner vers
non, il faut se tourner vers des modules Python plus « lourds »
Poster un nouveau commentaire