Fix EOX Provider - #278
Open
A346fan wants to merge 1 commit into
Open
Conversation
I've updated the EOX2.lay.
The URL to acces EOX has changed to
"https://{switch:a,b,c,d}.tiles.maps.eox.at/wmts/?layer=s2cloudless-2023_3857&style=default&tilematrixset=GoogleMapsCompatible&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fjpeg&TileMatrix={zoom}&TileCol={x}&TileRow={y}"
the old one is no longer working.
I've also renamed it to EOX23.lay as it uses now 2023 Data.
Grettings TO-GA from the Org Forum
shizumaat
added a commit
to shizumaat/Ortho4XP-novemberlima
that referenced
this pull request
Jul 15, 2026
…ordering KCLT tile +35-081 bake: junction #336 — a 97 x 870 m, 24.7k m² face along the 18L corridor, 31% on source — plus a 7-entry cluster at the 18R end (verify OFF-SOURCE 8). Formation tracing EXONERATES the global slice: every face is born clean (the #336 face is a 2,850 m² junction at 100% on source through post-orphan-drop). The phantom is injected downstream by two distinct mechanisms: 1. _enforce_runway_1to1_sharing (junction_rules.py): the frontage straightening chord swept ~17k m² of grass along 18L; the off-source-gain carve computed the right pieces but new_poly.difference(big_off) returned a shapely-2 GeometryCollection (polygonal parts + tangency line crumbs — the same family as the CYUL/global-slice .boundary=None fix), the split-keep branch only understood MultiPolygon, and the carve FELL BACK uncarved. Fix: module-level _polygonal_parts (mirrors pavement/global_slice.py's) reduces the collection to its polygonal parts before the split-keep/area-floor logic. 2. _drop_off_source_residue (junction_repair.py): the whole-pass from_route_proximity_cut exemption also shielded the near-zero branch, so five 74-498 m² 0%-on-source cut pieces at the 18R end (RESA grass) emitted as apron/junction. Fix: the near-zero drop (on/area <= 0.02) is judged BEFORE the exemption — a ~0%-on-source fragment is phantom whatever its provenance; partial-coverage cut pieces above the floor keep the exemption (the deferred formation-time source-clip slice owns those). Provenance: #336 itself is R1-reshaped (6ac66cd's frontage weld changed which vertices read runway-adjacent, moving the GC fallback from the -80.966 frontage [pre-R1 #496, 17.2k m² @ 21%] to 18L); the mechanism predates R1 (STATUS part 30l's off-source class). Gates (fresh 0e085b8 baselines -> after): * KCLT verify OFF-SOURCE 8 -> 2 (only the partial-coverage oscarpilote#278 8,253 m² @ 35% and #763 383 m² @ 32% remain — Fix C territory); the 18L probe-point junction is now 2,721 m² at 100% on source (1to1 carve fires: 26,657 m² @ 36% never forms; split-keep extras 2,197 m² + 2,734 m² both 100%). within 3 / wedge_audit 4 / overlap 4 / epsilon 4 — identical findings line-for-line. * HECA OFF-SOURCE 1 -> 0 (apron oscarpilote#220, 30 m² rpc-flagged 0% grass, now dropped by rule 2); within 0 / epsilon 5 / overlap 4 / wedge_audit 4 unchanged. * SPJC epsilon 1 / overlap 1 / plane 1 / within 0 unchanged. * SPLP within 12 / wedges 0 / runway_grade 2 unchanged. * CYXY within 1 / wedges 0 / verify clean unchanged. * Every newly-dropped piece across the five airports is <= 0.2% on source (KCLT 18R rpc cluster 5x 0.0%, KCLT 18L carve fragments 3x <= 0.2%, HECA 30 m² 0.0%); no piece with real coverage dropped. * fast_suite: exactly the 6 documented failures. Full suite: exactly the 10 documented. compare-target 3/3. * Unit tests: GC-forced synthetic 1to1 carve (crumbed difference) + near-zero-vs-exemption ordering, in test_junction_unit.py. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
shizumaat
added a commit
to shizumaat/Ortho4XP-novemberlima
that referenced
this pull request
Jul 15, 2026
…ands (Fix C) CLASS: apron/junction faces that the global slice births 100% on source (pipeline._SLICE_SOURCE_CLIP) but that acquire off-source area through DOWNSTREAM pre-solve recuts (the apron route-proximity cut, the _enforce_runway_1to1_sharing frontage straightening). KCLT oscarpilote#278 is the user-visible in-sim phantom: an 8,253 m2 junction at 35% on source (the near-runway band the route-proximity cut carved off a real 18R-end apron; the 65% off-source remainder is RESA grass). Fixes A+B (5782ab2) took KCLT off-source 8->2; this closes the pre-solve partial-coverage residual. DESIGN: junction_repair.source_clip_partial_coverage_shapes, gated by config.SOURCE_CLIP_PARTIAL_COVERAGE (O4_SOURCE_CLIP, default ON). For each apron/junction whose on-source fraction < 0.5 -- judged by verification.check_source_adjacency (the SAME source union + on-source method the verify pass uses; ONE definition of "on source") -- clip the polygon to (source_pavement_union UNION runway_union).buffer(RUNWAY_REWRITE_CARVE_RUNWAY_ HALO_M) (the 1to1 carve's 3 m runway-frontage halo, so near-runway CONTACT survives). All shapely return types handled via junction_rules._polygonal_ parts (the 5782ab2 GeometryCollection-fallback family); kept pieces >= the 50 m2 junction sliver floor, largest replaces the shape, extras become sibling shapes. The off-source remainder is dropped (off source by construction -- re-minting RESA grass as groundside pavement would only relocate the phantom; coverage-safe, uncovers no real source). Runs at END of pre-solve geometry formation, immediately BEFORE _unify_airside_geometry, so the clipped edges are re-noded/welded/graded normally; node_altitudes are None here (pre-solve). The pass only ever CLIPS a shape that has a real on-source piece to keep -- it never nulls/drops a whole shape (whole-shape phantom removal stays with _drop_off_source_residue, which honours the route-proximity-cut exemption that protects the KCLT oscarpilote#255 rests-on-source-hole class). O4_SOURCE_CLIP=0 reverts byte-identically (pipeline block skipped; the added constant/function inert). GATES (36fe8da baseline; KCLT/CYXY builds carry benign node-ID renumbering nondeterminism -- verified GEOMETRICALLY via sorted coord+alt sets): * KCLT gate on vs off: OFF-SOURCE 2->1 (oscarpilote#278 clipped to a ~2.9k m2 near-100%-on-source junction; #763 383 m2@32% remains -- see below). overlap 3=3, epsilon_wedge 4=4, within 3=3, plane 0=0 (NO growth). * KCLT gate-off canonical identity: coord-set + alt-set IDENTICAL to a no-pass build (byte-diff only cosmetic node-ID renumbering, which two clean builds also show). * SPLP (fires -- bonus): clips a pre-existing 34,034 m2@19% phantom junction shred86#34, OFF-SOURCE 1->0, GRADE-NEUTRAL (within 12=12, runway_grade 2=2, plane 0=0). Fixes suite test_pavement_rests_on_source[SPLP] + test_compare_target_splp[SPLP] (the compare-target reference lacks shred86#34 -- confirms it is a genuine phantom). * CYXY / SPJC / HECA: fully INERT (on vs off coord+alt sets 0-diff); CYXY within 1, SPJC overlap 1/epsilon 1/plane 1, HECA within 0/epsilon 5/ overlap 4/off-source 0. * Satellites KJQF/KEXX/KSVH: no-op, off-source 0->0. * Full suite: clean 12 -> patched 10 failed (FIXES the 2 SPLP source tests, ADDS 0). Fast suite: SPLP source test fixed, 0 added. * Unit test tests/test_source_clip.py: 30%-on-source clip, remainder-drop, 60% untouched, gate-off inert. RESIDUAL -- KCLT #763 (383 m2@32%): NOT fixed here (correctly out of scope). Staged tracing proves it is a POST-SOLVE class, not formation-time: it is >=50% on source through the pre-solve unify, and flips off-source only AFTER the solve, when emit_surface_clearance_cuts carves the on-source portion of a post-solve enforce_conformance split (junction #775 697 m2@63% -> 383 m2@32% at the 18R runway-clearance band). A formation-time/pre-solve pass cannot reach it; the proper fix is clearance-side (do not leave an off-source pavement remnant when cutting) -- a follow-up increment. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
I've updated the EOX2.lay.
The URL to acces EOX has changed to
"https://{switch:a,b,c,d}.tiles.maps.eox.at/wmts/?layer=s2cloudless-2023_3857&style=default&tilematrixset=GoogleMapsCompatible&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fjpeg&TileMatrix={zoom}&TileCol={x}&TileRow={y}"
the old one is no longer working.
I've also renamed it to EOX23.lay as it uses now 2023 Data.
Grettings TO-GA from the Org Forum