gap: the aerial envelope is a rectangle over Antwerp, Brussels and Duesseldorf, where PDOK serves a blank white tile and the ground goes white #265
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#265
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 coverage envelope is a lat/lng rectangle around the Netherlands, and a rectangle around the Netherlands contains a lot of Belgium and the Rhineland. PDOK answers those with a valid, pure-white JPEG, and the client textures it rather than falling back to the drawn map.
What I did
Probed
Actueel_ortho25directly on 2026-09-02, z14 and z17, and then took A/B captures with and without--aerial(identical camera,--time 12,--hide-ui, 800x800).What happened
aerial::covers()?The 1,651-byte body is a valid 256x256 JPEG that is pure white (mean 255, standard deviation 1 on every channel). Dutch coastal water is imaged out to a few kilometres, so the sea case only bites well offshore; the land cases do not.
In the app: a capture over rural Belgium (51.05, 4.55, 700 m) reports
aerial_tiles: 354and differs from its control in 162,025 of 640,000 pixels (25%) — the ground between the drawn landuse polygons is blanched instead of showing map colours. Over Antwerp's centre the effect is currently small (0.6%) only because the drawn map covers nearly everything there (#264); fix #264 and this becomes a white void where the map used to be.What a user would expect
A user in Antwerp or Duesseldorf ticks a layer labelled "PDOK imagery — Netherlands only", and expects one of two things: no change at all, or photographs. Losing the map is neither. The honest behaviour outside real imagery coverage is to keep serving the drawn basemap for that tile.
Where the seam is
crates/cartopolis/src/systems/map/aerial.rs:AERIAL_LON = (3.20, 7.28),AERIAL_LAT = (50.72, 53.56)— AHN's envelope, which is right about "is this the Netherlands" only to the accuracy of a bounding box. Antwerp (51.22, 4.40), Brussels (50.85, 4.35), Duesseldorf (51.23, 6.77) and Duisburg (51.43, 6.76) are all inside it;covers_tiletherefore routes them to PDOK.crates/cartopolis/src/systems/map/tile_loader.rs::decode_tile_imageandmap_stream::apply_stream_texturesaccept whatever decodes; there is no blank-body or uniformity check and no per-tile fallback to the vector template.The module note's reasoning that "coverage is an envelope, not a status code" is right about the status code — PDOK's 200 tells you nothing. What it leaves out is that this particular envelope admits several thousand square kilometres of Belgium and Germany, and that the fallback path (draw this tile from the vector source instead) does not exist at all, so there is nowhere for a refusal to go even once the envelope knows better. Either a tighter shape or a blank-body check needs the fallback arm first.
Filed by the QA pass on #263.