Skip to content

IFCTerrain Service

Schilling, Sebastian edited this page Jul 7, 2022 · 3 revisions

IFCTerrain Service (Port:7209)

Kern der Anwendung ist der IFCTerrainCommand Converter des GitHub Projektes City2BIM. Mit diesem lassen sich Gelände in verschiedenen Ausgangsformaten (z.B. DXF, LandXML, ...) nach IFC konvertieren. Der Converter ist in einem Docker Image zusammen mit einer Java-basierten REST API verpackt. Dazu sind in dem Alpine Image sowohl OpenJDK als auch Mono installiert. Mono ermöglicht es, .NET-basierte Software plattformunabhängig zu verwenden. Verknüpft ist die Anwendung mit einem MinIO Object Storage, von welchem die Quelldateien gelesen werden und in den die konvertierten IFC-Dateien geschrieben werden.

Funktionsweise

[POST] /terraintoifc/converter/bucket/{bucket}

  • über REST-Schnittstelle werden der Bucket des MinIO Object Storage sowie die Konfigurationen für die Konvertierung als JSON eingegeben
  • alle folgenden Dateien werden intern im Ordner app/files gespeichert
  • JSON wird über ein Java Objekt eingelesen und im Container als *_configs.json-Datei gespeichert
  • aus Configs wird Quelldateiname gelesen und im angegeben Bucket danach gesucht -> Datei wird in Container kopiert
  • interne Dateipfade werden gesetzt
  • mit Befehl mono IFCTerrainCommand.exe *_configs.json wird Konvertierung gestartet
  • generierte IFC-Datei und Logfile werden zunächst im Container gespeichert, bevor sie in das Bucket hochgeladen werden
  • zum Schluss werden alle Datein im Container gelöscht

Anmerkung zu den Configs:

  • filePath und logFilePath können bei der Eingabe weggelassen werden, da die Pfade im Container intern gesetzt werden. Genauso sollte der destFileName nur den Namen der Datei statt des Dateipfades enthalten.
  • Bei fileType sind sowohl Strings als auch deren kompatible Integer Werte möglich. (siehe Tabelle)
Strings Integer
DXF 0
LandXML 1
CityGML 2
Grafbat 3
PostGIS 4
Grid 5
REB 6
  • nicht alle Einstellungen werden für jede Konvertierung benötigt (siehe IFCTerrain Wiki)

Configs-JSON (Bsp. alle möglichen Einstellungen ohne filePath und logFilePath):

{
  "fileName": "Baugrube_dgm.dxf",
  "fileType": 0,
  "destFileName": "Baugrube.ifc",
  "outIFCType": 1,
  "outFileType": 0,
  "verbosityLevel": 4,
  "calculateTin": false,
  "recalculateTin": false,
  "siteName": "Site with Terrain",
  "projectName": "Project Titel [Placeholder]",
  "editorsFamilyName": "Family name [Placeholder]",
  "editorsGivenName": "Given name [Placeholder]",
  "editorsOrganisationName": "Organisation [Placeholder]",
  "exportMetadataFile": false,
  "outIfcPropertySet": false,
  "exportMetadataDin91391": false,
  "exportMetadataDin18740": false,
  "is3D": true,
  "minDist": 1.0,
  "surfaceType": 2,
  "geoElement": false,
  "logeoref": 30,
  "customOrigin": false,
  "xOrigin": 0.0,
  "yOrigin": 0.0,
  "zOrigin": 0.0,
  "trueNorth": 0.0,
  "scale": 0.0,
  "crsName": 0,
  "crsDescription": null,
  "geodeticDatum": null,
  "verticalDatum": null,
  "projectionName": null,
  "projectionZone": null,
  "layer": "Seeboden",
  "isTin": true,
  "horizon": 0,
  "gridSize": 0,
  "bBox": false,
  "bbNorth": 0.0,
  "bbEast": 0.0,
  "bbSouth": 0.0,
  "bbWest": 0.0,
  "onlyHorizon": false,
  "horizonFilter": 0,
  "onlyTypes": false,
  "ignPos": false,
  "ignHeight": false,
  "breakline_layer": null,
  "breakline": false,
  "host": null,
  "port": 0,
  "user": null,
  "password": null,
  "database": null,
  "schema": null,
  "tin_table": null,
  "tin_column": null,
  "tinid_column": null,
  "tin_id": 0,
  "breakline_table": null,
  "breakline_column": null,
  "breakline_tin_id": null
}

weitere Erklährungen zu den einzelnen Einstellungen siehe IFCTerrain Wiki