ciao a tutti,
Devo costruire una geodatabase di progetti europei con le relative aree in cui questi progetti sono stati svolti. Ho la tabella dei circa 2600 progetti a cui devo associare le aree che però devo costruire partendo da poligoni di base già digitalizzati (A, B, C etc) . I poligoni di base devono essere combinati secondo quando scritto in un campo della tabella dei progetti ( es "A / B / E" oppure "D / A / G") . Penso di dover creare i 2600 multipolygon e procedere con operazioni di Join. Come? Oppure, qualcuno mi sa suggerire una strada migliore? Spero di essere riuscita a spiegarmi. Grazie in anticipo per l'aiuto! N. _______________________________________________ [hidden email] 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. 666+40 iscritti al 5.6.2014 |
2014-11-17 13:52 GMT+01:00 [hidden email] <[hidden email]>:
> ciao a tutti, > Devo costruire una geodatabase di progetti europei con le relative aree in > cui questi progetti sono stati svolti. > Ho la tabella dei circa 2600 progetti a cui devo associare le aree che > però devo costruire partendo da poligoni di base già digitalizzati (A, B, C > etc) . I poligoni di base devono essere combinati secondo quando scritto in > un campo della tabella dei progetti ( es "A / B / E" oppure "D / A / G") . > Penso di dover creare i 2600 multipolygon e procedere con operazioni di > Join. Come? > Oppure, qualcuno mi sa suggerire una strada migliore? > con che software? sarebbe importante scrivere una mail che tutti possano capire e non solo che la scrive. Ricordo a tutti gli iscritti di rispettare la netiquette [0] > Spero di essere riuscita a spiegarmi. > Grazie in anticipo per l'aiuto! > > N. > [0] http://it.wikipedia.org/wiki/Netiquette -- ciao Luca http://gis.cri.fmach.it/delucchi/ www.lucadelu.org _______________________________________________ [hidden email] 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. 666+40 iscritti al 5.6.2014 |
In reply to this post by tano
Ok, certo....scusate avevo dato per scontato che sto lavorando con QGIS e PostGIS Grazie >----Messaggio originale---- >Da: [hidden email] >Data: 17/11/2014 14.10 >A: "[hidden email]"<[hidden email]> >Cc: "GFOSS"<[hidden email]> >Ogg: Re: [Gfoss] DB e creazione multipolygons > >2014-11-17 13:52 GMT+01:00 [hidden email] <[hidden email]>: >> ciao a tutti, >> Devo costruire una geodatabase di progetti europei con le relative aree in >> cui questi progetti sono stati svolti. >> Ho la tabella dei circa 2600 progetti a cui devo associare le aree che >> però devo costruire partendo da poligoni di base già digitalizzati (A, B, C >> etc) . I poligoni di base devono essere combinati secondo quando scritto in >> un campo della tabella dei progetti ( es "A / B / E" oppure "D / A / G") . >> Penso di dover creare i 2600 multipolygon e procedere con operazioni di >> Join. Come? >> Oppure, qualcuno mi sa suggerire una strada migliore? >> > >con che software? sarebbe importante scrivere una mail che tutti >possano capire e non solo che la scrive. >Ricordo a tutti gli iscritti di rispettare la netiquette [0] > >> Spero di essere riuscita a spiegarmi. >> Grazie in anticipo per l'aiuto! >> >> N. >> > > >[0] http://it.wikipedia.org/wiki/Netiquette > >-- >ciao >Luca > >http://gis.cri.fmach.it/delucchi/ >www.lucadelu.org > _______________________________________________ [hidden email] 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. 666+40 iscritti al 5.6.2014 |
Ciao... Interpreto:
Hai una tabella con dentro delle aree: id,nome 1,pippo 2,pluto 3,paperino 4,paperone 5,paperoga 6,orazio 7,clarabella 8,nonna papera Hai anche una tabella con dentro i progetti, vari campi tra cui uno testuale con nomi di area (coincidenti con la precedente) scritti secondo una certa metrica campo1,..., aree [valore1],... , "pippo / paperino / clarabella" [valore2],... , "paperino / paperoga" [valore3],... , "pluto / paperone / paperoga" la metrica di questo campo è ben definita [nomearea]+[spazio]+[/]+[nomearea]+[spazio]+...+[nomearea] Secondo la tua descrizione le tabelle delle aree e dei progetti sono in relazione n-n, tuttavia tale relazione è esplicitata in formato testuale in un campo della tabella dei progetti. La mia analisi è giusta? Il 17/11/2014 14:14, [hidden email] ha scritto: Ok, certo....scusate avevo dato per scontato che sto lavorando con QGIS e PostGIS Grazie----Messaggio originale---- Da: [hidden email] Data: 17/11/2014 14.10 A: [hidden email][hidden email] Cc: "GFOSS"[hidden email] Ogg: Re: [Gfoss] DB e creazione multipolygons 2014-11-17 13:52 GMT+01:00 [hidden email] [hidden email]:ciao a tutti, Devo costruire una geodatabase di progetti europei con le relative aree in cui questi progetti sono stati svolti. Ho la tabella dei circa 2600 progetti a cui devo associare le aree che però devo costruire partendo da poligoni di base già digitalizzati (A, B, C etc) . I poligoni di base devono essere combinati secondo quando scritto in un campo della tabella dei progetti ( es "A / B / E" oppure "D / A / G") . Penso di dover creare i 2600 multipolygon e procedere con operazioni di Join. Come? Oppure, qualcuno mi sa suggerire una strada migliore?con che software? sarebbe importante scrivere una mail che tutti possano capire e non solo che la scrive. Ricordo a tutti gli iscritti di rispettare la netiquette [0]Spero di essere riuscita a spiegarmi. Grazie in anticipo per l'aiuto! N.[0] http://it.wikipedia.org/wiki/Netiquette -- ciao Luca http://gis.cri.fmach.it/delucchi/ www.lucadelu.org_______________________________________________ [hidden email] 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. 666+40 iscritti al 5.6.2014 _______________________________________________ [hidden email] 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. 666+40 iscritti al 5.6.2014 |
In reply to this post by tano
Sì la tua analisi è giusta: Più progetti cadono nella stessa area e un 'area può interessare più progetti e la relazione è esplicita in formato testuale nel campo AREA della tabella dei progetti secondo la metrica " area1 / area2 / area3".
Delle aree di base ho uno shp con campi ID e NOME_AREA. Non capisco come mi conviene procedere. Il tutto deve andare in un webGis. Grazie e scusate ma con il problema sotto glio occhi sembra sempre di dare una spiegazione esaustiva ;) ----Messaggio originale---- _______________________________________________ [hidden email] 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. 666+40 iscritti al 5.6.2014 |
Perchè si possa risolvere questo
compitino via SQL bisognerebbe creare una tabella di relazione n-n
e popolarla opportunamente con le informazioni prese dal campo
AREA.
2 domandine semplici semplici:
Il 17/11/2014 18:37, [hidden email] ha scritto: Sì la tua analisi è giusta: Più progetti cadono nella stessa area e un 'area può interessare più progetti e la relazione è esplicita in formato testuale nel campo AREA della tabella dei progetti secondo la metrica " area1 / area2 / area3". _______________________________________________ [hidden email] 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. 666+40 iscritti al 5.6.2014 |
In reply to this post by tano
Ho uno shp con 74 aree di base e un tabella con 2600 progetti svolti in aree che sono combinazioni delle 74 aree base. Sì entrambe già in PostGis.
grazie davvero per l'aiuto!
----Messaggio originale---- _______________________________________________ [hidden email] 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. 666+40 iscritti al 5.6.2014 |
Bisogna, prima di tutto, creare una
tabella di relazione n-n... ho immaginato questa
CREATE TABLE rlt_progetti_aree ( id_progetti integer NOT NULL, id_aree integer NOT NULL, CONSTRAINT pk_rlt_aree_progetti PRIMARY KEY (id_progetti, id_aree) ); immaginando che i campi chiave delle tabelle delle aree e dei progetti siano di tipo numerico integer. A domani per la procedura per sbrogliare la matassa... oggi sono cotto. Il 17/11/2014 21:15, [hidden email] ha scritto: Ho uno shp con 74 aree di base e un tabella con 2600 progetti svolti in aree che sono combinazioni delle 74 aree base. Sì entrambe già in PostGis. _______________________________________________ [hidden email] 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. 666+40 iscritti al 5.6.2014 |
In reply to this post by tano
Ok, dopo 9 ore di sonno (non ancora
completate), posso continuare.
Dopo aver creato la tabella di relazione n-n CREATE TABLE rlt_progetti_aree ( id_progetti integer NOT NULL, id_aree integer NOT NULL, CONSTRAINT pk_rlt_aree_progetti PRIMARY KEY (id_progetti, id_aree) ); utilizza questo pezzetto di codice pl/pgsql per popolare la tabella DO $$ DECLARE separator text; cur_progetti CURSOR FOR SELECT {id progetto}, {aree progetto} FROM {schema}.{tabella progetti} ORDER BY {id progetto}; cur_aree CURSOR (narea_progetto text) IS SELECT {id area} FROM {schema}.{tabella aree} WHERE {nome area} = narea_progetto ORDER BY {id area}; aree_id integer; aree_values text[]; aree_avalue text; BEGIN separator := '/'; FOR rec_progetti IN cur_progetti LOOP aree_id := rec_progetti.id; aree_values := regexp_split_to_array(rec_progetti.aree, separator); FOREACH aree_avalue IN ARRAY aree_values LOOP FOR rec_aree IN cur_aree(trim(both ' ' from aree_avalue)) LOOP EXECUTE 'INSERT INTO {schema}.rlt_progetti_aree (id_progetti, id_aree) VALUES (' || aree_id ||', ' || rec_aree.{id area} || ')'; END LOOP; END LOOP; END LOOP; END $$; sostituisci alle parti tra {} i nomi dei campi, delle tabelle e dello schema delle tue tabelle di progetti e aree. Questo codice ha delle limitazioni: i nomi delle aree scritte nel campo della tabella progetti deve essere PERFETTAMENTE IDENTICO con il nome riportato nella tabella delle aree (carattere per carattere, anche le maiuscole/minuscole), altrimenti la relazione tra aree e progetti verrà saltata Esegui il codice in una finestrella SQL di PgAdminIII e dovresti avere la tabella di relazione popolata. Ciao. Il 17/11/2014 21:15, [hidden email] ha scritto: Ho uno shp con 74 aree di base e un tabella con 2600 progetti svolti in aree che sono combinazioni delle 74 aree base. Sì entrambe già in PostGis. _______________________________________________ [hidden email] 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. 666+40 iscritti al 5.6.2014 |
Se tutto l'accrocchio che ti ho scritto è andato bene puoi creare
una vista (una vista materializzata o una tabella fisica) con
CREATE VIEW {schema}.{nome vista} AS SELECT p.{id progetto}, {... tutti i vari campi che ti pare dalle tabelle che vuoi}, ST_Multi(ST_Collect(a.{geometria delle aree})) FROM {schema}.{tabella progetti} p LEFT JOIN {schema}.rlt_progetti_aree pa ON p.id = pa.id_progetti INNER JOIN {tabella aree} a ON pa.id_aree = a.{id area} GROUP BY p.{id progetto} ORDER BY p.{id progetto}; come prima sostituisci alle parti fra {} i campi, tabelle e schema, fai i tuoi controlli e fammi sapere. Ciao. -------- Messaggio Inoltrato --------
Ok, dopo 9 ore di sonno (non ancora
completate), posso continuare.
Dopo aver creato la tabella di relazione n-n CREATE TABLE rlt_progetti_aree ( id_progetti integer NOT NULL, id_aree integer NOT NULL, CONSTRAINT pk_rlt_aree_progetti PRIMARY KEY (id_progetti, id_aree) ); utilizza questo pezzetto di codice pl/pgsql per popolare la tabella DO $$ DECLARE separator text; cur_progetti CURSOR FOR SELECT {id progetto}, {aree progetto} FROM {schema}.{tabella progetti} ORDER BY {id progetto}; cur_aree CURSOR (narea_progetto text) IS SELECT {id area} FROM {schema}.{tabella aree} WHERE {nome area} = narea_progetto ORDER BY {id area}; aree_id integer; aree_values text[]; aree_avalue text; BEGIN separator := '/'; FOR rec_progetti IN cur_progetti LOOP aree_id := rec_progetti.id; aree_values := regexp_split_to_array(rec_progetti.aree, separator); FOREACH aree_avalue IN ARRAY aree_values LOOP FOR rec_aree IN cur_aree(trim(both ' ' from aree_avalue)) LOOP EXECUTE 'INSERT INTO {schema}.rlt_progetti_aree (id_progetti, id_aree) VALUES (' || aree_id ||', ' || rec_aree.{id area} || ')'; END LOOP; END LOOP; END LOOP; END $$; sostituisci alle parti tra {} i nomi dei campi, delle tabelle e dello schema delle tue tabelle di progetti e aree. Questo codice ha delle limitazioni: i nomi delle aree scritte nel campo della tabella progetti deve essere PERFETTAMENTE IDENTICO con il nome riportato nella tabella delle aree (carattere per carattere, anche le maiuscole/minuscole), altrimenti la relazione tra aree e progetti verrà saltata Esegui il codice in una finestrella SQL di PgAdminIII e dovresti avere la tabella di relazione popolata. Ciao. Il 17/11/2014 21:15, [hidden email] ha scritto: Ho uno shp con 74 aree di base e un tabella con 2600 progetti svolti in aree che sono combinazioni delle 74 aree base. Sì entrambe già in PostGis. _______________________________________________ [hidden email] 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. 666+40 iscritti al 5.6.2014 |
Free forum by Nabble | Edit this page |