<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Se tutto l'accrocchio che ti ho scritto è andato bene puoi creare
una vista (una vista materializzata o una tabella fisica) con<br>
<font color="#cc0000"><small><small>CREATE VIEW {schema}.{nome
vista} AS<br>
SELECT p.{id progetto}, {... tutti i vari campi che ti pare
dalle tabelle che vuoi}, ST_Multi(ST_Collect(a.{geometria
delle aree}))<br>
FROM {schema}.{tabella progetti} p<br>
LEFT JOIN {schema}.rlt_progetti_aree pa<br>
ON p.id = pa.id_progetti<br>
INNER JOIN {tabella aree} a<br>
ON pa.id_aree = a.{id area}<br>
GROUP BY p.{id progetto}<br>
ORDER BY p.{id progetto};</small></small></font><br>
come prima sostituisci alle parti fra {} i campi, tabelle e schema,
fai i tuoi controlli e fammi sapere.<br>
Ciao.<br>
<div class="moz-forward-container"><br>
<br>
-------- Messaggio Inoltrato --------
<table class="moz-email-headers-table" border="0" cellpadding="0"
cellspacing="0">
<tbody>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Oggetto:
</th>
<td>Re: R: Re: [Gfoss] R: Re: R: Re: DB e creazione
multipolygons</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Data: </th>
<td>Tue, 18 Nov 2014 10:02:07 +0100</td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">Mittente:
</th>
<td>Marco Li Volsi <a class="moz-txt-link-rfc2396E" href="mailto:marco.livolsi@gmail.com"><marco.livolsi@gmail.com></a></td>
</tr>
<tr>
<th align="RIGHT" nowrap="nowrap" valign="BASELINE">A: </th>
<td>GFOSS <a class="moz-txt-link-rfc2396E" href="mailto:gfoss@lists.gfoss.it"><gfoss@lists.gfoss.it></a></td>
</tr>
</tbody>
</table>
<br>
<br>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<div class="moz-cite-prefix">Ok, dopo 9 ore di sonno (non ancora
completate), posso continuare.<br>
Dopo aver creato la tabella di relazione n-n<br>
<small><small><font color="#cc0000">CREATE TABLE
rlt_progetti_aree<br>
(<br>
id_progetti integer NOT NULL,<br>
id_aree integer NOT NULL,<br>
CONSTRAINT pk_rlt_aree_progetti PRIMARY KEY
(id_progetti, id_aree)<br>
);</font></small></small><br>
utilizza questo pezzetto di codice pl/pgsql per popolare la
tabella<br>
<font color="#cc0000"><small><small>DO $$<br>
DECLARE<br>
separator text;<br>
cur_progetti CURSOR FOR SELECT {id progetto}, {aree
progetto} FROM {schema}.{tabella progetti} ORDER BY {id
progetto};<br>
cur_aree CURSOR (narea_progetto text) IS SELECT {id
area} FROM {schema}.{tabella aree} WHERE {nome area} =
narea_progetto ORDER BY {id area};<br>
aree_id integer;<br>
aree_values text[];<br>
aree_avalue text;<br>
BEGIN<br>
separator := '/';<br>
FOR rec_progetti IN cur_progetti LOOP<br>
aree_id := rec_progetti.id;<br>
aree_values :=
regexp_split_to_array(rec_progetti.aree, separator);<br>
FOREACH aree_avalue IN ARRAY aree_values LOOP<br>
FOR rec_aree IN cur_aree(trim(both ' ' from
aree_avalue)) LOOP<br>
EXECUTE 'INSERT INTO
{schema}.rlt_progetti_aree (id_progetti, id_aree) VALUES
(' || aree_id ||', ' || rec_aree.{id area} || ')';<br>
END LOOP;<br>
END LOOP;<br>
END LOOP;<br>
END $$;</small></small></font><br>
sostituisci alle parti tra {} i nomi dei campi, delle tabelle e
dello schema delle tue tabelle di progetti e aree.<br>
Questo codice ha delle limitazioni:<br>
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<br>
Esegui il codice in una finestrella SQL di PgAdminIII e dovresti
avere la tabella di relazione popolata.<br>
Ciao.<br>
<br>
Il 17/11/2014 21:15, <a moz-do-not-send="true"
class="moz-txt-link-abbreviated"
href="mailto:nora_tassetti@libero.it">nora_tassetti@libero.it</a>
ha scritto:<br>
</div>
<blockquote
cite="mid:471172574.6049361416255356229.JavaMail.httpd@webmail-37.iol.local"
type="cite">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.
<div>grazie davvero per l'aiuto!</div>
<br>
<blockquote> ----Messaggio originale----<br>
Da: <a moz-do-not-send="true"
class="moz-txt-link-abbreviated"
href="mailto:marco.livolsi@gmail.com">marco.livolsi@gmail.com</a><br>
Data: 17/11/2014 21.11<br>
A: "GFOSS"<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="mailto:gfoss@lists.gfoss.it"><gfoss@lists.gfoss.it></a><br>
Ogg: Re: [Gfoss] R: Re: R: Re: DB e creazione multipolygons<br>
<br>
<!--
-->
<div class="moz-cite-prefix">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.<br>
2 domandine semplici semplici:<br>
<ul>
<li>quanti sono i nomi delle aree?</li>
<li>le 2 tabelle stanno già su PostGIS?</li>
</ul>
Ciao.<br>
<br>
Il 17/11/2014 18:37, <a moz-do-not-send="true"
class="moz-txt-link-abbreviated"
href="mailto:nora_tassetti@libero.it">nora_tassetti@libero.it</a>
ha scritto:<br>
</div>
<blockquote
cite="mid:569343784.5987361416245834463.JavaMail.httpd@webmail-37.iol.local"
type="cite">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".
<div>Delle aree di base ho uno shp con campi ID e NOME_AREA.</div>
<div>Non capisco come mi conviene procedere. Il tutto deve
andare in un webGis.</div>
<div><br>
</div>
<div>Grazie e scusate ma con il problema sotto glio occhi
sembra sempre di dare una spiegazione esaustiva ;)<br>
<br>
<blockquote> ----Messaggio originale----<br>
Da: <a moz-do-not-send="true"
class="moz-txt-link-abbreviated"
href="mailto:marco.livolsi@gmail.com">marco.livolsi@gmail.com</a><br>
Data: 17/11/2014 16.11<br>
A: "GFOSS"<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E"
href="mailto:gfoss@lists.gfoss.it"><gfoss@lists.gfoss.it></a><br>
Ogg: Re: [Gfoss] R: Re: DB e creazione multipolygons<br>
<br>
<!--
-->
<div class="moz-cite-prefix">Ciao... Interpreto:<br>
Hai una tabella con dentro delle aree:<br>
<small><small><font color="#cc0000">id,nome<br>
1,pippo<br>
2,pluto<br>
3,paperino<br>
4,paperone<br>
5,paperoga<br>
6,orazio<br>
7,clarabella<br>
8,nonna papera</font></small></small><br>
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<br>
<small><small><font color="#cc0000">campo1,..., aree<br>
[valore1],... , "pippo / paperino / clarabella"<br>
[valore2],... , "paperino / paperoga"<br>
[valore3],... , "pluto / paperone / paperoga"</font></small></small><br>
la metrica di questo campo è ben definita<br>
<font color="#cc0000"><small><small>[nomearea]+[spazio]+[/]+[nomearea]+[spazio]+...+[nomearea]</small></small></font><br>
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.<br>
La mia analisi è giusta?<br>
<br>
Il 17/11/2014 14:14, <a moz-do-not-send="true"
class="moz-txt-link-abbreviated"
href="mailto:nora_tassetti@libero.it">nora_tassetti@libero.it</a>
ha scritto:<br>
</div>
<blockquote
cite="mid:14438963.1087751416230091930.JavaMail.httpd@webmail-02.iol.local"
type="cite">
<pre wrap="">Ok, certo....scusate avevo dato per scontato che sto lavorando con QGIS e
PostGIS
Grazie
</pre>
<blockquote type="cite">
<pre wrap="">----Messaggio originale----
Da: <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:lucadeluge@gmail.com">lucadeluge@gmail.com</a>
Data: 17/11/2014 14.10
A: <a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:nora_tassetti@libero.it">"nora_tassetti@libero.it"</a><a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:nora_tassetti@libero.it"><nora_tassetti@libero.it></a>
Cc: "GFOSS"<a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:gfoss@lists.gfoss.it"><gfoss@lists.gfoss.it></a>
Ogg: Re: [Gfoss] DB e creazione multipolygons
2014-11-17 13:52 GMT+01:00 <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:nora_tassetti@libero.it">nora_tassetti@libero.it</a> <a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:nora_tassetti@libero.it"><nora_tassetti@libero.it></a>:
</pre>
<blockquote type="cite">
<pre wrap="">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?
</pre>
</blockquote>
<pre wrap="">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]
</pre>
<blockquote type="cite">
<pre wrap="">Spero di essere riuscita a spiegarmi.
Grazie in anticipo per l'aiuto!
N.
</pre>
</blockquote>
<pre wrap="">[0] <a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://it.wikipedia.org/wiki/Netiquette">http://it.wikipedia.org/wiki/Netiquette</a>
--
ciao
Luca
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://gis.cri.fmach.it/delucchi/">http://gis.cri.fmach.it/delucchi/</a>
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="http://www.lucadelu.org">www.lucadelu.org</a>
</pre>
</blockquote>
<pre wrap="">_______________________________________________
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:Gfoss@lists.gfoss.it">Gfoss@lists.gfoss.it</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss">http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss</a>
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</pre>
</blockquote>
<br>
<br>
</blockquote>
<br>
</div>
</blockquote>
<br>
<br>
</blockquote>
<br>
</blockquote>
<br>
<br>
</div>
<br>
</body>
</html>