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

class Betrachtungsobjekt
attributes
  id : Integer
  -- Reale Objektgröße gegeben in Millimetern (Länge, Breite, Höhe):
	extentX : Integer 
	extentY : Integer
	extentZ : Integer
end

-- Spezielle Typen von Betrachtungsobjekten:
class Handstueck < Betrachtungsobjekt end
class Bohrkern < Betrachtungsobjekt end
class Fossil < Handstueck end

class Scan3dModel
attributes
  uri : String
end

class Steckbrief
attributes
  uri : String
end

class PktObjekt
attributes
	id: Integer  -- im Shape des HLNUG das Attribut PROBE
	xCoord: Real
	yCoord: Real
	zCoord: Real
	crs: String
end

association Betrachtungsobjekt_PktObjekt between
	Betrachtungsobjekt[1] role bobj
	PktObjekt[0..1] role location
end

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

association Betrachtungsobjekt_Scan3dModel between 
	Betrachtungsobjekt[1] role bobj
	Scan3dModel[0..*] role scan
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 sizeHandstueck:
	self.extentX > 85  and self.extentX < 100 and
	self.extentY > 115 and self.extentY < 150

class Erdzeitalter
attributes
	zeitalter: String
end 
	
association Steckbrief_Zeitalter between
	Steckbrief[1] role profile
	Erdzeitalter[1..*] role age
end

constraints
context Erdzeitalter
-- Erzeitalter kann nur einen der in der nachstehenden (unvollständigen) 
-- Liste angegebenen Werte enthalten:
inv ageNameList: 
	Set{
	  'Praekambrium', 'Kambrium', 'Ordovizium', 'Silur', 'Devon', 'Karbon', 
	  'Perm', 'Trias', 'Jura', 'Tertiaer', 'Quartaer'} 
	  ->includes(zeitalter)
	
-- Jedes Handstück bezieht sich auf ein Erdzeitalter:
context Handstueck
inv handSampleHasAge: 
  self.profile.age->size() = 1

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

-----------------------------------------------------------------------------

class Geodienst
end

class WMS < Geodienst
end

class WFS < Geodienst
end

class Map
end
	
class Tag
end

class TagVerzeichnis
end

-- Klasse DI-Paar beinhaltet die Key-Value Paare, die im Steckbrief enthalten sein können
class DIPair
end

class KeyData < DIPair
end

class InputValue < DIPair
end


association Pkt_Geodienst between
	PktObjekt[0..*]
	Geodienst[1] role services
end	

association Map_Geodienst between
	Map[1]
	Geodienst[1..*] role mapping
end	

association Steckbrief_Tag between
	Steckbrief[1..*] role profile
	Tag[0..*] role tagging
end	

association Tag_TagVerzeichnis between
	Tag[0..*]
	TagVerzeichnis[1] role tagRegister
end	

association Steckbrief_DIPair between
	Steckbrief[1] role profile
	DIPair[1..*] role InputPairs
end	

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

constraints

context PktObjekt
-- x- und y-Koordinate müssen gesetzt sein:
inv xyCoordsSet:	
  self.xCoord.oclIsUndefined() = false and 
  self.yCoord.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

context Betrachtungsobjekt
inv extentsSet:
--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

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