Detailed 3D buildings on OSM, without drawing a single part
Most buildings in OSM never get past a flat grey extrusion, and the reason is
tedium rather than difficulty. Simple 3D Buildings is an easy scheme to read,
but a decent tower needs dozens of building:part polygons, each with its own
min_height and height. Nobody wants to draw 44 near-identical facade piers
by hand.
So don’t draw them. Here is the whole recipe in one picture, from the Vesta Tower complex in Slemani: a 12-floor office tower, a 14-floor residential tower and the shopping podium between them.

The seven steps
-
- Street imagery
- Dashcam frames from my own Mapillary sequences. This is the part that makes the difference: the true colours, the facade pattern and the floor count all come from here. Developer renders are lit for drama and usually show a palette that changed before construction. I started from the architect’s render and got a dark bronze residential tower; the real thing is light grey with white balcony slabs.
-
- Height estimate
- Floor count times floor height. Don’t use a flat 3 m: retail and lobbies run 4 to 6.5 m, offices 3.4 to 3.6 m, apartments 3 to 4 m. Vesta’s office is twelve floors of 3.45 m over a 4.4 m ground floor, so 52.8 m to the top of the canopy.
-
- Footprints in iD
- One
building=*outline per building. Trace where the building meets the ground, not the roof, because tall buildings lean in aerial imagery.
-
- Download the area in JOSM
- A fresh .osm export of your own data. This matters, because everything generated later is computed from your real node coordinates and versioned against this download.
-
- Hand it all to Claude
- The photos, the heights, and the .osm file. Out comes every
building:part: for Vesta that was 44 facade piers, 12 balcony slabs, the podium, the canopy and the rooftop box, just over 60 parts in total.
-
- Check before uploading
- Ask for a 3D preview page built from the proposed tags. This was the single most useful step. Every correction I made came from looking at that preview rather than from uploading and hoping.
-
- Open the file in JOSM and click Upload
- File > Open, green arrow, done. Sixty parts in one changeset, no drawing.
Three tricks worth stealing
Windows out of geometry. S3DB has no window tag, and you cannot count on
renderers drawing window rows from building:levels. So make the windows real
geometry: a dark glass core set back 0.5 m from the wall line, with stone piers
1.5 m wide standing in front of it. The gaps read as the tall vertical windows
the building actually has, in any renderer and from any angle.
Slab stacks for balconies. The residential tower is a grey core inset 1.6 m, wrapped in twelve thin white parts at the floor levels, each using the full tower footprint so they project past the core like the real slabs.
building:part=yes
min_height=40.9
height=41.3
building:material=concrete
building:colour=#f1eee8
roof:shape=flat
roof:colour=#f1eee8
Overhangs are allowed. The office canopy projects 2.2 m past the walls. I clipped it where it would have crossed into the neighbours’ footprints and kept the overhang on the two street sides, and it renders correctly.
Things that will bite you
- Never let two parts share a plane
- My top balcony slab ended at exactly the same height as the tower core’s roof, and the overlapping surfaces shimmered as I rotated the view in F4map.1 Making that slab 0.7 m thick instead of 0.4 m fixed it.
- Don’t use iD’s Merge (C) on several areas
- It creates a multipolygon and joins conflicting values with semicolons, so you
get things like
height=129.5;139.5;127.5, which no renderer can read. Every part must stay its own way. - Read the validator, then paste it back to the AI
- My first generated file put pier corners exactly on the building’s corner nodes and JOSM reported 58 warnings. I sent the screenshot to Claude, it offset the piers 5 cm inside the wall line, and nearly all of them went.
- Some warnings are meant to be there
- JOSM reports “ways with same position” for the twelve stacked slabs and for parts that share their building’s outline. That is the trick working.
- Give F4map a few hours
- It picks up data changes fast but rebuilds its 3D tiles slowly, so don’t assume something is broken. The public Streets GL demo is no use as a cross-check: its data is frozen at September 2023.
Where the human still matters
This is not “ask an AI and upload”. Two corrections were mine, and both came from knowing the place: the colours, as above, and the footprint. Claude assumed the residential tower filled its whole plot, while I had traced the real tower from aerial imagery, about 1,100 m² with a notch in it. My tracing was right, and it rebuilt everything on my polygon.
You are the one who has stood in front of the building. Keep that judgement and hand over the tedium.
See it live
Vesta Tower on F4map. The whole thing took an afternoon, and most of that was deciding what colour things really are. I would like to see more of Slemani mapped this way.
-
Z-fighting: two surfaces at exactly the same height, where the renderer cannot decide which is in front and flips between them as the camera moves. ↩
Discussion
Comment from jayaddison on 2 October 2026 at 17:18
Hello,
I’m interested in 3D mapping, and have recently traced some buildings, although I think it’s likely I’ve made some mistakes. If/when I find time, I’d like to refine the mapping, including the way the results appear in 3D.
However: I personally dislike LLMs; I do understand that they can remove tedium, but I want to learn some of the intrinsic details (otherwise I never will), and I have moral/ethical concerns about the construction and use of LLMs (partly around erosion of human trust and attribution of work – but also around energy consumption and various other things).
Do you have any experience with the Urban Eye 3D plugin for JOSM? I think that it could be used in conjunction with an LLM-based workflow (near/after step 6, for example), or as an alternative.
Thank you, James
Comment from Zkir on 3 October 2026 at 10:59
Sounds very interesting.
Claude gives out a valid osm file?
Claude is able to generate dynamic 3D preview, or just image?
Comment from SomeoneElse on 5 October 2026 at 09:35
Re “Open the file in JOSM and click Upload” you absolutely need to go though osm.wiki/Automated_Edits_code_of_conduct first before doing that…
Comment from amapanda ᚛ᚐᚋᚐᚅᚇᚐ᚜ 🏳️⚧️ on 5 October 2026 at 15:20
Like SomeoneElse said you may not just click upload. You risk all your edits being deleted and potentially account blocked. You need to read & follow the Automated Edits CoC.