Most site-model problems are not modeling problems. They are provenance problems. You open a file three weeks later and cannot remember which boundary you used, whether the terrain came from the same source as the buildings, or why one block looks taller than it should. I rebuilt my workflow around that annoyance, using CADMapper for the measured base and GenAnywhere for early 3D reference. Here is the version that survived two projects.
Two Outputs, Two Contracts
CADMapper is a map-to-CAD converter. You select an area on its web map and it assembles public data — largely OpenStreetMap, with terrain and related layers from sources such as NASA and USGS — into a layered file. Coverage decides what you get: roads, building footprints, water, and ground are common; building heights appear only in some places. GenAnywhere is a generator. You draw a box and an AI model returns a 3D scene. It has no layer contract and no measurement guarantee. Treat the first as data and the second as a reference image that happens to have depth.
Freeze the Extent and the Units
Before either tool opens, I log the bounding coordinates and project units in a text file. CADMapper's free tier stops at one square kilometer, so I check the box size first. In GenAnywhere I draw the same corners, not a rough visual match. Then I verify units on import; a single mismatch makes every downstream check meaningless. One measured distance is enough to catch it early.
Audit the Map Before You Trust It
The first render is not the audit. I open the file with every layer visible, then turn layers off one at a time. Missing parcels, truncated alleys, and water edges that stop mid-block are normal in open data. Building heights are the usual weak point: a district can have accurate footprints and almost no height attributes. I mark those gaps in a separate annotation layer and schedule field measurements rather than filling them with guesses. If the site is larger than the free limit, I price the paid CADMapper download at this stage, before the schedule hardens.
Normalize CADMapper Into Your Template
I keep the source layers intact and add a small set of working layers: BASE_BUILDINGS, BASE_ROADS, BASE_WATER, BASE_GROUND, and FIELD_NOTES. Renaming is fine; merging is not, because the separation is the reason to use this tool. I set the origin near the site, lock the source layers, and check that terrain triangles have not been smoothed during import. A useful test is to compare two spot elevations against a survey or a known high point. If the ground reads flat where the site visit found a slope, the terrain did not survive the trip.
Treat GenAnywhere as a Reference Mesh
The AI model goes into its own file or a layer named REF_AI, never into the base. I scale it using two measured points and immediately check a third. If the third point is off, I stop scaling and use the model only for screenshots. The mesh often needs cleanup: overlapping roofs, tapered walls, and ground planes that miss the CADMapper terrain. Decimating is fine for viewing, but keep the original download for provenance. The model also changes between runs, so the file name includes the date and the exact boundary ID.
The Checks That Decide Whether It Ships
Before anything enters a drawing set, four checks have to pass. A known horizontal distance matches within the project tolerance. A second distance, ideally perpendicular to the first, also matches. The building footprints sit inside the mapped parcel lines, or the difference is documented. And the terrain has at least two verified elevations. If the AI mesh fails, it stays a reference. If the base fails, I fix it with field data, not a prettier model.
The point of the pipeline is not to make either tool look good. It is to make the handoff boring. When the next person opens the file, the layers tell them what is mapped, the notes tell them what was measured, and the reference mesh is clearly labeled as something that was generated. That is a lower bar than it sounds, and it has caught more errors than any render ever did.


Top comments (0)