Om OpenStreetMap data naar Civil 3D te brengen heb je tools nodig die je niet direct in de software zelf vindt. OpenStreetMap data kun je downloaden van de website zelf, waarbij je een gebied exporteert naar een OSM bestand, dat feitelijk een XML is met geometrie en aanvullende data.

Civil 3D Dynamo is de meest slimme manier om deze gegevens te importeren, vooral als je er grip op wilt houden hoe de data wordt verwerkt. Je hebt naast Dynamo nog wel aanvullende packages nodig, namelijk de Arkance Systems Node Library en de C3D Toolkit. Met de OOTB nodes kom je net niet ver genoeg. Zoals gebruikelijk wordt hier geen stap-voor-stap handleiding geschreven maar wel net voldoende aanwijzingen gegeven waarmee je het zelf nog beter kunt doen.

Open StreetMap geometrie

In de Arkance Systems Node Library vind je een OpenStreetMap Import node. Deze wil de bestandslocatie weten van het OSM bestand en leest daarna de geometrie in. Het resultaat is Points en Curves. Een Google Earth KML bestand inlezen werkt overigens precies hetzelfde, en dan heb je naast Points en Curves  ook nog Shapes die vlakken voorstellen. De output van de Import node kan bevraagd worden als PolyCurve en als Data. De PolyCurves geven direct een goed beeld binnen de Dynamo werkomgeving van de geïmporteerde geometrie:

Filters maken

Stel dat je alleen de aslijnen van de wegen wilt filteren. Dan kun je zoeken in de GeoCurve.Data naar “highway” voorkomens:

Als er een “null” is gevonden dan heeft de PolyCurve geen “highway” value. Met de FilterByBoolMask kun je eenvoudig de geometrie filteren zodat je in de out-uitvoerpoort alle objecten hebt die wel beschikken over een “highway” value (de in-uitvoerpoort bevat alle objecten die overeenkomen met IsNull en die heb je juist niet nodig).

Engelstalige waarden hernoemen

Omdat de waarde van het veld “highway” Engelstalige termen bevat zoals “motorway”, “pedestrian”, enzovoort, heb je een handigheidje nodig om deze waarden te vertalen. Hiervoor is al eerder een blog geschreven, hoe je eenvoudig meerdere teksten kunt hernoemen met Dynamo.

Je ziet hier ook duidelijk de inconsequentheid van benaming in OpenStreetMap. Daarom kun je zo’n script ook niet hergebruiken zonder grondig gekeken te hebben wat het resultaat is, in een ander gebied krijg je misschien nog andere veldwaarden te zien.

NLCS laagnaam

Met de Arkance Systems Node Library kun je heel eenvoudig NLCS(-achtige) laagnamen genereren op basis van de vertaalde waarden.

Naar AutoCAD brengen

Met de OOTB node Object.ByGeometry zul je zien dat er niets gebeurt en er geen geometrie in AutoCAD wordt getekend. Dat komt omdat deze node de beperking heeft dat het geen PolyCurves met bogen kan converteren. Gelukkig vind je een gelijksoortige node in de C3DToolkit package. Deze converteert de PolyCurves naar Polylines in AutoCAD op de samengestelde NLCS lagen. Dit is het resultaat in AutoCAD waarbij de verschillende lagen andere kleuren hebben gekregen:

Property Sets

Om de aanvullende data uit het OSM bestand om te zetten naar Property Sets, heb je de C3DToolkit nodig. Deze is een stuk sterker in het maken en beheren van Property Sets. Eerst heb je uiteraard de gefilterde gegevens nodig. Bijvoorbeeld de straatnaam en de maximum snelheid die horen bij de wegassen:

Je moet natuurlijk nog wel een Property Set Definition maken als die nog niet aanwezig is in de tekening:

En nu kun je de waarden per object vullen vanuit de gefilterde waarden (nadat je de Property Set aan het object hebt gekoppeld). Het mooie in Civil 3D is dat je Labels kunt plaatsen waarin verwezen wordt naar deze Property Sets, zo kun je per wegas keurig de straatnaam plaatsen:

Qua mogelijkheden van zowel Civil 3D als Dynamo en aanvullende packages als de Arkance Systems Node Library heb je hele krachtige functionaliteit in handen om geweldige dingen te doen, en in nog redelijk korte tijd ook. Waar je vroeger uren tijd kwijt was kun je nu met wat spelen en testen binnen afzienbare tijd fantastische resultaten bereiken. Maar makkelijk is het niet, dat helaas niet. Maar onmogelijk ook niet.