Ervaringen: IMKL/WIBON (KLIC) GML → CAD (DGN)
Hoi allemaal,
Ik wil graag jullie input voor het omzetten van een Nederlands IMKL/WIBON (KLIC)-bestand (GML/XML) naar een CAD-formaat voor een CAD-engineer (MicroStation). We lopen daarbij tegen een paar CAD/DGN-beperkingen aan en ik ben benieuwd hoe jullie dit “netjes” aanpakken zodat het beter aansluit op de CAD-standaard / MicroStation-conventies (levels, attributen, symbology, etc.).
Context / probleem
- Brondata: IMKL/WIBON 2.0.0 GML/XML (KLIC-levering), CRS: EPSG:28992 (RD New).
- Doel: leveren aan een CAD-engineer die het importeert in MicroStation (2018+).
- QGIS toonde de geometrie, maar “utility type” (water/gas/elek/telecom etc.) zat niet als nette kolom in attributen, waardoor styling en export per type lastig werd.
- In QGIS zou dit per laag en per geoprocessing stap veel handwerk zijn (en telkens opnieuw GPKG-lagen genereren).
Wat ik heb gedaan
1) GDAL omgeving opgezet (Conda/Miniconda)
- Miniconda geïnstalleerd en een aparte GDAL omgeving gemaakt via
conda-forge. - Gecheckt dat GMLAS beschikbaar is (essentieel voor application schema’s zoals IMKL).
2) IMKL GML → GeoPackage met GMLAS
IMKL GML ingelezen met GMLAS, zodat de data netjes als lagen/tables beschikbaar komt:
ogr2ogr -f GPKG staging.gpkg "GMLAS:GI_...xml"
In staging.gpkg zagen we o.a.:
- UtilityLink (LineString, ~5k features) → de “drager” van lijngeometrie
- en daarnaast tabellen/lagen zoals Waterleiding, Elektriciteitskabel, Telecommunicatiekabel, Rioolleiding, etc. (vaak zonder geometrie)
3) Belangrijk inzicht: type-informatie zat in de gml_id
In ons geval bleek UtilityLink.gml_id een “token” te bevatten waarmee je het type direct kunt afleiden, bijvoorbeeld:
... UL_IMKL_Elektriciteitskabel ...... UL_IMKL_Telecommunicatiekabel ...... UL_IMKL_OlieGasChemicalienPijpleiding ...... UL_IMKL_Mantelbuis ...
Dus: we hoefden geen complexe joins te doen op utiliteitsnet/relaties om lijnen te classificeren; we konden de UtilityLink-lijnen filteren op gml_id patronen.
4) Export naar DGN: tegen beperkingen aangelopen
Bij export naar DGN kwamen we tegen twee GDAL/DGN beperkingen aan:
- DGN ondersteunt niet lekker het aanmaken van velden (CreateField errors) → CAD is geometry-first.
- DGN driver ondersteunt maar één OGR-layer in een DGN (“only supports one layer…”) → dus “append” met verschillende
-nlnlevels werkte niet zoals gehoopt.
5) Workaround: per utility type een aparte DGN export
Omdat één DGN met meerdere levels via GDAL niet rechttoe rechtaan werkte, hebben we gekozen voor de meest robuuste route:
- Voor elk
UL_IMKL_*type een eigen DGN-bestand exporteren (bijv. ELEKTRICITEIT_LIJN.dgn, TELECOM_LIJN.dgn, etc.). - Daarnaast point-layers apart: o.a. Mast (als “elektriciteit support”) en DiepteTovMaaiveld (dieptepunten) als eigen DGN.
- We exporteerden vooral geometrie-only om CreateField-problemen te vermijden.
De CAD-engineer kan deze DGNs vervolgens reference-attachen / samenvoegen en levels/standaarden toepassen binnen MicroStation.
Vraag aan de community: hoe maken jullie dit “CAD-standaard-proof” voor MicroStation?
We willen eigenlijk toewerken naar één dataset/levering die beter aansluit op MicroStation CAD standaarden, bijv.:
- Levels (bijv. WATER, GAS, ELEK, TELECOM, RIOOL) in één DGN i.p.v. losse DGN’s
- Symbology (line styles, kleuren, weights) conform CAD-conventies
- Attribuutmapping (object properties / tags / item types) i.p.v. “platte GIS attributen”
- Units/CRS (RD New) consequent en herkenbaar in CAD-omgeving
- Eventueel export naar een ander “tussenformaat” (DXF/DWG?) dat beter layers/attributen draagt, en dan import in MicroStation
Concrete vragen:
- Heeft iemand ervaring met GDAL/ogr2ogr om in één DGN meerdere levels te creëren (en hoe)?
- Is er een best practice om IMKL attributen (zoals eigenaar, theme, diameter, verticalPosition) te mappen naar MicroStation (Item Types / tags / symbology)?
- Werkt een pipeline via DXF of DWG in de praktijk beter voor layer/level-structuur, en waarom?
- Zijn er open source tools of scripts (FME-alternatieven?) die IMKL → MicroStation “netjes” standaardiseren?
Alle ideeën, best practices, of voorbeelden (scripts / tools / workflows) zijn welkom
Alvast bedankt!