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

Last edited by Benno Schmidt Nov 13, 2022
Page history

BOM

BOM

Quellcode (USE-Modell; die SOIL-Testumgebung folgt demnächst...):

-----------------------------------------------------------------------------
-- UML/OCL-Modellierung für das Projekt "Web3dScans"
-- Lehrveranstaltung "Datenmodellierung für raumbezogene Fachanwendungen" 
-- des Masterstudiengangs Geoinformatik der Hochschule Bochum im SoSe 2022
-- Ursprünglich angelegt von: Sofia Segers
-- Weiterentwickelt im GI-Projekt des WiSe 2022/23

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 thematischen Attribut, das 
-- eine ID zur Verknüpfung der Geometrie mit den anderen genannten zentralen
-- Anwendungsobjekten enthält.

class Betrachtungsobjekt   -- Impl.: ExaminationObject
attributes
  id : Integer
  -- Reale Objektgröße gegeben in Millimetern (Länge, Breite, Höhe):
	groesseX : Integer  
	groesseY : Integer  
	groesseZ : Integer  -- Impl.: sizeX, sizeY, sizeZ
end

-- Spezielle Typen von Betrachtungsobjekten:
class Handstueck < Betrachtungsobjekt end   -- Impl.: HandSample
class Bohrkern < Betrachtungsobjekt end     -- Impl.: CoreSample 
class Fossil < Handstueck end               -- Impl.: Fossil 

class SteinModel3d   -- Impl.: RockModel3d
attributes
  uri : String
end

class Steckbrief   -- Impl.: Profile 
attributes
  uri : String
end

class PktObjekt   -- Impl.: PointObject
attributes
	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 lokation
end

association Betrachtungsobjekt_Steckbrief between
	Betrachtungsobjekt[1] role bobj
	Steckbrief[0..1] role steckbrief
end

association Betrachtungsobjekt_Scan3dModel between 
	Betrachtungsobjekt[1] role bobj
	SteinModel3d[0..*] role smodell
end	

-----------------------------------------------------------------------------
-- Einige grundlegende fachliche Konzepte und Constraints der Anwendung:

constraints

-- Alle Betrachtungsobjekte und Punktobjekte haben eine eindeutige ID:
context Betrachtungsobjekt
inv uniqueID:
	Betrachtungsobjekt.allInstances -> isUnique(id)
context PktObjekt
inv uniqueID:
	PktObjekt.allInstances -> isUnique(id)
	
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 groesseHandstueck:
	self.groesseX > 85  and self.groesseX < 100 and
	self.groesseY > 115 and self.groesseY < 150

class Erdzeitalter < Tag   -- Impl.: GeologicalAge
attributes
	name: String
end 
	
association Steckbrief_Zeitalter between
	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 gueltigesZeitalter: 
	Set{
	  'Praekambrium', 'Kambrium', 'Ordovizium', 'Silur', 'Devon', 'Karbon', 
	  'Perm', 'Trias', 'Jura', 'Tertiaer', 'Quartaer'} 
	  ->includes(name)
	
-- Jedes Handstück bezieht sich auf ein Erdzeitalter:
context Handstueck
inv gesetztesHandstueckAlter: 
  self.steckbrief.zeitalter->size() = 1

-- Bohrkerne können mehr als ein Erdzeitalter abdecken:
context Bohrkern
inv gesetzteBohrkernAlter: 
  let ages = self.steckbrief.zeitalter in 
    ages->size() >= 1 

-----------------------------------------------------------------------------
-- Einbindung des Punkt-Layers in die Kartenkomponente:

class PktObjektLayer   -- Impl.: PointObjectLayer
end

association PktObjekt_PktObjektLayer between
	PktObjekt[0..*] role punkt
  PktObjektLayer[1] role layer
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 Geodienst   -- Impl.: GeoWebService
end

class WMS < Geodienst end
class WFS < Geodienst end

association PktObjektLayer_Geodienst between
	PktObjektLayer[1] role layer
  Geodienst[1] role layer
end

class Karte   -- Impl.: Map
end

association Karte_Geodienst between
	Karte[1] role map
	Geodienst[1] role service
end	

-----------------------------------------------------------------------------
-- Steckbrief-Konzept:

class Tag
attributes
	name: String
end

class TagVerzeichnis   -- Impl.: TagDirectory
end

-- 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 register
end	

-----------------------------------------------------------------------------
-- Weitere spezielle Constraints:

constraints

context PktObjekt
-- x- und y-Koordinate müssen gesetzt sein:
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 ZKoordUnterGrund:	
  self.zKoord.oclIsUndefined() = true or 
  self.zKoord < 0  -- wäre noch zu prüfen/vereinbaren... -> ToDo

context Betrachtungsobjekt
inv definierteObjektGroesse:
--Koordinatendimension == 3
-- Maße für das Betrachtungsobjekt müssen gesetzt sein
  self.groesseX.oclIsUndefined() = false and 
  self.groesseY.oclIsUndefined() = false and 
  self.groesseZ.oclIsUndefined() = false

-- eof

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