[Gfoss] Come riaggregare tratti in contatto tra di loro.
Sandro Santilli
strk a keybit.net
Mar 12 Nov 2013 23:33:14 CET
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