Ich weiß, meine Frage ähnelt einigen alten auf dieser Seite.
Ich habe viele CSV-Dateien (Geokoordinaten) zum Importieren in qgis (und zum anschließenden Konvertieren), und der übliche Weg ist nicht der beste (zu lange).
Ich habe fast 500 CSV-Dateien (wgs84-Koordinaten) und dies ist, was ich tun möchte:
- Importieren Sie alle CSV-Dateien gleichzeitig in QGIS
- Projizieren Sie sie
- Exportieren Sie sie (erneut) in CSV-Dateien, jedoch mit unterschiedlichen Koordinaten (Konvertierung in UTM33N).
Ich versuche zu verstehen, wie man die Python-Konsole benutzt, aber ich gehe nicht weiter :(
Kann mir jemand erklären, wie man es Schritt für Schritt erreicht?
Antworten:
Wenn Sie CSV-Dateien von der Python-Konsole in QGIS neu projizieren möchten, können Sie das folgende Skript verwenden. Alles, was Sie ändern müssten, sind die drei Pfade, die in den Kommentaren erwähnt werden.
Im Wesentlichen importiert das Skript Ihre CSV-Dateien als Shapefiles in QGIS (vorausgesetzt, Ihre geometrischen Felder heißen
X
undY
). Anschließend werden die Algorithmenqgis:reprojectlayer
undqgis:fieldcalculator
aus der Processing Toolbox verwendet , um die FelderX
undY
mit den neuen Koordinaten neu zu projizieren und zu aktualisieren . Anschließend werden diese in einem Ordner gespeichert und in einem von Ihnen angegebenen Pfad in CSV-Dateien konvertiert. Am Ende haben Sie also Shapefiles und CSV-Dateien in separaten Ordnern aktualisiert.Hoffe das hilft!
quelle
Eine schnelle Lösung zum Transformieren einer durch Leerzeichen getrennten Datei mit "lon lat" in WGS84 in UTM33N, aber Sie erhalten keine anderen Daten:
Das funktioniert und es behält die Reihenfolge der Daten bei, also vielleicht eine andere Schleife, die zB awk verwendet, um die beschreibenden Daten mit den Koordinaten zu kombinieren?
Bearbeiten. Aufgrund der unordentlichen Kommentare, die ich unten gemacht habe, werde ich die Antwort stattdessen hier bearbeiten.
Das folgende Skript sollte mehrere CSV-Dateien lesen und jeder Datei neue Koordinatenspalten hinzufügen.
Unter OSX müssen Sie die neueste (2009) Version von sed installieren und die erste, nicht kommentierte Zeile in der Schleife verwenden. Für Linux das erste auskommentieren und das zweite verwenden. Passen Sie das
-F " "
Trennzeichen entsprechend dem Format des Trennzeichens in Ihren CSV-Dateien an, z-F ","
. B. für durch Kommas getrennte. Beachten Sie auch, dass sich die Höhentransformation auf das Ellipsoid und nicht auf das Geoid bezieht. Stellen Sie daher sicher, dass Sie die Höhen entsprechend transformieren.quelle
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}
Ersetzen Sie / usr / local / sed durch nur sed, wenn Sie nicht unter OSX arbeiten. Dies ist nicht ideal, wenn Ihre CSV-Dateien durch Leerzeichen getrennt sind, wie in der obigen Zeile angenommen, aber es funktioniert. Wenn Sie Komma getrennt haben, wechseln Sie-F " "
zu-F ","
Die Verwendung von QGIS oder sogar OGR ist dafür übertrieben.
Verwenden Sie
pyproj
( https://pypi.python.org/pypi/pyproj ) in Kombination mit dem Python-CSV-Writer und einigen Standard-Bibliothekstricks. Sie müssen nichts anderes alspyproj
dafür installieren !quelle
pyproj
das Poster separat installiert werden muss oder bereits vorhanden ist.Du brauchst kein Python. Verwenden Sie einfach die Befehlszeile und ogr2ogr. In Ihrem Fall ist der Parameter -t_srs srs_def am wichtigsten.
Dies wird bereits in dieser Antwort auf Wie kann ich eine Excel-Datei mit x, y-Spalten in ein Shapefile konvertieren?
UPDATE Ich habe nicht die Zeit, Ihnen Ihren vollständigen Code zu schreiben. Das Problem wird jedoch sein, dass in Python etwas mehr Code benötigt wird, als Sie vielleicht denken.
Ihr Hauptproblem wird sein, dass das Arbeiten mit CSV-Dateien nicht so komfortabel ist wie das Verwenden von Shapefiles. Daher müssen Sie zuerst die CSV in eine Form konvertieren, die eine VRT-Datei benötigt. Dies wird im ersten Link erklärt. Hier müssen Sie ein Python-Skript schreiben, das Ihre Dateien durchläuft und automatisch die vrt-Dateien generiert.
Dies ist ein Skript, das ich selbst verwendet habe. Sie müssen testen, ob es für Sie funktioniert. Ich habe bereits die Konvertierung von WGS 84 auf UTM 33N aufgenommen
Sie müssen die Parameter für Feldname , src , x und y entsprechend Ihrer CSV-Datei anpassen .
UPDATE2
Nach einigem Überlegen frage ich mich, warum Sie QGIS überhaupt verwenden möchten. Sie können ein Python-Skript wie dieses verwenden , um Ihre Koordinaten direkt von WGS in UTM zu konvertieren. In diesem Fall handelt es sich um eine einfache offene CSV, die Koordinate liest, die Koordinate transformiert und in einer neuen Datei speichert.
quelle