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

Last edited by Benno Schmidt Aug 27, 2023
Page history

CrossReferencer

3.7 Cross-Referencer

3.7.1 Verknüpfung zwischen Punktobjekten, 3D-Scans und Steckbriefen

Autor: Benno Schmidt

Innerhalb der Anwendung ist eine Verknüpfung zwischen den Punkt-Features aus 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, 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 (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).

3.7.2 Umsetzung

Autor: Thomas Varchmin

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 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:

{
  "items": [
    { 
      "probe": <Proben-ID>, 
      "steckbrief": <Name der Steckbrief-Datei>, 
      "scan3d": <Name der Handstück-Datei>
    },
    ...
  ]
}

Dabei müssen alle Werte - also , , <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 (!).

Beispiel:

{
  "items": [
    {
      "probe": "921",
      "steckbrief": "steckbrief_921",
      "scan3d": "Handstueck_CS3_3D_921"
    },
    {
      "probe": "5761",
      "steckbrief": "steckbrief_5761",
      "scan3d": "Handstueck_CS3_3D_5761"
    },
    {
      "probe": "38094",
      "steckbrief": "steckbrief_38094",
      "scan3d": "Handstueck_CS3_3D_38094"
    }
  ]
}

In der JavaScript-Datei CrossReferencer.js sind die benötigten Funktionalitäten, die sämtlichst Teil der dort definierten Klasse CrossReferencer sind, wie folgt abgelegt:

Name der Funktion Wirkung der Funktion
readJSONFile(<rel. Pfad>) JSON-File als JavaScript-Objekt einlesen; <rel. Pfad> = der relative Pfad zum JSON-File bezogen auf Hauptverzeichnis; derzeit einfach nur Dateiname XReferencer.json, da in Hauptverzeichnis; Hinweis: das eingeladene JavaScript-Objekt wird als static Variable crossRefJSON der Klasse CrossReferencer abgespeichert, kann also mit this.xRefJSON verwendet werden.
getAllByProbe() Hole aus eingeladenem JSON-File CrossReferencer.json alle Einträge, deren Feld probe den Wert hat und gebe diese als Array von JavaScript-Objekten zurück. WICHTIG: In darauf aufbauenden Funktionen wird davon ausgegangen, dass genau ein JavaScript-Objekt gefunden wurde! Die Probe-ID sollte also eindeutig in dem JSON-File sein!
scan3d() Nutzt "docPathScan3d" und "getAllByProbe", um für Dokumentpfad zum passenden 3D-Scan zurückzugeben; wenn "getAllByProbe" leeres Array ergibt, wird Default-Pfad zurückgegeben
docPathScan3d() Erstellt Dokumentpfad zum 3d-Scan
steckbrief() wie "scan3d", hier für Steckbrief
docPath() wie "docPathScan3d", hier für Steckbrief

(Zurück zum Inhalt des Endberichts)

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