Georeferenzraster in nicht horizontaler Ebene

8

Wir haben Rasterdaten, die aus (vertikalen) Wänden generiert werden. Wir möchten diese Daten in einer Postgis-Datenbank speichern und den Raumbezug "auf die genaueste Weise" codieren lassen.

Derzeit werden sie durch Missbrauch eines metrischen CRS gespeichert und die z-Koordinate der Wand als y und der Versatz von der linken Seite der Wand als x codiert. Dies ergibt ein lokales Referenzsystem, das für seinen Zweck funktioniert, aber den globalen Kontext verliert.

Für Vektordaten ist es einfach, jedem Scheitelpunkt eine 3D-Koordinate zu geben, um ihn im (globalen) Raum zu lokalisieren. Dies sollte basierend auf den Rasterdaten erstellt werden (verwenden Sie eine GIS-Benutzeroberfläche, um interessierende Bereiche über diesen Wänden zu digitalisieren).

Darüber hinaus können mehrere Wände nebeneinander angeordnet sein, und es sollte möglich sein, diese in diesem Kontext zu visualisieren (es reicht aus, wenn es nur funktioniert, wenn sie denselben Azimut haben).

Es gibt einige Ansätze, wie dies angegangen werden könnte:

Verwenden Sie ein benutzerdefiniertes CRS im vertikalen Raum, dessen Ursprung auf einer realen Koordinate basiert. Wo genau diese "Ursprungsreferenz" gespeichert werden würde, ist jedoch noch unklar.

  • Speichern Sie die Informationen im CRS (ist das möglich?) - Erfordert mehrere unterschiedliche CRS für jede Referenzebene.
  • Verwenden Sie einen Fremdschlüssel für eine Zeile (siehe rote Linien im Beispiel) - Aktuelle Situation, redundante Informationen (was ist, wenn die Länge der Zeile nicht der Breite des Rasters entspricht?)
  • Erstellen Sie ein 3D-Polygon als Referenzebene - Redundante Informationen, siehe oben
  • Erstellen Sie einen Ursprungspunkt auf der Linie, der in Kombination mit dem Azimut der Linie die Referenzebene sein kann. Würden verschiedene Wände dieselbe Referenzebene teilen?

Alle Ansätze scheinen irgendwie "Workarounds" zu sein und haben ihre Vorbehalte.

Die beiden folgenden Bilder zeigen eine Draufsicht auf die Situation und eine Komposition mehrerer Frontal-Rasterbilder. (Es ist in Ordnung, wenn sie einer einzelnen Referenzebene zugeordnet sind.)

Was ist der am besten geeignete Weg, um die vertikalen Rasterbilder in der Datenbank zu speichern, ohne den geografischen Kontext im horizontalen Raum und mit Höheninformationen zu verlieren?

Topview-Plan der Situation, rote Linien entsprechen der realen Position der Raster.

Eine Reihe von orthorektifizierten Rasterbildern, die roten Linien mit demselben Azimut entsprechen.

Matthias Kuhn
quelle
3
Was ist die Frage nochmal?
Nickves
Haben Sie daran gedacht, Ihre Daten in einem NetCDF-Format zu speichern? Ich habe in diesem Bereich nicht viel getan, aber es ist ein möglicher Weg, Sie können Ihre vertikalen Daten als zusätzliche Dimension speichern.
Yanes
1
Richtig, wir sind auf einer Q & A-Seite :) Frage formuliert. Obwohl wir in diesem Projekt noch alle Möglichkeiten offen haben (dh NetCDF wäre eine Möglichkeit), möchte ich nicht alle Vorteile einer Datenbank verlieren.
Matthias Kuhn

Antworten:

1

zweifelhaft, es ist die elegante Antwort, aber es klingt ähnlich wie etwas, das wir getan haben - wo wir mit gescannten Querschnitten begonnen haben (vertikale Raster, wie Ihre Wände). Wir haben die Bilder georeferenziert, wobei der Versatz von der linken Seite die x-Koordinate war und die Höhe des x-Schnitts y war. Diese Koordinaten befanden sich im selben CRS wie alle anderen Kartendaten für das Gebiet.

digitalisierte Polygone

Wir haben dann einfach die Raster digitalisiert und einen separaten Punktdatensatz eingefügt, um die tatsächlichen Start / Stopp-Ecken der Querschnitte anzuzeigen

digitalisierte Linien

Von dort aus kann ein kurzes Skript die Scheitelpunkte aus den Linien extrahieren. Mithilfe der Ecken können wir die Punkte für die Anzeige im 2D- oder 3D-Raum transponieren. (Beachten Sie in 2D, dass alle Punkte in der vertikalen Ebene übereinander gestapelt sind.)

3D-Punkte werden in 2D angezeigt

oder in einem 3D-Viewer -

Geben Sie hier die Bildbeschreibung ein

Obwohl wir diese nicht in einer Datenbank gespeichert haben, sollte das Konzept dasselbe sein.

Jetzt gibt es vielleicht einen großen Fehler in unserer Methode - also würde ich mich freuen (na ja, nicht wirklich), das auch zu hören. Bei Interesse könnte ich das klobige Skript teilen, mit dem wir die Daten transponiert haben.

flüssige Bewegung
quelle
Ich denke, das ist so ziemlich der Ansatz, den wir derzeit auch haben. Abgesehen von den Skripten, die zwar interessant klingen, aber bei dieser Frage geht es hauptsächlich um Datenspeicherung.
Matthias Kuhn
In diesem Fall war das vorherige CRS für das Untersuchungsgebiet in UTM. Wir haben das für die vertikalen Raster beibehalten. Natürlich können Sie vertikale Übertreibungen hinzufügen - Sie müssen dies nur bei der Umsetzung berücksichtigen.
Fluidmotion
1
Ich bin mir sicher, dass ich nicht mit genügend Metriken darüber nachdenke - um die z-Koordinate der Wand als x und den Versatz von der linken Seite der Wand als y zu kodieren - scheint das Gegenteil davon zu sein, wie wir sie gespeichert haben. Für meinen einfachen Verstand war es einfach, die Basis des Wandrasters genau dort zu platzieren, wo es auf der Karte sein sollte - und in 2D wäre es, als wäre es flach auf den Boden gefallen. Alles im selben CRS?
Fluidmotion
nein, das ist eigentlich ein Tippfehler in meiner Frage :)
Matthias Kuhn
Ich habe festgestellt, dass ich Ihre Frage nicht vollständig beantwortet habe. Ja, es befindet sich alles im selben CRS in der Nähe des Ursprungs (x: nahe 0 / y, ungefähr in der Höhe des Standorts). Um die Raster anstelle der Karte zu sehen, verwenden wir einfach "Auf Ebenenausdehnung zoomen". Das Schöne daran ist, dass im Druckkomponisten ein horizontales Gitter die Höhe angibt.
Matthias Kuhn