Cargando múltiples CSV en QGIS 3
Sep 05 2020
He estado buscando la forma más rápida de cargar varios archivos CSV en QGIS 3.10.
Mis archivos CSV constan de 5 columnas:
Brand Name | Branch Name | Address | Latitude | Longitude
Estoy usando Mac y es "files:///"posible que no funcione. ¿Alguna sugerencia?
Vi código relacionado con esto y lo seguí. Esto es lo que se me ocurrió:
import glob, os
csv_files="Users/ajie/Documents/RestoBrand_Py/SAMPLE CSVs/"
os.chdir(csv_files)
for fname in glob.glob("*csv"):
uri = "files:///" + csv_files + fname + "?delimiter=%s&crs=epsg:4326&xField=%s&yField=%s" % (",",",",",","x","y")
name = fname.replace('csv', '')
lyr = QgsVectorLayer(uri, name, 'delimitedtext')
QgsProject.instance().addMapLayer(lyr)
Aquí está el error
Respuestas
2 underdark Sep 06 2020 at 09:39
Como se menciona en los comentarios de @ user2856, hay demasiados argumentos en la llamada de formato. Para que el proceso sea más transparente, puede codificar todos los parámetros. Esto debería funcionar (aunque no se probó en Mac):
import os
directory = "Users/ajie/Documents/RestoBrand_Py/SAMPLE CSVs/"
def load_and_configure(path):
path = os.path.join(directory, filename)
uri = 'file:///' + path + "?type=csv&escape=&useHeader=yes&detectTypes=yes"
uri = uri + "&crs=EPSG:4326&xField=Longitude&yField=Latitude"
vlayer = QgsVectorLayer(uri, filename, "delimitedtext")
QgsProject.instance().addMapLayer(vlayer)
for filename in os.listdir(directory):
if filename.endswith(".csv"):
load_and_configure(filename)