Chargement de plusieurs fichiers CSV dans QGIS 2.10

8

Comment puis-je charger plusieurs fichiers CSV dans QGIS avec Longitude / Latitude déjà inclus. J'ai téléchargé le plug-in "Load Them All", cependant, le résultat chargé a été converti en fichiers texte et ne peut pas être visualisé sur la carte. De l'aide? Existe-t-il des plug-ins disponibles qui peuvent charger plusieurs fichiers CSV qui fonctionneront correctement dans QGIS?

wgs84
la source
1
Vous pouvez demander cette fonctionnalité sur github.com/gacarrillor/loadthemall/issues Ouvrez simplement un nouveau numéro décrivant ce que vous aimeriez avoir. Ce serait bien de l'ajouter à Load Them All.
Germán Carrillo
En quoi les multiples fichiers csv sont-ils différents les uns des autres?
BillW

Réponses:

10

Vous pouvez utiliser le code suivant dans la console Python pour localiser vos fichiers csv dans un dossier spécifié et les charger en tant que fichiers de formes de points à l'aide de leurs champs de longitude / latitude. Le code suppose:

  • Le fichier csv est séparé par des virgules
  • Les noms des champs de longitude / latitude sont "x"et "y"respectivement
  • Le CRS des couches chargées sera en EPSG: 4326

Mais vous pouvez éditer ceci:

import glob, os

# Define path to  directory of your csv files
path_to_csv = "C:/Users/You/Desktop/csv folder/"  

# Set current directory to path of csv files
os.chdir(path_to_csv)  
# Find each .csv file and load them as vector layers
for fname in glob.glob("*.csv"):  
    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)

Dans la nouvelle version de QGIS, la commande a QgsMapLayerRegistry.instance().addMapLayer(lyr)été actualisée. La solution est toujours valable si nous remplaçons l'ancienne ligne par: QgsProject.instance().addMapLayer(lyr) Vous devez également supprimer ou commenter la deuxième lignefrom qgis.core import QgsMapLayerRegistry

La solution fonctionne parfaitement.

Joseph
la source
1
Merci à tous vos commentaires ... cela fonctionne vraiment, sauf celui enregistré en tant que fichiers .csvt.
wgs84
@ wgs84 - Très bienvenu, heureux que cela ait fonctionné :)
Joseph
1

Vous pourriez avoir besoin de fichiers csvt le long de vos fichiers CSV pour indiquer à QGIS où il doit trouver la géométrie.

Le plugin peut utiliser Add Vector layeren arrière-plan, pas Add delimited textce qui fait une supposition éclairée sur les colonnes de géométrie.

AndreJ
la source