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
  • BOM

BOM · Changes

Page history
Update BOM authored Nov 13, 2022 by Benno Schmidt's avatar Benno Schmidt
Hide whitespace changes
Inline Side-by-side
Showing with 84 additions and 76 deletions
+84 -76
  • BOM.md BOM.md +84 -76
  • No files found.
BOM.md
View page @ a4467055
![BOM](uploads/a1243262e673af6714c64ec99cc554ae/BOM.png)
![BOM](https://gitlab.fbg-hsbo.de/web3dscans/web3dscans1/blob/master/etc/UML-Modellierung/BOM.png)
Quellcode (USE-Modell; die SOIL-Testumgebung folgt demnächst...):
......@@ -16,56 +16,56 @@ model Web3dScans
-- Wesentliche Anwendungsobjekte sind:
-- Betrachtungsobjekt (das kann zunächst ein Handstück, Bohrkern oder Fossil
-- sein), der zugehörige 3D-Scan und der zugehörige Steckbrief sowie ein
-- Objekt mit punktförmiger Geometrie und einem thmatischen Attribut, das
-- eine ID zur Verknüpfung der Geometrie mit den anderen genannten zewntralen
-- Objekt mit punktförmiger Geometrie und einem thematischen Attribut, das
-- eine ID zur Verknüpfung der Geometrie mit den anderen genannten zentralen
-- Anwendungsobjekten enthält.
class Betrachtungsobjekt
class Betrachtungsobjekt -- Impl.: ExaminationObject
attributes
id : Integer
-- Reale Objektgröße gegeben in Millimetern (Länge, Breite, Höhe):
extentX : Integer
extentY : Integer
extentZ : Integer
groesseX : Integer
groesseY : Integer
groesseZ : Integer -- Impl.: sizeX, sizeY, sizeZ
end
-- Spezielle Typen von Betrachtungsobjekten:
class Handstueck < Betrachtungsobjekt end
class Bohrkern < Betrachtungsobjekt end
class Fossil < Handstueck end
class Handstueck < Betrachtungsobjekt end -- Impl.: HandSample
class Bohrkern < Betrachtungsobjekt end -- Impl.: CoreSample
class Fossil < Handstueck end -- Impl.: Fossil
class Scan3dModel
class SteinModel3d -- Impl.: RockModel3d
attributes
uri : String
end
class Steckbrief
class Steckbrief -- Impl.: Profile
attributes
uri : String
end
class PktObjekt
class PktObjekt -- Impl.: PointObject
attributes
id: Integer -- im Shape des HLNUG das Attribut PROBE
xCoord: Real
yCoord: Real
zCoord: Real
id: Integer -- im Shape des HLNUG das Attribut PROBE
xKoord: Real
yKoord: Real
zKoord: Real -- Impl.: sizeX, sizeY, sizeZ
crs: String
end
association Betrachtungsobjekt_PktObjekt between
Betrachtungsobjekt[1] role bobj
PktObjekt[0..1] role location
PktObjekt[0..1] role lokation
end
association Betrachtungsobjekt_Steckbrief between
Betrachtungsobjekt[1] role bobj
Steckbrief[0..1] role profile
Steckbrief[0..1] role steckbrief
end
association Betrachtungsobjekt_Scan3dModel between
Betrachtungsobjekt[1] role bobj
Scan3dModel[0..*] role scan
SteinModel3d[0..*] role smodell
end
-----------------------------------------------------------------------------
......@@ -85,95 +85,102 @@ context Handstueck
-- Als Handstück wird in der Geologie eine Gesteinsprobe und in der Minera-
-- logie eine Mineralstufe in "Handgröße" bezeichnet, was etwa einer Größe
-- zwischen 8,5 cm × 11,5 cm und 10 cm × 15 cm entspricht.
inv sizeHandstueck:
self.extentX > 85 and self.extentX < 100 and
self.extentY > 115 and self.extentY < 150
inv groesseHandstueck:
self.groesseX > 85 and self.groesseX < 100 and
self.groesseY > 115 and self.groesseY < 150
class Erdzeitalter
class Erdzeitalter < Tag -- Impl.: GeologicalAge
attributes
zeitalter: String
name: String
end
association Steckbrief_Zeitalter between
Steckbrief[1] role profile
Erdzeitalter[1..*] role age
Steckbrief[1] role steckbrief
Erdzeitalter[1..*] role zeitalter
end
constraints
context Erdzeitalter
-- Erzeitalter kann nur einen der in der nachstehenden (unvollständigen)
-- Liste angegebenen Werte enthalten:
inv ageNameList:
inv gueltigesZeitalter:
Set{
'Praekambrium', 'Kambrium', 'Ordovizium', 'Silur', 'Devon', 'Karbon',
'Perm', 'Trias', 'Jura', 'Tertiaer', 'Quartaer'}
->includes(zeitalter)
->includes(name)
-- Jedes Handstück bezieht sich auf ein Erdzeitalter:
context Handstueck
inv handSampleHasAge:
self.profile.age->size() = 1
inv gesetztesHandstueckAlter:
self.steckbrief.zeitalter->size() = 1
-- Bohrkerne können mehr als ein Erdzeitalter abdecken:
context Bohrkern
inv coreSampleHasAges:
let ages = self.profile.age in
inv gesetzteBohrkernAlter:
let ages = self.steckbrief.zeitalter in
ages->size() >= 1
-----------------------------------------------------------------------------
-- Einbindung des Punkt-Layers in die Kartenkomponente:
class Geodienst
class PktObjektLayer -- Impl.: PointObjectLayer
end
class WMS < Geodienst
end
association PktObjekt_PktObjektLayer between
PktObjekt[0..*] role punkt
PktObjektLayer[1] role layer
end
class WFS < Geodienst
end
-- Der Punkt-Layer wird über einen geeigneten Dienst in die interaktive Karte
-- der Anwendung eingebunden, z. B. über einen OGC-WMS mit GetFeatureInfo-
-- Operation oder einen OGC-WFS.
class Map
end
class Tag
class Geodienst -- Impl.: GeoWebService
end
class TagVerzeichnis
end
class WMS < Geodienst end
class WFS < Geodienst end
-- Klasse DI-Paar beinhaltet die Key-Value Paare, die im Steckbrief enthalten sein können
class DIPair
association PktObjektLayer_Geodienst between
PktObjektLayer[1] role layer
Geodienst[1] role layer
end
class KeyData < DIPair
class Karte -- Impl.: Map
end
class InputValue < DIPair
end
association Karte_Geodienst between
Karte[1] role map
Geodienst[1] role service
end
-----------------------------------------------------------------------------
-- Steckbrief-Konzept:
association Pkt_Geodienst between
PktObjekt[0..*]
Geodienst[1] role services
end
class Tag
attributes
name: String
end
association Map_Geodienst between
Map[1]
Geodienst[1..*] role mapping
end
class TagVerzeichnis -- Impl.: TagDirectory
end
association Steckbrief_Tag between
Steckbrief[1..*] role profile
Tag[0..*] role tagging
-- Klasse DI-Paar beinhaltet die Tag/Inhalts-Paare (Key-Value-Paare), die im
-- Steckbrief enthalten sein können.
class TIPaar -- Impl.: TIPair
attributes
tag: Tag
inhalt: String -- Impl.: content
end
association Steckbrief_TIPaar between
Steckbrief[1] role steckbrief
TIPaar[1..*] role inhalt
end
association Tag_TagVerzeichnis between
Tag[0..*]
TagVerzeichnis[1] role tagRegister
end
association Steckbrief_DIPair between
Steckbrief[1] role profile
DIPair[1..*] role InputPairs
TagVerzeichnis[1] role register
end
-----------------------------------------------------------------------------
......@@ -183,22 +190,23 @@ constraints
context PktObjekt
-- x- und y-Koordinate müssen gesetzt sein:
inv xyCoordsSet:
self.xCoord.oclIsUndefined() = false and
self.yCoord.oclIsUndefined() = false
inv gesetzteXYKoordinaten:
self.xKoord.oclIsUndefined() = false and
self.yKoord.oclIsUndefined() = false
-- Falls z gesetzt ist, muss der Wert unterhalb der Geländeoberfläche
-- liegen (Ausnahmen?):
inv zCoordBelowGround:
self.zCoord.oclIsUndefined() = true or
self.zCoord < 0 -- wäre noch zu prüfen/vereinbaren... -> ToDo
inv ZKoordUnterGrund:
self.zKoord.oclIsUndefined() = true or
self.zKoord < 0 -- wäre noch zu prüfen/vereinbaren... -> ToDo
context Betrachtungsobjekt
inv extentsSet:
inv definierteObjektGroesse:
--Koordinatendimension == 3
-- Maße für das Betrachtungsobjekt müssen gesetzt sein
self.extentX.oclIsUndefined() = false and
self.extentY.oclIsUndefined() = false and
self.extentZ.oclIsUndefined() = false
self.groesseX.oclIsUndefined() = false and
self.groesseY.oclIsUndefined() = false and
self.groesseZ.oclIsUndefined() = false
-- eof
</pre>
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