Créer kml à partir d'un fichier csv en Python
Je suis nouveau sur le Python. Je suis en train de travailler sur gps les fichiers. J'ai besoin de convertir un fichier CSV en ayant toutes les données gps de fichier kml. Ci-dessous est le code en python, je suis en utilisant :
import csv
#Input the file name.
fname = raw_input("Enter file name WITHOUT extension: ")
data = csv.reader(open(fname + '.csv'), delimiter = ',')
#Skip the 1st header row.
data.next()
#Open the file to be written.
f = open('csv2kml.kml', 'w')
#Writing the kml file.
f.write("<?xml version='1.0' encoding='UTF-8'?>\n")
f.write("<kml xmlns='http://earth.google.com/kml/2.1'>\n")
f.write("<Document>\n")
f.write(" <name>" + fname + '.kml' +"</name>\n")
for row in data:
f.write(" <Placemark>\n")
f.write(" <name>" + str(row[1]) + "</name>\n")
f.write(" <description>" + str(row[0]) + "</description>\n")
f.write(" <Point>\n")
f.write(" <coordinates>" + str(row[3]) + "," + str(row[2]) + "," + str(row[4]) + "</coordinates>\n")
f.write(" </Point>\n")
f.write(" </Placemark>\n")
f.write("</Document>\n")
f.write("</kml>\n")
print "File Created. "
print "Press ENTER to exit. "
raw_input()
Le fichier csv que j'utilise est disponible ici : dip12Sep11newEdited.csv
Le fichier kml généré est disponible ici : csv2kml.kml
Mais le fichier kml n'est pas correctement créé. Apparemment, après quelques lignes dans le fichier csv le code n'est pas en mesure de générer plus de Repères. Ses pas en mesure d'effectuer une itération. Vous pouvez voir que par le défilement à la dernière partie du fichier kml généré.
Quelqu'un peut-il m'aider à trouver l'erreur dans le code, parce que pour certains des petits fichiers csv cela a fonctionné correctement et a créé les fichiers kml entièrement.
Grâce.
Oui, il promts Fichier Creted'. Mais si vous ouvrez le fichier kml dans le bloc-notes, vous pouvez voir que le fichier na pas écrire complètement.
OriginalL'auteur Darkpain | 2011-09-23
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas la réponse à la requête ci-dessus, mais je pense que l'erreur est que vous n'êtes pas la fermeture de votre fichier de sortie (qui pourrait vider votre sortie).
Ya elle était le problème. Juste ajouté le f.close() et cela a fonctionné comme un charme. Merci beaucoup.
OriginalL'auteur KevinDTimm
utilisation du programme etree pour créer votre fichier
http://docs.python.org/library/xml.etree.elementtree.html
Il est fourni avec Python et vous protège de la génération brisée XML. (eg. parce que
fname
contenues&
, qui a une signification spéciale dans XML.)OriginalL'auteur Louis
Thie simplekml paquet fonctionne très bien, et rend le travail facile de telles choses.
Pour l'installer sur Ubuntu, téléchargez la dernière version et exécutez la commande suivante à partir du répertoire contenant le contenu de l'archive.
Il y a aussi des quelques tutoriels pour obtenir vous avez commencé.
OriginalL'auteur ryanjdillon
Une réponse mentionne le "programme etree", un avantage que vous n'avez pas à coder en dur le format xml:
Ci-dessous l'un de mes exemples, bien sûr, vous devez l'adapter à votre cas, mais vous pouvez obtenir l'idée de comment programme etree travaux:
pour obtenir quelque chose comme ceci
vous pouvez utiliser ce code:
aussi quelques infos ici
ET.SubElement(OGRVRTLayer, "GeometryType").text = "wkbPoint"
OriginalL'auteur Max
Ce code est bien écrit, merci pour le poste. Je l'ai eu à travailler, en mettant mon CSV dans le même répertoire que le .py code.
J'ai fait quelques modifications à apporter à py 3.3
Espère que cela aide si vous essayez de convertir vos données.
OriginalL'auteur Reverend_Dude