[Gfoss] Come riaggregare tratti in contatto tra di loro.

aperi2007 aperi2007 a gmail.com
Mer 13 Nov 2013 00:26:18 CET


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 -----|



Maggiori informazioni sulla lista Gfoss