Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
W
web3dscans1
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 17
    • Issues 17
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Web3DScans
  • web3dscans1
  • Wiki
  • CrossReferencer

CrossReferencer · Changes

Page history
Update CrossReferencer authored Aug 27, 2023 by Benno Schmidt's avatar Benno Schmidt
Hide whitespace changes
Inline Side-by-side
Showing with 42 additions and 21 deletions
+42 -21
  • CrossReferencer.md CrossReferencer.md +42 -21
  • No files found.
CrossReferencer.md
View page @ 72b9696e
### Idee: ### Verknüpfung zwischen Punktobjekten, 3D-Scans und Steckbriefen
Bei Klick auf ein Kartensymbol, das den Fundort einer Probe repräsentiert, muss der passende Steckbrief und das
passende 3D-Modell geladen werden.
Schaffe also eine Verbindung zwischen der Kartenposition/Symbol, dem Steckbrief und dem 3D-Modell einer Probe.
### Umsetzung: Innerhalb der Anwendung ist eine Verknüpfung zwischen den Punkt-Features aus
Die Kartenposition wird durch die <Proben-ID> repräsentiert, welche in dem Shape-File enthalten ist, das die der Bohrdatenbank des HLNUG (siehe dazu 1.1.6) und den Steckbriefen sowie den Modelldateien der 3D-Scans herzustellen. Klickt der/die Anwender:in z. B. in der Kartendarstellung auf ein Punktsymbol, das den Fundort einer Probe repräsentiert,
Kartenposition enthält; der Steckbrief und das 3D-Modell jeweils durch ihre Dateinamen. Die Verbindung dieser so ist das zugehörige Steckbrief-Objekt zu ermitteln, um diesen gemeinsam mit dem passenden 3D-Modell anzuzeigen. Die Verknüpfung ist nicht nur unidirektional
Informationen wird in dem JSON-Dokument CrossReferencer.json gespeichert, welches folgende Struktur aufweist: (Punkt -> Steckbrief) vorzunehmen, denn die in der Anforderungsanalyse benannten
User-Storys beinhalten auch den Fall, dass z. B. nach Objekten (d. h. letztlich
Steckbriefen) gesucht wird und der zugehörige Punkt in der Karte grafisch
hervorgehoben werden soll.
An dieser Stelle ergaben sich die beiden folgenden Umsetzungsmöglichkeiten:
1. In der Shapedatei mit der Information aus der Bohrdatenbank wird für jede Punktgeometrie ein Attribut ergänzt, das den Namen der systeminternen Steckbrief-Datei enthält.
2. Es wird eine Tabelle vorgehalten, die tupelweise die Information zu den Punkt-IDs der Shapedatei, Steckbrief-ID und 3D-Scandatei enthält.
Ansatz 1 wurde verworfen, da er den erheblichen Nachteil hat, dass im Falle einer Aktualisierung der Shapedatei durch das HLNUG die Ergänzungen nachzuführen sind.
Auch würde diese - nur auf den ersten Blick naheliegende - Lösung nur eine
unidirektionale Verknüpfung realisieren. Ansatz 2 bietet also den Vorteil, dass die
Shapedatei im laufenden Daten ausgetauscht werden kann, ohne dass die benötigte Information verloren geht (insofern die Punkt-IDs sich nicht ändern). Für große
Objektanzahlen ist für Ansatz 2 allerdings die sich ergebende Rechenlaufzeit zu
beachten! Hier wird eine geeignete Datenstruktur auszubauen sein (z. B. Sortieren
der Tabelle und Suche in Array o. ä., unter Umständen ist aber auch die Ablage in
einer Datenbank zu erwägen).
### Umsetzung
Der im Rahmen des Projektes implementierte *Cross-Referencer* setzt den oben beschriebenen Ansatz 2 um. Er wurde zunächst in Form einer einfachen
Dateistruktur implementiert, was bei der derzeitigen Objektmenge zu keinen
Laufzeitproblemen führte.
Die Kartenposition wird im Weiteren durch die <Proben-ID> repräsentiert, welche in dem Shape-File enthalten ist, das die Kartenposition enthält; der Steckbrief und die Datei des 3D-Scans jeweils durch ihre Dateinamen. Die Verbindung dieser
Informationen wird innerhalb der Anwendung in einem JSON-Dokument namens *CrossReferencer.json* gespeichert, welches folgende Struktur aufweist:
Struktur: Struktur:
{ {
"items": [ "items": [
{ {
"probe": "Proben-ID", "probe": <Proben-ID>,
"steckbrief": "Name der Steckbrief-Datei", "steckbrief": <Name der Steckbrief-Datei>,
"scan3d": "Name der Handstück-Datei" "scan3d": <Name der Handstück-Datei>
}, },
... ...
] ]
} }
Dabei müssen alle Werte - also <Proben-ID>, <Name der Steckbrief-Datei>, <Name der Handstück-Datei> - als Dabei müssen alle Werte - also <Proben-ID>, <Name der Steckbrief-Datei>, <Name der Handstück-Datei> - als Zeichenketten, *ohne* Angabe der Datei-Extension, in doppelten Hochkommata eingetragen werden. Bemerkung: die "Proben-ID" in der Shapedatei kann auch Buchstaben enthalten, ist also nicht numerisch (!).
Strings, ohne File-Extension, in doppelten Hochkommata eingetragen werden. Bemerkung: die "Proben-ID" in dem Shape-File kann auch Buchstaben enthalten (!)
Beispiel: Beispiel:
...@@ -30,24 +51,24 @@ Beispiel: ...@@ -30,24 +51,24 @@ Beispiel:
"items": [ "items": [
{ {
"probe": "921", "probe": "921",
"steckbrief": "steckbrief", "steckbrief": "steckbrief_921",
"scan3d": "Handstueck_CS3_3D" "scan3d": "Handstueck_CS3_3D_921"
}, },
{ {
"probe": "5761", "probe": "5761",
"steckbrief": "steckbrief2", "steckbrief": "steckbrief_5761",
"scan3d": "Astronaut" "scan3d": "Handstueck_CS3_3D_5761"
}, },
{ {
"probe": "38094", "probe": "38094",
"steckbrief": "steckbrief", "steckbrief": "steckbrief_38094",
"scan3d": "Handstueck_CS3_3D_old" "scan3d": "Handstueck_CS3_3D_38094"
} }
] ]
} }
In dem JavaScript-File CrossReferencer.js sind die benötigten Funktionalitäten wie folgt abgelegt, die alle Teil der In der JavaScript-Datei *CrossReferencer.js* sind die benötigten Funktionalitäten,
dort definierten Klasse CrossReferencer sind: die sämtlichst Teil der dort definierten Klasse <code>CrossReferencer</code> sind, wie folgt abgelegt:
| Name der Funktion | Wirkung der Funktion | | Name der Funktion | Wirkung der Funktion |
| ------ | ------ | | ------ | ------ |
......
Clone repository
  • 3.3 3D Viewer
  • 3D Darstellungsparameter
  • 3D Formate
  • 3D Viewer Komponente
  • 3D Viewer
  • Anzeigefenster
  • Arbeitsumgebung
  • Aufgabenbeschreibung
  • BOM
  • Bohrprofil Anzeige
  • CrossReferencer
  • Desktop und mobile Version
  • Endbericht
  • Generierung der 3D Modelle
  • Geodatengrundlage beim HLNUG
View All Pages