gap: with Aerial photography on, the drawn map is painted over the photograph — 99% of a city frame is unchanged #264
Labels
No labels
agent
agent:ci
agent:done
agent:failed
agent:needs-input
agent:refined
agent:refining
agent:running
agent:shipped
agent:skip
autonomous
autopilot
driven
local
plan
proposal
qa
qa-gap
research
retro
ship
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jeroen/cartopolis#264
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
QA of #175 (ticket #263). The imagery arrives and is textured onto the clipmap; it is then almost entirely covered by the vector map drawn on top of it, so ticking the checkbox looks like it did nothing.
What I did
Built the client and took five A/B capture pairs headlessly (lavapipe), each pair identical apart from the
--aerialflag: same camera,--time 12,--hide-ui,--size 800x800,CARTO_TILE_URLpinned to the vector basemap. Metrics from--dump-state, pixel differences with ImageMagickcompare -metric AE -fuzz 2%over 640,000 pixels.What happened
The fetch half works —
aerial_tilesis non-zero in every aerial run and 0 in every control, and no tile fetch failed:aerial_tilesOver the city at 700 m — the z15–z17 band the layer was built for, where the drawn map is a magnified z14 render — the photograph reaches 0.7% of the frame. The pixels that do change are thin slivers: a farmyard, a road verge, the gaps between landuse polygons. Everything else is the drawn map sitting on top.
The photograph is genuinely there underneath: cropping one farmyard shows real grass and tree texture in the aerial run where the control shows a flat grey fill. It is just that in a city there is almost nowhere the vector map leaves uncovered.
What a user would expect
Ticking Map ▸ Aerial photography makes the ground a photograph — buildings, roads, labels and trees still drawn over it, but the landuse painting stops.
docs/manual.mdpromises exactly that ("swaps the drawn ground for real photographs … worth switching on close to the ground"), and today, close to the ground, it is the one place you cannot see it.There is also no workaround from the UI. Map hides the ground tiles themselves (
StreamTilevisibility), so switching it off takes the photograph away too, not the fills over it. No other toggle reaches them.Where the seam is
crates/cartopolis/src/systems/map/map_stream.rstextures the clipmap quads from PDOK, and is deliberately the only consumer that changes source.crates/geo/src/vector_tiles.rs::tessellate_surfaces/land_groupemits opaque fills forfarmland/grass/park/meadow/forest(Grass, Forest),residential/industrial/commercial/retail(Built),sand/beach, plus theocean,water_polygonsandsiteslayers. Those, the paving band and the road ribbons all sit above the tile quads on the depth ladder.map_streamreadsDataLayers::aerial_enabled, so no surface builder knows the ground became a photograph.The plausible fix is for the surface groups to be suppressed where aerial imagery covers the cell — the landuse fills at minimum; water is arguable, since the water shader is what makes a canal read as water.
docs/notes/aerial-imagery.mdrecords this under "What is still unjudged" as a look pass ("whether a photographic backdrop reads well under the drawn land / water / sites polygons"). The measurement above says it is not a look question: at street level there is no backdrop to judge.Filed by the QA pass on #263.