[Gfoss] Verifica topologica con PostGIS

francesco marucci francesco.marucci a gmail.com
Dom 4 Feb 2018 13:26:01 CET


ciao,
immagino che la tua esigenza si quella di trovare eventuali overlay tra
poligoni appartenenti allo stesso layer, giusto?
in questo caso questo potrebbe aiutarti (un intersect con se stesso):

select g1.gid, g2.gid,
from cuas09_select g1
left join cuas09_select g2 on st_intersects(g1.geom,g2.geom)
where g1.gid <> g2.gid and st_area(st_intersection(g1.geom,g2.geom))>0.0001

(riduci o amplia quel 0.0001 a seconda della precisione del tuo layer)

per quanto riguarda quelli che tu chiami "gap", immagino che intendi quei
"buchi" tra un poligono e l'altro che non ti rendono il tuo layer a
copertura continua, giusto?

facendo questa query e salvandola in una vista geometrica:

select row_number() over() as gid, (gaps.geom).geom
from (
select ST_Dump(ST_Difference(
   (select ST_Setsrid(ST_Extent(geom),4326)::geometry geom from
cuas09_select),
   (select ST_Union(geom) from cuas09_select)
)) as geom) as gaps;

(devi cambiare l'srs del layer)

riesci ad avere dei poligoni interni che ti aiutano a trovare i gap
"interni" (oltre a quelli esterni che invece hanno senso di esistere).

facci sapere.

saluti,
francesco


Il giorno 4 febbraio 2018 12:14, Massimiliano Moraca <
massimilianomoraca a gmail.com> ha scritto:

> Grazie mille Francesco, mi ha confuso la dicitura  Ring
> Self-intersection. Ho fatto come hai detto ed effettivamente ho risolto.
>
> Resta però la curiosità di quale è la giusta sintassi per individuare gap
> e overlay. Tu lo sai?
>
> Il giorno 4 febbraio 2018 12:08, francesco marucci <
> francesco.marucci a gmail.com> ha scritto:
>
>> ciao Massimiliano,
>> perché parli di "buchi"'?
>>
>> postgis ti sta dicendo che sul layer "cuas09_select" trova delle
>> self-intersection, affettuosamente chiamate farfalline, nodini sugli
>> spigoli
>> .
>> se sono tante e tutte veramente molto "piccole" potresti provare ad
>> effettuare una semplificazione con ST_Snaptogrid.
>> altrimenti in questi casi anche ST_MakeValid funziona bene.
>>
>> saluti,
>> francesco
>>
>>
>> Il giorno 4 febbraio 2018 08:51, Massimiliano Moraca <
>> massimilianomoraca a gmail.com> ha scritto:
>>
>> >
>> >
>> > /ERROR: ERRORE: Error performing intersection: TopologyException: Input
>> > geom
>> > 1 is invalid: Ring Self-intersection at or near point 459149.46875
>> > 4514388.5
>> > at 459149.46875 4514388.5
>> >
>> > ...
>> >
>> > Mi ha restituito un elenco di coordinate "problematiche" (es. Ring
>> > Self-intersection[459149.46875 4514388.5]) che ho convertito in tabella,
>> > esportato in csv e reimportato in QGIS come punti. Ho notato però che
>> > nemmeno se vado oltre al 200:1 si notano buchi...
>> >
>> >
>> >
>> _______________________________________________
>> Gfoss a 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
>
>
>


Maggiori informazioni sulla lista Gfoss