Laden mehrerer CSV-Dateien in QGIS 2.10

8

Wie kann ich mehrere CSV-Dateien in QGIS laden, in denen Longitude / Latitude bereits enthalten ist? Ich habe das Plug-In "Load Them All" heruntergeladen. Das geladene Ergebnis wurde jedoch als Textdatei konvertiert und kann nicht auf der Kartenanzeige angezeigt werden. Irgendeine Hilfe? Gibt es Plug-Ins, mit denen mehrere CSV-Dateien geladen werden können, die in QGIS einwandfrei funktionieren?

wgs84
quelle
1
Sie können diese Funktion unter github.com/gacarrillor/loadthemall/issues anfordern. Öffnen Sie einfach eine neue Ausgabe, in der beschrieben wird, was Sie gerne hätten. Es wäre schön, es zu Load Them All hinzuzufügen.
Germán Carrillo
Wie unterscheiden sich die mehreren CSV-Dateien voneinander?
BillW

Antworten:

10

Sie können den folgenden Code in der Python-Konsole verwenden , um Ihre CSV-Dateien in einem bestimmten Ordner zu suchen und sie mithilfe ihrer Längen- / Breitengradfelder als Punkt-Shapefiles zu laden. Der Code geht davon aus:

  • Die CSV-Datei ist durch Kommas getrennt
  • Die Länge / Breite Feldnamen sind "x"und "y"jeweils
  • Das CRS der geladenen Schichten wird in EPSG: 4326 angegeben

Sie können dies jedoch bearbeiten:

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)

In der neuen Version von QGIS wurde der Befehl nicht mehr unterstützt QgsMapLayerRegistry.instance().addMapLayer(lyr). Die Lösung ist weiterhin gültig, wenn wir die vorherige Zeile durch Folgendes ersetzen: QgsProject.instance().addMapLayer(lyr) Außerdem müssen Sie die zweite Zeile löschen oder kommentierenfrom qgis.core import QgsMapLayerRegistry

Die Lösung funktioniert perfekt.

Joseph
quelle
1
Dank all Ihrer Kommentare ... funktioniert es wirklich, bis auf die als .csvt-Dateien gespeicherten.
wgs84
@ wgs84 - Sehr willkommen, froh, dass es funktioniert hat :)
Joseph
1

Möglicherweise benötigen Sie CSVT-Dateien in Ihren CSV-Dateien, um QGIS mitzuteilen, wo sich die Geometrie befinden soll.

Das Plugin wird möglicherweise Add Vector layerim Hintergrund verwendet, Add delimited textwas keine fundierten Vermutungen zu den Geometriespalten anstellt.

AndreJ
quelle