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?
quelle
Antworten:
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.
Wir haben dann einfach die Raster digitalisiert und einen separaten Punktdatensatz eingefügt, um die tatsächlichen Start / Stopp-Ecken der Querschnitte anzuzeigen
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.)
oder in einem 3D-Viewer -
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.
quelle