claeis / ilivalidator

INTERLIS validator
14 stars 20 forks source link

AREA-Logging: "polygons overlay" not showing coordinates #376

Open edigonzales opened 1 year ago

edigonzales commented 1 year ago
Error: polygons overlay tid1 B9AAC4FA-EAE2-4E34-AAF5-6442259A6AD4/Geometrie[1], tid2 F4216F8D-813C-46B8-A15D-81E25108DAD5/Geometrie[1]

Im Gegensatz:

Error: SO_Nutzungsplanung_20171118.Nutzungsplanung.Ueberlagernd_Flaeche: tid B9AAC4FA-EAE2-4E34-AAF5-6442259A6AD4/Geometrie[1]: Intersection overlap 8.473603496099713E-4, coord1 (2602940.214, 1222483.531), coord2 (2602941.764, 1222483.832), tids 52A7ED10-065D-43C6-9689-C3D77DDDE259/Geometrie[1], B9AAC4FA-EAE2-4E34-AAF5-6442259A6AD4/Geometrie[1]
Error: SO_Nutzungsplanung_20171118.Nutzungsplanung.Ueberlagernd_Flaeche: tid B9AAC4FA-EAE2-4E34-AAF5-6442259A6AD4/Geometrie[1]: Intersection coord1 (2602943.028, 1222484.072), tids 52A7ED10-065D-43C6-9689-C3D77DDDE259/Geometrie[1], B9AAC4FA-EAE2-4E34-AAF5-6442259A6AD4/Geometrie[1]

Polygons overlay: Ist mir auch nicht ganz klar in Abgrenzung zu https://github.com/claeis/ilivalidator/blob/master/docs/ilivalidator.rst#hinweise-zu-fehlermeldungen

claeis commented 1 year ago

Die "Overlay" Meldung bedeutet: ein ganzer Linienabschnitt überdeckt sich (also nicht nur ein oder zwei Schnittpunkte).

edigonzales commented 1 year ago

Ist es "möglich" eine Koordinate des Linienzuges auszugeben? Oder AREA-Validierung refactoren?

KunoWenger commented 1 year ago

Wir haben dasselbe Problem und benötigen zwingen exakte Angaben (Koordinaten) der Überschneidungen! Die betroffenen Flächen sind teilweise riesig, das Auffinden des effektiven Problems ist nur mit sehr grossem Aufwand möglich. Dieses Problem haben wir erst seit ca. einem halben Jahr. Wann wurde die "Verschärfung" des Checkservices installiert? Ich vermute, dass die meisten Probleme Radien betreffen.

claeis commented 1 year ago

Die "Overlay" Meldung bedeutet: ein ganzer Linienabschnitt überdeckt sich (also nicht nur ein oder zwei Schnittpunkte).

Diese Aussage stimmt nicht für die Meldung "polygons overlay ...".

Die Meldung "polygons overlay..." erfolgt wenn folgende Bedingung erfüllt ist: p0.equals(p1) || p0.overlaps(p1) || p0.within(p1) || p1.within(p0). Wobei p0 und p1 Polygone sind und sich die Randlinien nicht schneiden. Es gibt also keine Schnittpunkte, und es sollte einfach sichtbar sein (wenn man nur die beiden in der Meldung referenzierten Polygone anzeigt); das eine Polygon liegt ganz im Anderen.

edigonzales commented 1 year ago

Ich muss einen Fall raussuchen aber die Fehlermeldung erscheint m.E. auch, wenn nicht ein ganzes Polygon innerhalb eines anderen liegt. Und aus diesem Grund findet man die Fehler relativ schlecht.

claeis commented 1 year ago

Wenn nicht das ganze Polygon im Anderen liegt (oder gar identisch ist), sollte eine "Intersection..." Meldung kommen (und keine "polygons overlay...").

claeis commented 1 year ago

Fall RSU.T01f.xtf der Testsuite https://github.com/geoadmin/suite-interlis/blob/master/doc/de/attribute.adoc#rsut01 führt wie erwartet zu "polygons overlay"

claeis commented 1 year ago

Und bei Fall RSU.T01a.xtf werden die überlappenden Segmente inkl. beiden Koordinaten rapportiert.

claeis commented 1 year ago

Und RSU.T12a.xtf für einen Fall wo sich die Ränder schneiden (nur eine Koordinate).

KunoWenger commented 1 year ago

Ich habe ein Beispiel (siehe ZIP-File): npl_kappel.xtf wird geprüft, die Fehlermeldungen in "npl_kappel_ilivalidator.log" helfen nur bedingt zur Fehlersuche. Wenn nur die GlobalIds der betroffenen Flächen herausgegeben werden und die eine Fläche die gesamten Strassen einer Gemeinde betrifft, ist das Finden des effektiven Problem sehr schwierig! npl_kappel.zip

edigonzales commented 1 year ago

Ich habe eine Meldung von Kunos XTF genauer angeschaut:

Error: polygons overlay tid1 669C725B-C16C-4E56-97A8-8AED82E9701A/Geometrie[1], tid2 AF1E4040-9600-44A1-A371-8D11175148DA/Geometrie[1]

Eine der beiden Geometrien hat einen zusätzlichen Stützpunkt "2630735.908,1241643.685", der sehr nahe an der vermeintlich identischen Grenze liegt. Visuell (QGIS) führt das zu einer kleinen Überlappung. Schiebe ich den Punkt bewusst weg von der vermeintlich gemeinsamen Grenze, so dass visuell keine Überlappung sichtbar ist, verschwindet auch die Fehlermeldung.

Warum muss ein Polygon innerhalb eines anderen sein für diese Meldung, wenn gilt p0.overlaps(p1). Siehe z.B. https://postgis.net/docs/en/ST_Overlaps.html

Das XTF muss man mit Zusatzmodell und ini-File testen:

java -jar ilivalidator-1.13.3.jar --config nutzungsplanung.ini npl_kappel.xtf

Es ist der validate set constraint SO_Nutzungsplanung_20171118_Validierung_20211006.Nutzungsplanung_Validierung.v_Ueberlagernd_Flaeche.laermempfindlichkeitsAreaCheck Constraint, der aus einem Subset von Polygonen die Area-Prüfung macht.

nutzungsplanung.ini.zip

claeis commented 1 year ago

https://github.com/geoadmin/suite-interlis/issues/39