Mehr

Spiegeln von Layern in QGIS?


Ich würde gerne wissen, ob es eine Möglichkeit gibt, Layer in QGIS zu spiegeln. Mein aktuelles Projekt ist etwas schwer zu erklären… Ich grabe das Innere eines großen Topfes aus und am Ende habe ich eine Reihe von Plänen, die den aufeinanderfolgenden Schichten entsprechen, die ich während der Ausgrabung freilege. Aus praktischen Gründen muss ich diese Arbeit jedoch verkehrt herum ausführen (d. h. der Aushub begann vom Boden des Topfes).

Alle meine Datensätze werden später in QGIS bearbeitet. Um sie für andere verständlicher zu machen, muss ich sie also rückgängig machen. Sie können nicht nur ihre Reihenfolge umkehren, sondern sie auch horizontal spiegeln, um ein gespiegeltes Bild des Plans jeder Ebene zu erhalten.

Ich weiß, dass ich dies mit Bildverarbeitungssoftware tun könnte, aber ich habe mich gefragt, ob es eine Möglichkeit gibt, dies in der QGIS-Umgebung zu tun - dies würde mir wahrscheinlich Zeit bei der Bildverarbeitung sparen und den Workflow optimieren.

Hat jemand eine Idee dazu?


Ja, Sie können Layer (oder einzelne Features) spiegeln. Dafür braucht man QGIS >= 2.10. Es ist nicht notwendig, die Eingabedaten tatsächlich zu ändern, sondern nur die Art und Weise, wie sie dargestellt werden. Dies geschieht mit Ebeneneffekten, wie hier für Alaska gezeigt:


Wie Sie sagen, können Sie dies in einer Bildverarbeitungssoftware tun, aber wenn Sie dies in QGIS für einen reibungslosen Workflow tun möchten (vielleicht mit einem Skript oder Erstellen eines Verarbeitungsmodells), können Sie Ihre Bilder mit der Grass-Funktion r.flip spiegeln . Dies ist jedoch in Grass 7 so, dass Sie es installieren müssen, da es in QGIS noch nicht Standard ist.

Außerdem gibt es das Rasterorientierungswerkzeug von SAGA, das Optionen zum Spiegeln, Spiegeln und Invertieren bietet. Die Dokumentation scheint dafür spärlich zu sein, aber ein schnelles Experiment zeigt, dass 'Flip' das Bild vertikal kippt, 'Mirror' das Bild horizontal kippt, aber Invertieren ein 'Negativ' des Bildes macht (also nicht das, was Sie wollen, vermute ich - aber Flip und Spiegel sehen für Ihre Verwendung vielversprechend aus).

EDIT (zu Kommentaren): Um Vektordaten zu spiegeln, zu drehen oder auf andere Weise zu "gummierten" zu verwenden, benötigen Sie affine Werkzeuge. QGIS hat dafür eine Reihe von Werkzeugen. Es gibt ein paar Plugins ('Affin' und 'Vektorbieger') und Gras hatv.transformieren. Sie müssen Ihre Transformationsmatrix für Affine oder v.transform berechnen. Siehe diesen Beitrag für ersteres. Wenn Sie mit Rubber-Sheet-Rastern sehr vertraut sind (und zu faul sind, Transformationsmatrizen zu berechnen), verwenden Sie alternativ dieVektorbiegerPlugin - obwohl ich denke, es wäre schwieriger, Ihre Spiegellinien für diesen speziellen Anwendungsfall auszuarbeiten (sonst ist es brillant).

Verwenden des affinen Plugins und einer Transformationsmatrix von
1,0,0
0,-1,0

Ich bekomme folgendes (blau = vorher, gelb = nach):

Die Matrix hier dreht sich tatsächlich um die Y-Achse, sodass Sie auch eine laterale Transformation benötigen, die der Nord-Süd-Ausdehnung Ihrer Daten entspricht, um sie "an der richtigen Stelle" zu drehen. In meinem Fall wäre meine echte Matrix, die auf diesem speziellen Shapefile basiert, also
1,0,0
0,-1,964530.15

(d.h. ich kippe auf der Y-Achse nach unten und verschiebe dann die Daten wieder nach oben)

EDIT #2 (Ein nachträglicher Gedanke):
Wenn Sie einen Batch-Prozess durchführen, können Sie den Umfang einfach über GDAL erhalten und die Erstellung der Transformationsmatrix automatisieren. Wenn Sie jedoch einen halbmanuellen Prozess durchführen, können Sie in Ihrem Anwendungsfall die Dinge vereinfachen, indem Sie ein einfaches Bounding-Box-Polygon mit den Daten jedes Layers verbinden. Auf diese Weise bleibt Ihre Transformationsmatrix immer gleich, da sich der Gesamtumfang Ihrer Daten immer innerhalb Ihres Begrenzungsrahmens befindet, unabhängig davon, was Sie tatsächlich in der Ebene digitalisieren.


Schau das Video: What are virtual fields in QGIS? burdGIS (Oktober 2021).