Je sais, ma question est similaire à certaines anciennes sur ce site.
J'ai beaucoup de fichiers CSV (coordonnées géographiques) à importer dans qgis (puis à les convertir), et la manière habituelle n'est pas la meilleure façon de le faire (trop longue).
J'ai près de 500 fichiers CSV (coordonnées wgs84) et voici ce que je veux faire:
- Importez tous les fichiers CSV à la fois dans QGIS
- Projetez-les
- Exportez-les dans des fichiers CSV (encore) mais avec des coordonnées différentes (conversion en UTM33N)
J'essaie de comprendre comment utiliser la console python mais je ne bouge pas :(
Quelqu'un peut-il m'expliquer comment y parvenir pas à pas?
Réponses:
Si vous cherchez à reprojeter des fichiers csv à partir de la console Python dans QGIS, vous pouvez utiliser le script suivant. Il vous suffirait de changer les trois chemins mentionnés dans les commentaires.
Essentiellement, le script importe vos fichiers csv dans QGIS en tant que fichiers de formes (en supposant que vos champs géométriques sont nommés
X
etY
). Il utilise ensuite les algorithmesqgis:reprojectlayer
etqgis:fieldcalculator
de la boîte à outils de traitement pour reprojeter et mettre à jour les champsX
etY
avec les nouvelles coordonnées. Il les enregistre ensuite dans un dossier et les convertit en fichiers csv dans un chemin que vous spécifiez. Donc, à la fin, vous avez mis à jour les fichiers de formes et les fichiers csv dans des dossiers séparés.J'espère que cela t'aides!
la source
Une solution rapide pour transformer un fichier séparé par espace contenant "lon lat" dans WGS84 en UTM33N mais vous n'obtenez aucune autre donnée:
Cela fonctionne et cela préserve l'ordre des données, alors peut-être une autre boucle utilisant par exemple awk pour combiner les données descriptives avec les coordonnées?
Éditer. En raison des commentaires désordonnés que j'ai faits ci-dessous, je modifierai la réponse ici à la place.
Le script suivant devrait faire le travail de lecture de plusieurs fichiers csv, en ajoutant de nouvelles colonnes de coordonnées à chaque fichier.
Sur OSX, vous devrez installer la dernière version (2009) de sed et utiliser la première ligne non commentée de la boucle. Pour Linux, commentez le premier et utilisez le second. Ajustez le en
-F " "
fonction du format du séparateur dans vos fichiers csv, par exemple-F ","
pour les virgules séparées. Notez également que la transformation d'élévation se fait vers l'ellipsoïde, pas le géoïde, alors assurez-vous de transformer les hauteurs en conséquence.la source
paste -d',' ${i} <(awk -v OFS="," -F " " 'NR>1 {print $1 " " $2}' ${i} | gdaltransform -s_srs EPSG:4326 -t_srs EPSG:32633 | awk '{gsub(" ",",",$0); print $0}' | /usr/local/bin/sed "1i\X,Y,Z") > utm${i}
Remplacez / usr / local / sed par juste sed si vous n'êtes pas sous OSX. Ce n'est pas idéal si vos fichiers csv sont séparés par des espaces, comme le suppose la ligne ci-dessus, mais cela fonctionne. Si vous avez séparé la virgule-F " "
-F ","
Utiliser qgis ou même OGR est exagéré pour cela.
Utilisez
pyproj
( https://pypi.python.org/pypi/pyproj ) combiné avec l'écrivain cython python et quelques astuces de bibliothèque standard. Vous n'avez pas besoin d'installer autre chose quepyproj
cela!la source
pyproj
doit être installé séparément pour l'affiche, ou est déjà là.Vous n'avez pas besoin de python. Utilisez simplement la ligne de commande et ogr2ogr. Dans votre cas, le plus important est le paramètre -t_srs srs_def.
Ceci est déjà expliqué dans cette réponse à Comment puis-je convertir un fichier Excel avec des colonnes x, y en un fichier de formes?
MISE À JOUR Je n'ai pas le temps de vous écrire votre code complet. Mais le problème sera qu'il a besoin d'un peu plus de code en python que vous ne le pensez.
Votre principal problème sera que travailler avec des fichiers csv n'est pas aussi confortable que d'utiliser des fichiers de formes. Ainsi, vous devrez d'abord convertir le csv en forme qui nécessite un fichier VRT. Ceci est expliqué dans le premier lien. Ici, vous devrez écrire un script python en boucle dans vos fichiers qui génère automatiquement les fichiers vrt.
Ceci est un script que j'ai utilisé moi-même. Vous devez tester si cela fonctionne pour vous. J'ai déjà inclus la conversion de WGS 84 en UTM 33N
Vous devez ajuster les paramètres du nom de champ , src , x et y en fonction de votre fichier csv.
UPDATE2
Après réflexion, je me demande pourquoi voulez-vous utiliser QGIS? Vous pouvez utiliser un script python comme celui-ci pour convertir directement vos coordonnées de WGS en UTM. Dans ce cas, c'est un simple csv ouvert, lire les coordonnées, transformer les coordonnées et l'enregistrer dans un nouveau fichier.
la source