Lo sé, mi pregunta es similar a algunas anteriores en este sitio.
Tengo muchos archivos CSV (coordenadas geográficas) para importar a qgis (y luego convertirlos), y la forma habitual no es la mejor manera de hacerlo (demasiado tiempo).
Tengo casi 500 archivos CSV (coordenadas wgs84) y esto es lo que quiero hacer:
- Importe todos los archivos CSV a la vez a QGIS
- Proyectarlos
- Exportarlos a archivos CSV (nuevamente) pero con diferentes coordenadas (conversión a UTM33N)
Estoy tratando de entender cómo usar la consola de Python, pero no sigo adelante :(
¿Alguien puede explicarme cómo lograrlo paso a paso?
Respuestas:
Si está buscando reproyectar archivos csv desde la Consola Python en QGIS, puede usar el siguiente script. Todo lo que necesitaría cambiar son las tres rutas que se mencionan en los comentarios.
Esencialmente, el script importa sus archivos csv en QGIS como archivos de forma (suponiendo que sus campos geométricos se denominen
X
yY
). Luego usa los algoritmosqgis:reprojectlayer
yqgis:fieldcalculator
de Processing Toolbox para reproyectar y actualizar los camposX
yY
con las nuevas coordenadas. Luego los guarda en una carpeta y los convierte en archivos csv en la ruta que especifique. Entonces, al final, ha actualizado los archivos de forma y los archivos csv en carpetas separadas.¡Espero que esto ayude!
fuente
Una solución rápida para transformar un archivo separado por espacios que contiene "lon lat" en WGS84 a UTM33N pero no obtiene ningún otro dato:
Eso funciona y conserva el orden de los datos, así que ¿quizás otro bucle que utilice, por ejemplo, awk para combinar los datos descriptivos con las coordenadas?
Editar. Debido a los comentarios desordenados que hice a continuación, editaré la respuesta aquí.
El siguiente script debería hacer el trabajo de leer múltiples archivos csv, agregando nuevas columnas de coordenadas a cada archivo.
En OSX necesitará instalar la última versión (2009) de sed y usar la primera línea no comentada en el bucle. Para Linux, comente el primero y use el segundo. Ajústelo de
-F " "
acuerdo con el formato del separador en sus archivos csv, por ejemplo,-F ","
para comas separadas. También tenga en cuenta que la transformación de elevación es al elipsoide, no al geoide, así que asegúrese de transformar las alturas en consecuencia.fuente
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}
Reemplace / usr / local / sed con solo sed si no está en OSX. Esto no es ideal si sus archivos csv están separados por espacios, como se supone en la línea anterior, pero funciona. Si tiene una coma separada, cambie-F " "
a-F ","
Usar qgis o incluso OGR es excesivo para esto.
Uso
pyproj
( https://pypi.python.org/pypi/pyproj ) combinado con el escritor csv de python y algunos trucos de la biblioteca estándar. ¡No necesita instalar nada más quepyproj
para esto!fuente
pyproj
debe instalarse por separado para el póster o si ya está allí.No necesitas python. Simplemente use la línea de comando y ogr2ogr. En su caso, lo más importante es el parámetro -t_srs srs_def.
Esto ya se explica en esta respuesta a ¿Cómo puedo convertir un archivo de Excel con columnas x, y en un archivo de forma?
ACTUALIZACIÓN No tengo tiempo para escribirle su código completo. Pero el problema será que necesita un poco más de código en Python de lo que piensas.
Su principal problema será que trabajar con archivos csv no es tan cómodo como usar shapefiles. Por lo tanto, primero deberá convertir el csv a la forma que necesita el archivo VRT. Esto se explica en el primer enlace. Aquí deberá escribir un script de Python que recorra sus archivos y que genere automáticamente los archivos vrt.
Este es un guión que utilicé yo mismo. Tienes que probar si te funciona. Ya incluí la conversión de WGS 84 a UTM 33N
Debe ajustar los parámetros para Nombre de campo , src , x e y de acuerdo con su archivo csv.
ACTUALIZACIÓN2
Después de pensar un poco, me pregunto ¿por qué quieres usar QGIS? Puede usar un script de Python como este para convertir directamente sus coordenadas de WGS a UTM. En este caso es un simple csv abierto, leer coordenadas, transformar coordenadas y guardarlo en un nuevo archivo.
fuente