Ich habe eine nicht georeferenzierte Vektorebene, die georeferenziert werden muss. Mit Rasterebenen ist die Aufgabe einfach und unkompliziert, aber ich habe keine Ahnung, was ich mit meiner Vektorebene tun soll. Ich habe ein paar Kontrollpunkte mit bekannten Koordinaten, die eine Grundlage für die Transformation bieten sollten. Angenommen, Punkte mit den IDs 1, 2 und 3 sollten die Koordinaten x1, y1 haben. x2, y2; x3, y3. Neben dem einfachen Verschieben kann es auch zu Rotations- und Skalentransformationen kommen.
Irgendwelche Ideen?
Antworten:
Verwenden Sie das qgsAffine-Plugin, um eine Vektorebene zu georeferenzieren.
Weitere Informationen finden Sie unter Wo finden Sie Qgsaffine im Menü?
quelle
Angesichts der Tatsache, dass Sie einige Kontrollpunkte haben, sollten Sie in der Lage sein, eine Affintransformation zu verwenden, um Ihre Vektordaten zu verschieben. Schauen Sie sich dieses Rezept an . Der Prozess ist ein zweiteiliger Prozess:
Wenn Sie Ihre Kontrollpunkte in eine CSV-Datei (alt_x, alt_y, neu_x, neu_y) einfügen, können Sie die R-Befehle aus dem Link einfach ausschneiden und einfügen, um den Koeffiziententeil zu lösen.
quelle
Ich empfehle das Vector Bender Plugin für QGIS. Ich habe es versucht und es funktioniert gut und ist benutzerfreundlich. Abhängig von der Anzahl der von Ihnen definierten Punktepaare haben Sie folgende Möglichkeiten:
Sie finden ein kurzes Video hier und ich rate Ihnen , die Vektor - Bender - Hilfe zu lesen , sobald Sie das Plugin installiert.
quelle
Mit der Veröffentlichung von GDAL 1.10 ist dies jetzt möglich.
Dazu wird eine grundlegende Transformation in ogr2ogr durchgeführt und die Kontrollpunkte im -gcp-Tag angegeben. http://www.gdal.org/ogr2ogr.html
Eine Anleitung finden Sie unter: http://gisforthought.com/georeferencing-vector-data-using-qgis-and-ogr2ogr/
quelle
Ich musste das einfach tun und tat es am Ende so:
gcps.points
DateiDas folgende Skript berechnet die affine Transformationsmatrix unter Verwendung der gespeicherten GCPs:
quelle
Sehen Sie sich meine Antwort auf das Zusammenfangen von zwei Polygonen an und probieren Sie den kostenlosen openjump aus.
Ich denke, dass seine affine Transformation viel benutzerfreundlicher ist als das affine qgis-Plugin.
quelle
Nach meinen Kommentaren zu Rayners Antwort kann GRASS v.transform, das über die Sextante-Toolbox ausgeführt werden kann, verwendet werden, um Transformationsparameter zu berechnen und auf eine Vektorebene anzuwenden, um eine affine Transformation durchzuführen. Es wird eine Textdatei mit Kontrollpunkten in dem hier gezeigten Format benötigt .
Es ist sehr einfach zu bedienen und funktioniert gut.
quelle
Einige der hier angegebenen Antworten sind für QGIS 3 nicht mehr verfügbar und / oder ermöglichen nur lineare Transformationen der georeferenzierten Vektordatei. Dies mag die Frage des OP beantworten, aber andere, die sich diesen Beitrag ansehen, möchten möglicherweise andere Transformationsoptionen für die Georeferenzierung von Vektordateien.
Probleme mit einigen Lösungen für die Georeferenzierung von Vektordateien:
Das qgsAffine-Plugin erlaubt nur lineare Transformationen. Dies bedeutet, dass die Vektordatei skaliert, gedreht und verschoben werden kann, die Vektordatei jedoch nicht gebogen oder verzogen werden kann. Der Georeferenzierer für Rasterdateien bietet mehr Optionen und ermöglicht eine Vielzahl von Transformationen, einschließlich Polynom zweiter Ordnung und Spline für dünne Platten. Außerdem scheint das qgsAffine-Plugin in QGIS 3 noch nicht verfügbar zu sein.
Das GRASS-Modul v.transform ähnelt dem qgsAffine-Plugin und ermöglicht nur lineare Transformationen.
Das Vector Bender-Plugin scheint eine gute Option zu sein, wurde jedoch noch nicht vollständig auf QGIS 3 portiert, ist also derzeit keine Option. Es sieht nicht mehr so aus, als würde es gepflegt.
Die Verwendung von ogr2ogr, wie in HeikkiVesantos Beitrag vorgeschlagen, ist eine gute Option. Sie können GCPs (Ground Control Points) verwenden und angeben, welche Art von Transformation Sie wünschen. Ich konnte nirgendwo eine Anleitung dazu finden, daher habe ich nachfolgend einige Anleitungen beigefügt:
Generieren Sie eine Reihe von GCP-Paaren, wobei ein Punkt die ursprüngliche Position in der ungeoreferenzierten Vektordatei und der andere Punkt die gewünschte Position in Ihrem georeferenzierten Arbeitsbereich ist.
Es gibt verschiedene Möglichkeiten, GCPs zu generieren. Ich habe das Georeferencer GDAL-Plugin in QGIS verwendet. Dies ist im Dropdown-Menü Raster verfügbar, nachdem es mit dem Plugin-Manager installiert wurde. Es funktioniert nur mit Rasterdateien, daher müssen Sie zuerst die Vektordatei in eine Rasterdatei konvertieren. Dies ist mit "Processing Toolbox: GDAL: Vektorkonvertierung: Rasterisieren (Vektor in Raster)" möglich. Stellen Sie die Auflösung auf eine Zahl ein, mit der Sie die Funktionen der Vektordatei weiterhin sehen können.
Der Georeferenzierer hat eine schöne Oberfläche, über die Sie viele GCP-Punkte hinzufügen können. Sie können auch verschiedene Transformationen testen und feststellen, welche am besten funktioniert. Und Sie können feststellen, ob einer Ihrer GCP-Punkte möglicherweise fehlerhaft ist, indem Sie sich die Residuen ansehen. Nachdem Sie alle Ihre GCP-Punkte hinzugefügt und überprüft haben, ob Ihnen die Ausgabe gefällt, können Sie die GCP-Datei aus dem Georeferenzierer exportieren, um sie für die Georeferenzierung der ursprünglichen Vektordatei zu verwenden.
Die GCP-Datei muss im folgenden Format geändert werden. Sie können so viele GCP-Punkte hinzufügen, wie Sie möchten. Nach jedem Punkt wird ein -gcp eingefügt und durch ein Leerzeichen getrennt. Ich habe dies mit über 800 GCP-Punkten durchgeführt und es hat großartig funktioniert.
Es gibt verschiedene Möglichkeiten, die GCP-Punkte in das richtige Format zu ändern. Ich habe sie als CSV-Datei in Excel importiert und eine Spalte erstellt, um für jeden Punkt das richtige Format auszugeben. Dann habe ich diese Spalte in TextEdit eingefügt und die Zeilenenden durch Leerzeichen ersetzt.
Die Vektordatei, die Sie georeferenzieren möchten, sollte mit demselben SRS in Ihren Arbeitsbereich importiert werden, den Sie für die endgültige georeferenzierte Datei benötigen. Dabei sollte es sich um dasselbe SRS wie Ihr Arbeitsbereich handeln. Wenn ursprünglich ein anderer SRS verwendet wurde, ist es möglicherweise ein langer Weg bis dahin, aber die Umwandlung verschiebt ihn an den richtigen Ort.
Greifen Sie auf ogr2ogr über "Processing Toolbox: GDAL: Vektorkonvertierung: Format konvertieren" zu. Auf diese Weise können Sie die zu georeferenzierende Vektordatei und Ihre Ausgabedatei auswählen. Fügen Sie im Feld "Zusätzliche Erstellungsoptionen" einen Befehl hinzu, der den gewünschten Transformationstyp und dann die Linie mit allen GCP-Punkten angibt.
Befehle für verschiedene Transformationstypen umfassen:
Der im Feld "Zusätzliche Erstellungsoptionen" hinzugefügte Code könnte beispielsweise folgendermaßen aussehen:
quelle