In een eerdere blog is uitgelegd hoe je met QGIS een AHN kaartblad van 0.5m grid omzet naar een grid van 1.0m of 2.5m. De AHN kaartbladen heb je in 0.5m of 5.0m grid grootte, en daartussen zit vaak een afmeting die ook prima zou voldoen maar helaas niet beschikbaar is. Voor veel projecten heb je voldoende aan een 1.0m grid, dit zou de omvang van een tegel al reduceren tot 25% van de oorspronkelijke omvang. Want de AHN tegels zijn fors in bestandsgrootte, een 0.5m grid tegel omvat al snel een halve gigabyte.
Civil 3D vindt dat niet leuk. Gelukkig zijn er wat mogelijkheden, onder andere het aanpassen van de gridsize met QGIS, of het uitknippen van het werkgebied. Maar je zou ook Dynamo kunnen gebruiken om de gridsize aan te passen.
Vereenvoudigen met Dynamo
Dit is waarschijnlijk niet de beste keuze. Op voorhand zou ik eerder voor QGIS kiezen, daarmee ben je flexibeler in de mogelijkheden en QGIS loopt lang niet zo snel vast als Civil 3D. Want om een Surface met Dynamo te vereenvoudigen, moet je het kaartblad al hebben ingelezen als Surface. Om het werkbaar te houden moet je een Data Clip Boundary toepassen en bij voorkeur een onzichtbare stijl gebruiken.
In Dynamo kun je het beste de Arkance Systems Node Library hebben geladen, deze bibliotheek bevat de nodes die je kunt gebruiken om een Surface te selecteren en om deze te resamplen. Om te beginnen heb je een TinSurface Dropdown node nodig en de Surface.GetPointsOnGrid. Geef je hier een waarde van 2.5 bij de grid afmeting, dan genereer je in bovenstaand gebied al meer dan 50 duizend punten.
In Dynamo kun je een nieuwe Surface maken van een Cogo Point Group. De weg hiernaar toe is dus dat je van de verzamelde punten Cogo Points maakt, in een groep stopt en daar een Surface van gaat maken. Begin eerst maar met een ruime tussenafstand, sla regelmatig je graph op, en probeer dan langzamerhand nauwkeuriger te werken. Vijftigduizend punten is al erg veel voor Dynamo, het duurt meerdere minuten om de punten te verzamelen en er een Cogo Point Group van te maken, en dan is er nog niet eens een Surface van gemaakt. Gelukkig is een Surface wel binnen een seconde gemaakt, de meeste tijd zit in het genereren van Cogo Points. Om het te versimpelen in Civil 3D kun je de weergave stijl nog aanpassen zodat je geen marker en geen label ziet. Er is momenteel geen andere node in Dynamo beschikbaar die op een snellere manier een Surface kan maken, dus via Cogo Points is helaas de enige weg.
Nu is het wel zo dat je van de oorspronkelijke Surface om de zoveel meter een hoogte bepaalt. Alles wat er tussenligt, wordt overgeslagen. Het zal wel geen groot probleem zijn, de AHN is ooit ook al versimpeld en gladgestreken, maar als je een meer nauwkeurig verloop van het terreinmodel wilt, dan kun je elk vakje rondom de verzamelde punten bevragen, zodat je een gemiddelde hoogte van het gebiedje kunt bepalen.
Als je zoals in bovenstaande afbeelding de rode kruisjes hebt verzameld, dan zou je op de zwarte kruisjes een extra hoogte kunnen bevragen en middelen. Dan heb je de gemiddelde hoogte van het vakje bepaald. Elk zwart kruisje ligt 1/4 van de gridsize in X en Y van het rode kruisje, deze berekening is in Dynamo prima te doen. Gewoon de X en Y bevragen van de rode locaties en combinaties maken van plus en min een kwart van de gridsize.
Van de combinaties kun je weer Points maken en met de node Surface.GetPointsOnSpots kun je de hoogte opvragen op de Surface. Je hebt nu 4x zoveel punten verzameld als de oorspronkelijke rode locaties. In de volgende stap tel je alle Z-waarden bij elkaar op en deelt ze door vijf (inclusief de middelste natuurlijk). Maar omdat de punten langs de rand van de Surface soms erbuiten vallen en dus null opleveren, moet je die eruit filteren, of vervangen door de oorspronkelijke hoogte. Een Code Block is hier het handigst.
Je checkt of de ingevoerde hoogte (linksboven, rechtsboven, linksonder en rechtsonder) gelijk is aan null, en als dat zo is dan krijgt de variabele de hoogte van het middenpunt. Vervolgens bereken je het gemiddelde van deze vijf Z-waarden. Met de oorspronkelijke X en Y en de gemiddelde hoogte kun je weer een serie Points genereren die je vervolgens gebruikt om een Cogo Point Group te maken waar een Surface van kan worden gemaakt.
De vraag tenslotte is of het nu echt wat uitmaakt om de hoogten te middelen of dat het prima volstaat om alleen de middelste hoogte te gebruiken. Je kunt om te testen een tweede Surface maken van de oorspronkelijke Points, en dan een Profile View te genereren met twee Surface Profiles, maar omdat Dynamo sterk is in rekenen, kun je ook een andere manier toepassen.
Trek de gemiddelde hoogte af van de oorspronkelijke hoogte, en kijk wat de grootste en kleinste waarde is.
Het grootste verschil is 85 centimeter (wat best fors is), maar als je het gemiddelde bekijkt over 10.779 punten dan is het slechts een halve millimeter wat verschilt tussen de middelste hoogte per vakje en de gemiddelde hoogte per vakje.
Conclusie
Leuk dat het met Dynamo kan en het rekenen heeft natuurlijk een hoge fun-factor maar om terreinmodellen te manipuleren kun je echt veel beter QGIS gebruiken. Civil 3D is in veel dingen goed, maar helaas niet in alles.
Wil je complexe of repetitieve taken automatiseren in Civil 3D? Dit boek helpt je alles te leren over de design automating tool Dynamo voor Civil 3D. Je wordt een professional in visueel programmeren, en binnenkort zijn al je saaie of complexe taken geautomatiseerd! This book is available in English only.