Si quieres reproyectar archivos csv del Consola Python en QGIS, entonces podría utilizar el siguiente script. Todo lo que tendría que cambiar son las tres rutas que se mencionan en los comentarios.
Esencialmente, el script importa sus archivos csv a QGIS como shapefiles (asumiendo que sus campos geométricos se denominan X
y Y
). A continuación, utiliza el qgis:reprojectlayer
y qgis:fieldcalculator
algoritmos del Caja de herramientas de procesamiento para reproyectar y actualizar el X
y Y
con las nuevas coordenadas. A continuación, los guarda en una carpeta y los convierte en archivos csv en una ruta que usted especifica. Así que al final, tienes archivos shapefiles actualizados y archivos csv en carpetas separadas.
import glob, os, processing
path_to_csv = "C:/Users/You/Desktop/Testing//" # Change path to the directory of your csv files
shape_result = "C:/Users/You/Desktop/Testing/Shapefile results//" # Change path to where you want the shapefiles saved
os.chdir(path_to_csv) # Sets current directory to path of csv files
for fname in glob.glob("*.csv"): # Finds each .csv file and applies following actions
uri = "file:///" + path_to_csv + fname + "?delimiter=%s&crs=epsg:4326&xField=%s&yField=%s" % (",", "x", "y")
name = fname.replace('.csv', '')
lyr = QgsVectorLayer(uri, name, 'delimitedtext')
QgsMapLayerRegistry.instance().addMapLayer(lyr) # Imports csv files to QGIS canvas (assuming 'X' and 'Y' fields exist)
crs = 'EPSG:32633' # Set crs
shapefiles = QgsMapLayerRegistry.instance().mapLayers().values() # Identifies loaded layers before transforming and updating 'X' and 'Y' fields
for shapes in shapefiles:
outputs_0 = processing.runalg("qgis:reprojectlayer", shapes, crs, None)
outputs_1 = processing.runalg("qgis:fieldcalculator", outputs_0['OUTPUT'], 'X', 0, 10, 10, False, '$x', None)
outputs_2 = processing.runalg("qgis:fieldcalculator", outputs_1['OUTPUT_LAYER'], 'Y', 0, 10, 10, False, '$y', shape_result + shapes.name())
os.chdir(shape_result) # Sets current directory to path of new shapefiles
for layer in glob.glob("*.shp"): # Finds each .shp file and applies following actions
new_layer = QgsVectorLayer(layer, os.path.basename(layer), "ogr")
new_name = layer.replace('.shp', '')
csvpath = "C:/Users/You/Desktop/Testing/CSV results/" + new_name + ".csv" # Change path to where you want the csv(s) saved
QgsVectorFileWriter.writeAsVectorFormat(new_layer, csvpath, 'utf-8', None, "CSV")
Espero que esto ayude.
0 votos
Ver mi respuesta más abajo. el problema ya fue resuelto y explicado
2 votos
¿Y por qué está duplicado con el marcado? Tal vez el OP trata de aprender pyqgis y cómo utilizar python si se considera su negrita.
0 votos
Por favor, especifique su pregunta. ¿Quiere no cargarlos manualmente en QGIS? ¿Quiere convertirlos a otro formato? ¿Cuál es exactamente su pregunta?
0 votos
1. Importar todos los archivos en un proceso a qgis 2. proyectarlos 3. exportarlos todos de nuevo como csv pero en coordenadas utm
0 votos
Cat *.csv > un_fichero.csv (o lo que sea el equivalente en Windows) combinará todos tus archivos csv en uno solo. 500 no es un número tan grande :-)
0 votos
Dependiendo de sus circunstancias, esto podría ser muy fácil. ¿Todas sus columnas de coordenadas tienen el mismo nombre? ¿Son todos los archivos de puntos? Voy a publicar una solución pronto en este supuesto.
0 votos
Una cosa más... ¿son todas las coordenadas garantizado para estar en la zona UTM 33N? Si no es así, necesita la captura de errores para las coordenadas que están fuera.