Skip to content

Fix EOX Provider - #278

Open
A346fan wants to merge 1 commit into
oscarpilote:masterfrom
A346fan:patch-1
Open

Fix EOX Provider#278
A346fan wants to merge 1 commit into
oscarpilote:masterfrom
A346fan:patch-1

Conversation

@A346fan

@A346fan A346fan commented Sep 23, 2024

Copy link
Copy Markdown

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

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant