[QGIS-it-user] [QGIS] geoprocessing - risolvere 1:M

Ciao a tutti,
ho un’analisi da fare su dati catastali e per farlo devo risolvere una relazione 1:M.

Da una parte ho un vettoriale delle particelle catastali (senza altre suddivisioni tipo il subalterno; il valore della particella è il dato “atomico”), dall’altra ho i dati tributari dei contribuenti e loro relativa particella catastale.
La relazione è 1:M un contribuente è localizzato in una sola particella e una particella può contenere almeno un contribuente.
Per localizzare i contribuenti sul territorio, in modo tale che un poligono contenga un solo contribuente ho due possibilità:

  • duplico i poligoni tante volte quanti sono i contribuenti collegati
  • divido i poligoni tante volte quanti sono i contribuenti collegati
    In entrambi i casi assegnerò poi un numerico progressivo alle particelle catastali (tipo subalterno) per rendere il dato univoco.
    Per i miei scopi preferisco percorrere la seconda strada, a questo punto vi chiedo: esiste un comando, o plugin, che divida un poligono sulla base di un valore letto in un campo? Eventuali soluzioni alternative?

Ciao a tutti e grazie.
Daniele

···

Daniele Bonaposta,
Cartografia - G.I.S.

via Don Minzoni 13a
40121 - Bologna
mobile: +39.338.3377044
e-mail: daniele.bonaposta@gmail.com

Linkedin: http://www.linkedin.com/pub/daniele-bonaposta/26/487/872


Daniele Bonaposta wrote

Ciao a tutti,
ho un'analisi da fare su dati catastali e per farlo devo risolvere una
relazione 1:M.

Da una parte ho un vettoriale delle particelle catastali (senza altre
suddivisioni tipo il subalterno; il valore della particella è il dato
"atomico"), dall'altra ho i dati tributari dei contribuenti e loro
relativa
particella catastale.
La relazione è 1:M un contribuente è localizzato in una sola particella e
una particella può contenere almeno un contribuente.
Per localizzare i contribuenti sul territorio, in modo tale che un
poligono
contenga un solo contribuente ho due possibilità:

   - duplico i poligoni tante volte quanti sono i contribuenti collegati
   - divido i poligoni tante volte quanti sono i contribuenti collegati

In entrambi i casi assegnerò poi un numerico progressivo alle particelle
catastali (tipo subalterno) per rendere il dato univoco.
Per i miei scopi preferisco percorrere la seconda strada, a questo punto
vi
chiedo: esiste un comando, o plugin, che divida un poligono sulla base di
un valore letto in un campo? Eventuali soluzioni alternative?

Non credo esista un plugin che faccio questo lavoro anche perchè dovrebbe
dividere secondo quale criterio? parallellismo, ortogonalità o cosa?

Qualche anno fà ho dovuto affrontare un problema molto simile, ho pensato
hai punti all'interno del poligono ma cosi facendo non posso tematizzare e
neanche fare un zoom su selezione (perchè i punti non hanno dimensione).

La soluzione adottata è stata quella di duplicare i poligoni (per esempio
con un buffer negativo) uno dentro l'altro; questa soluzione permette di
tematizzare e zoomare alla selezione.

ciao

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/QGIS-geoprocessing-risolvere-1-M-tp5271387p5271396.html
Sent from the QGIS Italian User mailing list archive at Nabble.com.

Il 13/06/2016 15:18, Daniele Bonaposta ha scritto:

vi chiedo: esiste un comando, o plugin, che divida un poligono sulla
base di un valore letto in un campo? Eventuali soluzioni alternative?

non ti conviene usare i centroidi, eventualmente con uno scatter, o
punti random in polygon?
saluti
--
Paolo Cavallini - www.faunalia.eu
QGIS & PostGIS courses: http://www.faunalia.eu/training.html

punti random, ottimo! non c’avevo pensato, grazie Paolo!

···

Il giorno 13 giugno 2016 15:31, Paolo Cavallini <cavallini@faunalia.it> ha scritto:

Il 13/06/2016 15:18, Daniele Bonaposta ha scritto:

vi chiedo: esiste un comando, o plugin, che divida un poligono sulla
base di un valore letto in un campo? Eventuali soluzioni alternative?

non ti conviene usare i centroidi, eventualmente con uno scatter, o
punti random in polygon?
saluti

Paolo Cavallini - www.faunalia.eu
QGIS & PostGIS courses: http://www.faunalia.eu/training.html


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-it-user


Daniele Bonaposta,
Cartografia - G.I.S.

via Don Minzoni 13a
40121 - Bologna
mobile: +39.338.3377044
e-mail: daniele.bonaposta@gmail.com

Linkedin: http://www.linkedin.com/pub/daniele-bonaposta/26/487/872


Il 13/06/2016 15:30, Totò ha scritto:

Qualche anno fà ho dovuto affrontare un problema molto simile, ho pensato
hai punti all'interno del poligono ma cosi facendo non posso tematizzare e
neanche fare un zoom su selezione (perchè i punti non hanno dimensione).

lo zoom dovrebbe funzionare; la tematizzazione tramite operatori
spaziali è un po' arzigogolata, ma dovrebbe risolvere il vostro problema.
Saluti.

--
Paolo Cavallini - www.faunalia.eu
QGIS & PostGIS courses: http://www.faunalia.eu/training.html

Il giorno 13 giugno 2016 15:30, Totò <pigrecoinfinito@gmail.com> ha scritto:

Daniele Bonaposta wrote
> Ciao a tutti,
> ho un'analisi da fare su dati catastali e per farlo devo risolvere una
> relazione 1:M.
>
> Da una parte ho un vettoriale delle particelle catastali (senza altre
> suddivisioni tipo il subalterno; il valore della particella è il dato
> "atomico"), dall'altra ho i dati tributari dei contribuenti e loro
> relativa
> particella catastale.
> La relazione è 1:M un contribuente è localizzato in una sola particella e
> una particella può contenere almeno un contribuente.
> Per localizzare i contribuenti sul territorio, in modo tale che un
> poligono
> contenga un solo contribuente ho due possibilità:
>
> - duplico i poligoni tante volte quanti sono i contribuenti collegati
> - divido i poligoni tante volte quanti sono i contribuenti collegati
>
> In entrambi i casi assegnerò poi un numerico progressivo alle particelle
> catastali (tipo subalterno) per rendere il dato univoco.
> Per i miei scopi preferisco percorrere la seconda strada, a questo punto
> vi
> chiedo: esiste un comando, o plugin, che divida un poligono sulla base di
> un valore letto in un campo? Eventuali soluzioni alternative?

Non credo esista un plugin che faccio questo lavoro anche perchè dovrebbe
dividere secondo quale criterio? parallellismo, ortogonalità o cosa?

Qualche anno fà ho dovuto affrontare un problema molto simile, ho pensato
hai punti all'interno del poligono ma cosi facendo non posso tematizzare e
neanche fare un zoom su selezione (perchè i punti non hanno dimensione).

La soluzione adottata è stata quella di duplicare i poligoni (per esempio
con un buffer negativo) uno dentro l'altro; questa soluzione permette di
tematizzare e zoomare alla selezione.

ciao

​Le tematizzazioni le faccio sui dati aggregati, ma mi è stato chiesto
anche di poter localizzare ogni singolo record dell'entità contribuenti e
per farlo devo per forza risolvere 1:M.

--
View this message in context:
http://osgeo-org.1560.x6.nabble.com/QGIS-geoprocessing-risolvere-1-M-tp5271387p5271396.html
Sent from the QGIS Italian User mailing list archive at Nabble.com.
_______________________________________________
QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-it-user

--
_____________________________

Daniele Bonaposta,
Cartografia - G.I.S.

via Don Minzoni 13a
40121 - Bologna
mobile: +39.338.3377044
e-mail: daniele.bonaposta@gmail.com

*Linked*in: http://www.linkedin.com/pub/daniele-bonaposta/26/487/872

_____________________________

Daniele Bonaposta wrote

​Le tematizzazioni le faccio sui dati aggregati, ma mi è stato chiesto
anche di poter localizzare ogni singolo record dell'entità contribuenti e
per farlo devo per forza risolvere 1:M.

Nell'imminente QGIS 2.16 è stata introdotta una nuova classe di funzioni
(aggregate) che trovi sia sul calcolatore di campi che sul costruttore di
espressioni dove puoi usare le funzioni di aggregazione anche sulle
relazioni 1:M.

saluti.

Lo zoom selezione su punti centra solamente, non zooma!!!

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/QGIS-geoprocessing-risolvere-1-M-tp5271387p5271410.html
Sent from the QGIS Italian User mailing list archive at Nabble.com.

/
Daniele Bonaposta wrote

ho due possibilità:
- duplico i poligoni tante volte quanti sono i contribuenti collegati
- divido i poligoni tante volte quanti sono i contribuenti collegati

/
Beh, ma in entrambi i casi dovrai collegare la sub-particella ad uno
soltanto dei contribuenti, e questo si fa necessariamente a mano, non si
scappa.

Più promettente mi sembra la strada indicata da Paolo, ma che richiede
comunque un faticoso lavoro di join a livello di foglio elettronico.

Una volta fatto, salvi in CSV, che unisci poi alla shape col plugin MMQGIS.

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/QGIS-geoprocessing-risolvere-1-M-tp5271387p5271501.html
Sent from the QGIS Italian User mailing list archive at Nabble.com.

Totò wrote

Daniele Bonaposta wrote

Ciao a tutti,
ho un'analisi da fare su dati catastali e per farlo devo risolvere una
relazione 1:M.

Da una parte ho un vettoriale delle particelle catastali (senza altre
suddivisioni tipo il subalterno; il valore della particella è il dato
"atomico"), dall'altra ho i dati tributari dei contribuenti e loro
relativa
particella catastale.
La relazione è 1:M un contribuente è localizzato in una sola particella e
una particella può contenere almeno un contribuente.
Per localizzare i contribuenti sul territorio, in modo tale che un
poligono
contenga un solo contribuente ho due possibilità:

   - duplico i poligoni tante volte quanti sono i contribuenti collegati
   - divido i poligoni tante volte quanti sono i contribuenti collegati

La soluzione adottata è stata quella di duplicare i poligoni (per esempio
con un buffer negativo) uno dentro l'altro; questa soluzione permette di
tematizzare e zoomare alla selezione.

ciao

Vorrei spiegare meglio quanto descritto brevemente sopra.

I GIS Desktop (come QGIS) non sono dei DB e quindi si appoggiano a dei veri
e propri DBMS come SPatialite o PostgreSQL.
Quando ci si trova difronte a queste problematiche (relazioni 1:M) è sempre
consigliato (è un mio personale pensiero) usare i DB dove è possibile
gestire con molta facilità queste esigenze anche perchè ogni oggetto diventa
una tabella.

Nel caso specifico, passando da un GeoDB (tabella_1, tabella_M), è possibile
realizzare un semplice join tra le due tabelle.
La 'tabella_1' contiene anche la geometria, la 'tabella_M' solo dati
alfanumerici con un numero di record superiore alla tabella_1. Il join
creerebbe una altra tabella (con numero di righe pari alla tabella_M) dove
verrà ripetuta (n volte) anche la geometria contenuta nella tabella_1 (per
questo parlavo di duplicazione).

Faccio un esempio pratico con due shapefile regioni e province istat:
1. reg2011_g (gid,cod_reg, geom);
2. prov2011_g (gid, cod_pro, cod_reg) solo alfanumerico:
query:
SELECT
  prov2011_g.gid, prov2011_g.cod_reg, prov2011_g.cod_pro,
prov2011_g.nome_pro,
  reg2011_g.nome_reg, reg2011_g.geom
FROM
  prov2011_g, reg2011_g
WHERE
  prov2011_g.cod_reg = reg2011_g.cod_reg
order by gid;

questa query genera una altra tabella (è possibile creare una view) con un
numero di righe pari al numero di province (110) e con geometria
(duplicata): es: per la sicilia otterremmo nove volte la geometria della
regione sicilia, una per ogni provincia.

Infine, sulle geometrie sovrapposte è possibile estrarre i centroidi,
effettuare buffer negativi, oppure lasciare tutto per come è. Per la
selezione di feature sovrapposte consiglio l'uso del plugin Expression + di
Nathan Woodrow.

Saluti

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/QGIS-geoprocessing-risolvere-1-M-tp5271387p5271526.html
Sent from the QGIS Italian User mailing list archive at Nabble.com.

Tutto giusto, ma poi se chi ti commissiona il lavoro conosce solo i fogli elettronici e “mappette” in qualche modo devi andargli incontro.
E’ dura far entrare nella testa di alcuni dirigenti e tecnici che un db è meglio di un foglio elettronico e un gis è meglio di un cad… ma piano piano si rendono conto!

···

Il giorno 14 giugno 2016 11:55, Totò <pigrecoinfinito@gmail.com> ha scritto:

Totò wrote

Daniele Bonaposta wrote

Ciao a tutti,
ho un’analisi da fare su dati catastali e per farlo devo risolvere una
relazione 1:M.

Da una parte ho un vettoriale delle particelle catastali (senza altre
suddivisioni tipo il subalterno; il valore della particella è il dato
“atomico”), dall’altra ho i dati tributari dei contribuenti e loro
relativa
particella catastale.
La relazione è 1:M un contribuente è localizzato in una sola particella e
una particella può contenere almeno un contribuente.
Per localizzare i contribuenti sul territorio, in modo tale che un
poligono
contenga un solo contribuente ho due possibilità:

  • duplico i poligoni tante volte quanti sono i contribuenti collegati
  • divido i poligoni tante volte quanti sono i contribuenti collegati
    La soluzione adottata è stata quella di duplicare i poligoni (per esempio
    con un buffer negativo) uno dentro l’altro; questa soluzione permette di
    tematizzare e zoomare alla selezione.

ciao

Vorrei spiegare meglio quanto descritto brevemente sopra.

I GIS Desktop (come QGIS) non sono dei DB e quindi si appoggiano a dei veri
e propri DBMS come SPatialite o PostgreSQL.
Quando ci si trova difronte a queste problematiche (relazioni 1:M) è sempre
consigliato (è un mio personale pensiero) usare i DB dove è possibile
gestire con molta facilità queste esigenze anche perchè ogni oggetto diventa
una tabella.

Nel caso specifico, passando da un GeoDB (tabella_1, tabella_M), è possibile
realizzare un semplice join tra le due tabelle.
La ‘tabella_1’ contiene anche la geometria, la ‘tabella_M’ solo dati
alfanumerici con un numero di record superiore alla tabella_1. Il join
creerebbe una altra tabella (con numero di righe pari alla tabella_M) dove
verrà ripetuta (n volte) anche la geometria contenuta nella tabella_1 (per
questo parlavo di duplicazione).

Faccio un esempio pratico con due shapefile regioni e province istat:

  1. reg2011_g (gid,cod_reg, geom);
  2. prov2011_g (gid, cod_pro, cod_reg) solo alfanumerico:
    query:
    SELECT
    prov2011_g.gid, prov2011_g.cod_reg, prov2011_g.cod_pro,
    prov2011_g.nome_pro,
    reg2011_g.nome_reg, reg2011_g.geom
    FROM
    prov2011_g, reg2011_g
    WHERE
    prov2011_g.cod_reg = reg2011_g.cod_reg
    order by gid;

questa query genera una altra tabella (è possibile creare una view) con un
numero di righe pari al numero di province (110) e con geometria
(duplicata): es: per la sicilia otterremmo nove volte la geometria della
regione sicilia, una per ogni provincia.

Infine, sulle geometrie sovrapposte è possibile estrarre i centroidi,
effettuare buffer negativi, oppure lasciare tutto per come è. Per la
selezione di feature sovrapposte consiglio l’uso del plugin Expression + di
Nathan Woodrow.

Saluti


View this message in context: http://osgeo-org.1560.x6.nabble.com/QGIS-geoprocessing-risolvere-1-M-tp5271387p5271526.html

Sent from the QGIS Italian User mailing list archive at Nabble.com.


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-it-user


Daniele Bonaposta,
Cartografia - G.I.S.

via Don Minzoni 13a
40121 - Bologna
mobile: +39.338.3377044
e-mail: daniele.bonaposta@gmail.com

Linkedin: http://www.linkedin.com/pub/daniele-bonaposta/26/487/872


Ciao Totò,

mi ricollego a questo vecchio post, perchè ho una domanda che mi sembra
attinente.

Semplicemente ho uno shapefile con delle particelle catastali (fabbricati) e
poi un CSV con i proprietari.
Ogni fabbricato può avere più proprietari e, ovviamente, ogni proprietario
può avere più fabbricati.
Ho creato la relazione 1:N che collega ogni fabbricato ai rispettivi
proprietari.

La domanda è: senza usare GeoDB (SpatiaLite per es.) perché altrimenti so
benissimo come fare, è possibile fare delle SELECT che mi permettono di
evidenziare sulla mappa tutti i fabbricati di un dato proprietario?
Forse si può fare con la funzione "relation_aggregate" ? ... ma come ?
Tu sei un mago di queste cose !!

Cari saluti
Nino

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/QGIS-geoprocessing-risolvere-1-M-tp5271387p5316951.html
Sent from the QGIS Italian User mailing list archive at Nabble.com.

Bella domanda …mi metto in fila anch’io ad aspettare la risposta.

···

Il giorno 12 aprile 2017 10:53, nformica <ninofor60@gmail.com> ha scritto:

Ciao Totò,

mi ricollego a questo vecchio post, perchè ho una domanda che mi sembra
attinente.

Semplicemente ho uno shapefile con delle particelle catastali (fabbricati) e
poi un CSV con i proprietari.
Ogni fabbricato può avere più proprietari e, ovviamente, ogni proprietario
può avere più fabbricati.
Ho creato la relazione 1:N che collega ogni fabbricato ai rispettivi
proprietari.

La domanda è: senza usare GeoDB (SpatiaLite per es.) perché altrimenti so
benissimo come fare, è possibile fare delle SELECT che mi permettono di
evidenziare sulla mappa tutti i fabbricati di un dato proprietario?
Forse si può fare con la funzione “relation_aggregate” ? … ma come ?
Tu sei un mago di queste cose !!

Cari saluti
Nino


View this message in context: http://osgeo-org.1560.x6.nabble.com/QGIS-geoprocessing-risolvere-1-M-tp5271387p5316951.html
Sent from the QGIS Italian User mailing list archive at Nabble.com.


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

nformica wrote

Ciao Totò,

mi ricollego a questo vecchio post, perchè ho una domanda che mi sembra
attinente.

Semplicemente ho uno shapefile con delle particelle catastali (fabbricati)
e poi un CSV con i proprietari.
Ogni fabbricato può avere più proprietari e, ovviamente, ogni proprietario
può avere più fabbricati.
Ho creato la relazione 1:N che collega ogni fabbricato ai rispettivi
proprietari.

La domanda è: senza usare GeoDB (SpatiaLite per es.) perché altrimenti so
benissimo come fare, è possibile fare delle SELECT che mi permettono di
evidenziare sulla mappa tutti i fabbricati di un dato proprietario?
Forse si può fare con la funzione "relation_aggregate" ? ... ma come ?
Tu sei un mago di queste cose !!

Cari saluti
Nino

la risposta più immediata è qui:

http://osgeo-org.1560.x6.nabble.com/QGIS-select-in-join-tabella-in-relazione-td5317093.html

saluti

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/QGIS-geoprocessing-risolvere-1-M-tp5271387p5317392.html
Sent from the QGIS Italian User mailing list archive at Nabble.com.

Scusate la ripetizione, ma per chi volesse provare il plugin che “semplifica” un po’ il processo di creazione di selezioni basate su relazioni 1:1 o 1:M settate nel progetto di QGis, ho messo su un repo volante per testare il lavoro di Fiandaca, Larosa e Borruso e riassunto un po’ i vari post su github: https://github.com/pyarchinit/selectFromRelations

Test e apertura di issues sono ben accetti!

https://github.com/pyarchinit/selectFromRelations

Ciao

Luca