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
This is an old version of this page. You can view the most recent version or browse the 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