[Gfoss] Problema di analisi spaziale

a.furieri a lqt.it a.furieri a lqt.it
Ven 11 Mar 2016 18:24:54 CET


On Fri, 11 Mar 2016 17:34:34 +0100, gis a controgeografie.net wrote:
> Salve a tutti,
>               mi trovo davanti ad un problema concettualmente
> semplice, ma da cui non riesco ad uscire con una soluzione tecnica.
> Cercando di essere chiaro e sintetico:
> - ho un layer (uno shape, ma non fa differenza) di poligoni (edifici)
> la cui tabella di attributi contiene un campo che ha solo 2
> informazioni (per esemplificare A e B);
> - gli edifici, ovviamente, compongono spesso degli isolati;
>

personalmente non direi affatto "ovviamente"; mescolare edifici
ed isolati dentro ad un unico layer pare un criterio decisamente
confusionario. per buona norma e regola gli edifici vanno su un
layer e gli isolati vanno in un layer distinto (per lo meno,
questo e' il criterio che normalmente adotta p.es. la CTR
vettoriale di regione toscana, ma direi che anche altre regioni
seguono il medesimo criterio).


> - devo isolare (selezionare) tutti i casi in cui gli edifici di tipo
> B  sono racchiusi completamente da edifici di tipo A;
> - ovviamente gli edifici non si intersecano e spesso non si toccano
> neanche, quindi non posso usare i comandi di interrogazione spaziale
> - come software posso lavorare indifferentemente con QGis, postgress,
> grass o...
> ma non trovo un modo per chiedere a nessuno di questi di fare questo 
> lavoro.
>

provo a riformulare il tuo quesito lascindo perdere glu edifici 
incastrati
dentro ad altri edifici come se fossero delle matrioske.
se capisco bene, a te interessa semplicemente identificare quali
poligoni "tipo B" sono completamente coperti da un poligono "tipo A",
che e' un classico problema da Spatial SQL.
p.es. usando SpatiaLite basta utilizzare una query SQL fatta
all'incirca cosi':

SELECT a.id, a.geometry
FROM mytable AS a, mytable AS b
WHERE a.attrib = 'A' AND b.attrib = 'B' AND
       ST_CoveredBy(b.geometry, a.geometry) = 1;

in cui:
- "mytable" e' la tua tavola/layer
- "id" e' la chiave primaria delle tue features
- "attrib" e' la colonna che contiene 'A' oppure 'B'
- "geometry" e' la colonna con le geometrie

con qualche modestissimo arrangiamento ti dovrebbe girare
anche su PostGIS.
se invece vuoi provare con SpatiaLite e devi analizzare molte
features (diciamo oltre 10.000) sarebbe sicuramente utile
aggiungere uno Spatial Index per maggiore velocita': se ti
interessa ne parliamo alla prossima puntata ....

ciao Sandro


Maggiori informazioni sulla lista Gfoss