Um die Abgabe der Seevermessungsdaten zu optimieren, haben wir in der BSH-Seevermessung einen Workflow zum Export der Daten erstellt. Hierfür wird an die JSON-Automatisierungsschnittstelle in GISMO eine Aufgabennummer übergeben und die notwendigen Informationen, wie z.B. Geometrien und Metadaten, extrahiert.
Anpassung einer JSON-Vorlage zur Metadatenextraktion
Die Vorlage kann in GISMO über die grafische Oberfläche erstellt werden. Für die beschriebene Exportaufgabe verwenden wir die folgende Struktur:
[
{
"DatabaseServerConnectionSCS": {
"server": "****",
"port": "****",
"scs_user": "****",
"scs_password": "****",
"connectionVar": "mySCSConnection"
}
},
{
"Database": {
"connectionVar": "mySCSConnection",
"databaseVar": "myDatabase",
"databaseName": "****"
}
},
{
"MetadataList": {
"databaseVar": "currentDatabase",
"metadataListVar": "myMetadataList",
"metadataFilters": [
{
"MetadataFilterText": {
"value": "****",
"metadataKey": "****",
"exclude": false,
"mode": "equals"
}
},
{
"MetadataFilterText": {
"value": "****",
"metadataKey": "****",
"exclude": false,
"mode": "contains"
}
}
]
}
},
{
"MetadataListExport": {
"metadataListVar": "myMetadataList",
"filename": "****.txt",
"metadataKeys": "****,****,****",
"format": "CSV"
}
}
]
Im Block „DatabaseServerConnectionSCS“ werden die Verbindungsinformationen angelegt.
Anhand der übergebenen Aufgabennummer wird über ein Python-Skript festgestellt, welche Datenbank angesprochen werden muss. Im zweiten Block „DatabaseList“ wird die Verbindung zu dieser Datenbank hergestellt.
Daraufhin wird eine Metadatenliste erzeugt, die anhand eines Textfilters nur den Datensatz für die Aufgabennummer herausgibt.
Im Anschluss wird diese Metadatenliste in Form einer Textdatei abgespeichert und so für die Weiterverarbeitung bereitgestellt.
Automatisierte Extraktion der Geometrien
Anhand verschiedener Kriterien wird über das Python-Skript eine zweite JSON-Vorlage für den Datenexport angepasst. Je nach Aufnahmeverfahren und Kunden werden die Daten in unterschiedlichen Formaten (bspw. „.xyz“, „.txt“ oder „.nc“) benötigt. Mit dieser Vorlage wird pro benötigten Datenformat die Extraktion ausgeführt.
[
{
"DatabaseServerConnectionSCS": {
"server": "****",
"port": "****",
"scs_user": "****",
"scs_password": "****",
"connectionVar": "mySCSConnection"
}
},
{
"DatabaseList": {
"connectionVar": "mySCSConnection",
"databaseListVar": "myDBList",
"databaseFilters": [
{
"DatabaseFilter": {
"value": "****",
"exclude": false,
"mode": "equals"
}
}
]
}
},
{
"DatabaseListLoop": {
"databaseListVar": "myDBList",
"variableName": "currentDatabase",
"loop": [
{
"MetadataList": {
"databaseVar": "currentDatabase",
"metadataListVar": "myMetadataList",
"metadataFilters": [
{
"MetadataFilterText": {
"value": "****",
"metadataKey": "****",
"exclude": false,
"mode": "equals"
}
},
{
"MetadataFilterText": {
"value": "****",
"metadataKey": "****",
"exclude": false,
"mode": "equals"
}
}
]
}
},
{
"MetadataListLoop": {
"metadataListVar": "myMetadataList",
"variableName": "currentMetadata",
"currentMetadataTitle": "currentMetadataTitle",
"currentMetadataIndex": "currentMetadataIndex",
"currentMetadataListLength": "currentMetadataListLength",
"loop": [
{
"MetadataLayerLoad": {
"metadataVar": "currentMetadata",
"layerVar": "myLayer"
}
},
{
"CoordinatesEdit": {
"operation": "*",
"value": "-1",
"editX": false,
"editY": false,
"editZ": true,
"layerVar": "myLayer"
}
},
{
"LayerSave": {
"filename": "****.txt",
"format": "XYZ",
"layerVar": "myLayer",
"configFilename": ""
}
}
]
}
}
]
}
}
]
Ausführung des Skripts
GISMO-Skripte können über einen Kommandozeilenaufruf des json_script_runner.bat ausgeführt werden.
json_script_runner.bat -file "D:\GISMO_JSON\***\workflow\export.json"