PB-2246: deploy the new 3D label dataset - #1587
Closed
rotwurstesser wants to merge 35 commits into
Closed
Conversation
added 5 commits
July 8, 2026 17:32
Add direct MVT decoder dependencies and pure Swissnames helper coverage for config URLs, tile math, layer normalization, and feature property extraction.
Issue: the new Swissnames 3D label dataset is delivered as MBTiles/PBF vector tiles, which the existing Cesium 3D Tiles label path cannot render, and labels must stay terrain-occluded instead of fixed in the foreground. Solution: add a dedicated Swissnames renderer: a thin layer component, a lifecycle composable that owns a CustomDataSource and refreshes labels on camera.moveEnd (mutating labels mid-render crashed Cesium), and focused helpers for camera/tile selection, terrain-sampled label entities, and tile fetch/cache/failure state.
Issue: the Swissnames labels layer still renders through the generic Cesium 3D Tiles vector path, which cannot consume the new dataset. Solution: route only CESIUM_LABELS_LAYER_ID to CesiumSwissnamesLabelsLayer and keep every other vector layer on CesiumVectorLayer, so reverting this single commit restores the old label path.
Issue: oblique 3D views stack every loaded town and village name into a dense band along the horizon, and the translucent label boxes wash out against bright terrain. Solution: cut each label at its layer's altitude band, capped at 25 km for regular layers so only landmark tiers with country/canton-sized bands render toward the horizon; darken the label background and brighten lake/peak text for contrast, and cover the cutoff rules with unit tests.
Issue: lake and peak labels remain difficult to read against bright terrain. Solution: darken the translucent label background and brighten lake and peak colors to exceed WCAG contrast thresholds.
web-mapviewer
|
||||||||||||||||||||||||||||
| Project |
web-mapviewer
|
| Branch Review |
fix-PB-2246-3d-swissnames-labels
|
| Run status |
|
| Run duration | 05m 16s |
| Commit |
|
| Committer | Raphael Antonietti |
| View all properties for this run ↗︎ | |
| Test results | |
|---|---|
|
|
0
|
|
|
0
|
|
|
19
|
|
|
0
|
|
|
222
|
| View all changes introduced in this branch ↗︎ | |
added 23 commits
July 14, 2026 17:35
Keep manifest transport and publication-specific defaults out of the Cesium renderer.
Keep the renderer focused on Cesium lifecycle and tile visibility while the API adapter owns the temporary manifest, PBF transport, decoding, and producer-field normalization. Cancel obsolete tile requests without blacklisting later reloads.
Preserve coverage for the adapter's manifest HTTP error contract after moving tile transport and decoding behind the fetch boundary.
Remove aborted tile requests from the active concurrency count immediately so newly visible tiles can start without waiting for the capacity retry timer.
Transient tile failures were permanently suppressed after the first attempt. Normalize known sparse 403 responses as empty and retry other failures once before suppressing them.
Remove cached Cesium entities when their tiles leave the visible area so camera movement does not accumulate hidden labels.
Avoid repeating requests for sparse tiles that returned HTTP 403 during the mounted adapter lifetime.
Swissnames now uses its dedicated MVT renderer, so the old 3D Tiles style branch can no longer run. Remove the option and obsolete style module.
Use the removal callback returned by Cesium's camera event instead of tracking listener registration separately.
Keep canceled requests in the pending map until their owning promise settles so non-abortable terrain sampling cannot overlap a replacement request.
The renderer loads the publication before requesting label tiles. Remove the impossible call-order guard and its dedicated test.
Use Set.delete to combine retry-state lookup and removal while preserving abort, retry, suppression, and finally cleanup behavior.
Keep the measured visible-tile safety bound fixed in production and remove the test-only override parameter.
added 7 commits
July 18, 2026 14:27
Contributor
Author
|
Superseded by #1589, which uses the selected standard 3D Tiles solution. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
CustomDataSourceSide effects and review focus
ch.swisstopo.swissnames3d.3drendering pathBefore Merge:
Test link