ah ah, ancora una volta fanno capolino le mitiche "banane" :-D
esiste un caso particolarissimo di "Poligono con buco interno" in cui il software prodotto da ESRI adotta una convenzione che fa a pugni con gli standard dettati da OGC (vedi figura allegata). il problema nasce quando il "buco" tocca direttamente il boundary della figura; capita molto spesso lungo la linea costiera, quando si incontrano piccolissime insenature. - in questo case secondo ESRI e' lecito disegnare il solo Exterior Ring, che dal punto P entra dentro alla figura, descrive il contorno del "buco", e poi riesce fuori passando ancora una volta dal punto P. - ma questo non e' tollerabile secondo le specifiche degli standard OGC, perche' qualsiasi Ring non puo' mi avere dei punti di autotangenze. quindi, secondo OGC, una topologia di questo tipo va obbligatoriamente descritta utilizzando un Exterior Ring ed un Interior Ring (che ovviamente si intersecano sul punto P, ma questo e' legittimo). ho appena controllato su SpatiaLite lo shape ISTAT 2016: SELECT comune FROM com2016_wgs84 WHERE cod_reg = 20 AND ST_IsValid(geometry) <> 1; --------------------------- La Maddalena Calasetta in Sardegna ci sono due comuni "stile ESRI", e sono proprio loro quelli che disturbano. correggere gli errori fino ad ottenere delle geometrie impeccabili perfettamente coerenti con i requisiti richiesti dagli standard OGC e' decisamente molto semplice: UPDATE com2016_wgs84 SET geometry = MakeValid(geometry) WHERE cod_reg = 20 AND ST_IsValid(geometry) <> 1; verifica finale: SELECT comune, ST_IsValid(geometry) FROM com2016_wgs84 WHERE comune in ('La Maddalena', 'Calasetta'); ------------------------ La Maddalena 1 Calasetta 1 ora finalmente e' tutto a posto ;-) ciao Sandro _______________________________________________ Gfoss@lists.gfoss.it http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 796 iscritti al 28/12/2017