[Gfoss] R: Re: R: Re: R: Re: DB e creazione multipolygons
Marco Li Volsi
marco.livolsi a gmail.com
Mar 18 Nov 2014 10:02:07 CET
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, nora_tassetti a libero.it 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.
> grazie davvero per l'aiuto!
>
> ----Messaggio originale----
> Da: marco.livolsi a gmail.com
> Data: 17/11/2014 21.11
> A: "GFOSS"<gfoss a lists.gfoss.it>
> Ogg: Re: [Gfoss] R: Re: R: Re: DB e creazione multipolygons
>
> 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:
>
> * quanti sono i nomi delle aree?
> * le 2 tabelle stanno già su PostGIS?
>
> Ciao.
>
> Il 17/11/2014 18:37, nora_tassetti a libero.it 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".
>> 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----
>> Da: marco.livolsi a gmail.com
>> Data: 17/11/2014 16.11
>> A: "GFOSS"<gfoss a lists.gfoss.it>
>> Ogg: Re: [Gfoss] R: Re: DB e creazione multipolygons
>>
>> 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, nora_tassetti a libero.it ha scritto:
>>> Ok, certo....scusate avevo dato per scontato che sto lavorando con QGIS e
>>> PostGIS
>>> Grazie
>>>
>>>> ----Messaggio originale----
>>>> Da:lucadeluge a gmail.com
>>>> Data: 17/11/2014 14.10
>>>> A:"nora_tassetti a libero.it"<nora_tassetti a libero.it>
>>>> Cc: "GFOSS"<gfoss a lists.gfoss.it>
>>>> Ogg: Re: [Gfoss] DB e creazione multipolygons
>>>>
>>>> 2014-11-17 13:52 GMT+01:00nora_tassetti a libero.it <nora_tassetti a libero.it>:
>>>>> 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
>>>>
>>> _______________________________________________
>>> 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.
>>> 666+40 iscritti al 5.6.2014
>>
>>
>>
>
>
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.gfoss.it/pipermail/gfoss/attachments/20141118/812e3dcd/attachment-0001.html>
Maggiori informazioni sulla lista
Gfoss