Infatti.
Indubbiamente la Touch non va bene , almeno non applicata in tale modo.
Ma non vedo neanche con quale altro modo posso evitare che mi crei delle geometrie multiparte
aggregandomi anche linee disgiunte.

Il suggerimento iniziale si basava sul conoscere a priori quali fossero le linee che si voleva fondere assieme.
Il problema è che non sono note a priori.
O meglio, la regola è che si vuole fondere le linee che rappresentano un continuum

La relazione di continuita' tra due linee è data dalla relazione di Touch, ma come dicevo da sola non basta perche'
funziona solo per aggregare due linee.

On 12/11/2013 23:33, Sandro Santilli wrote:
On Mon, Nov 11, 2013 at 10:10:22PM +0100, aperi2007 wrote:
Ciao Alessandro,
grazie per il suggerimento,

ci avevo pensato, ma la avevo scartata perche' mi genererebbe solo
legami a coppie.
Non mi risulta:

strk=# select ST_AsText(ST_LineMerge(ST_Collect(g))) FROM ( VALUES
  ('LINESTRING(0 0, 10 0)'),  -- trattoA
  ('LINESTRING(10 0, 20 0)'), -- trattoB
  ('LINESTRING(20 0, 30 0)'), -- trattoC
  ('LINESTRING(30 0, 40 0)') -- trattoD
) f(g);
            st_astext
--------------------------------
  LINESTRING(0 0,10 0,20 0,30 0,40 0)
(1 row)

e se faccio una cosa del tipo:

SELECT
     ST_LineMerge(ST_Collect(geom))
FROM
     qualche_tavola as a
WHERE
     qualche_attributo IN (select  b.qualche-attributo from qualche
tavola as b where ST_Touch(a.geom,b.geom)=1);

avrei ottenuto appunto una aggregazione a coppie.

Ovvero otterrei come tratti separati:
trattoA+trattoB e trattoB+trattoC
Certo se limiti con ST_Touch sei tu a chiedere le coppie.

--strk;

On Mon, 11 Nov 2013 21:49:49 +0100, aperi2007 wrote:
Ho uno shapefile di tratti lineari,

I quali tratti possono essere tra loro in contatto sugli estremi.

Ad esempio:


|----trattoA-----|-----trattoB------|--------trattoC-----|----trattoD---|


Il risultato che vorrei ottenere è
un nuovo tratto composto di

|-----TrattoA + TrattoB + TrattoC + TrattoD -----|

_______________________________________________
Gfoss@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 iscritti al 22.7.2013

Rispondere a