[Gfoss] Verifica topologica con PostGIS

Massimiliano Moraca massimilianomoraca a gmail.com
Dom 4 Feb 2018 14:37:41 CET


Era proprio questo che cercavo, grazie e buona domenica :)

Il giorno 4 febbraio 2018 13:26, francesco marucci <
francesco.marucci a gmail.com> ha scritto:

> 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