Come riaggregare tratti in contatto tra di loro.

classic Classic list List threaded Threaded
28 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Come riaggregare tratti in contatto tra di loro.

Andrea Peri
Per praticita' avevo provato su spatialite.

Ovvero avevo aggregato tutto e poi con il comando

"elemgeo" di spatialite, che dovrebbe corrispondere a st_dump di postgis,
avevo disaggregato.
Pero' mi sono ritrovato i trattini originali.
:)

Poi dalla email di Furieri

http://lists.gfoss.it/pipermail/gfoss/2013-November/029878.html

avevo inteso che tale risultato era dovuto alle strategie di Geos.

Non ti risulta questa cosa ?

A.



Il giorno 13 novembre 2013 10:34, Sandro Santilli <[hidden email]> ha scritto:
On Wed, Nov 13, 2013 at 12:26:18AM +0100, aperi2007 wrote:
>
> 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.

Le aggrega come MULTILINE, puoi fare un ST_Dump a posteriori.

--strk;



--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------

_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Come riaggregare tratti in contatto tra di loro.

Sandro Santilli
On Wed, Nov 13, 2013 at 10:49:39AM +0100, Andrea Peri wrote:

> Per praticita' avevo provato su spatialite.
>
> Ovvero avevo aggregato tutto e poi con il comando
>
> "elemgeo" di spatialite, che dovrebbe corrispondere a st_dump di postgis,
> avevo disaggregato.
> Pero' mi sono ritrovato i trattini originali.
> :)
>
> Poi dalla email di Furieri
>
> http://lists.gfoss.it/pipermail/gfoss/2013-November/029878.html
>
> avevo inteso che tale risultato era dovuto alle strategie di Geos.
>
> Non ti risulta questa cosa ?

Mi risulta che se le linee non si "toccano" esattamente (ovvero
se hanno intersezioni interne, on non si toccano proprio) allora la
LineMerge non sara' in grado di giuntarle. E' un caso da considerare.
Gli altri (ambiguita' nelle giunzioni) credo ti siano chiari.

--strk;
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Come riaggregare tratti in contatto tra di loro.

Maurizio Trevisani
In reply to this post by Andrea Peri
Avevo fatto anche io le stesse prove, ottenendo gli stessi risultati.
Scrive Sandro Santilli

Mi risulta che se le linee non si "toccano" esattamente (ovvero
se hanno intersezioni interne, on non si toccano proprio) allora la
LineMerge non sara' in grado di giuntarle. E' un caso da considerare.

ma l'archivio in questione è correttamente "giuntato" (gli estremi snappano correttamente): deriva da una vecchia coverage arc/info su cui erano implementate routes, topologia, ecc.

Il risultato desiderato è stato raggiunto con il comando dissolve ( http://resources.esri.com/help/9.3/arcgisdesktop/com/gp_toolref/coverage_tools/dissolve_coverage_.htm ) in arcinfo workstation (lo strumento della mia gioventù :-)  )

Il fatto è che st_linemerge cerca di operare una dissolve senza sfruttare una organizzazione dei dati topologica: l'obiettivo da perseguire è quello di superare il concetto di tabella con geometrie, ed orientarsi verso una serie di tabelle che implementino compiutamente la topologia: a partire da quella (dove from-node, to-node, left-poly, right-poly sono informazioni disponibili e calcolate a partire da dati "cleaned") diventa tutto immensamente più semplice da affrontare.

Ciao,
Maurizio



Il giorno 12 novembre 2013 01:37, aperi2007 <[hidden email]> ha scritto:
Ciao Alessandro,

ho provato con una variante del tuo suggerimento:

usando spatialite ho provato a fondere tutto lo shapefile in un unico elemento multilinestring.

con questo comando appunto:

create table aggregato_all (pk_uid integer primary key);
select AddGeometryColumn('aggregato_all','geometry',3003,'MULTILINESTRING','XY',1);
insert into aggregato_all(geometry) select ST_Multi(ST_LineMerge(geometry)) from tabella-dei-tratti;

dopodiche' con la elemgeo li ho riscomposti.
mi aspettavo che ritornasse le linee aggregate sui tratti in contatto per touch.
Invece mi sono rispuntati i tratti originali. :/

Qui forse fraintendo io il significato della LineMerge ?

Ho provato anche con la ST_union, ma il risultato è analogo.


Andrea.


On 11/11/2013 22:01, [hidden email] wrote:
On Mon, 11 Nov 2013 21:49:49 +0100, aperi2007 wrote:
Salve,

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

Conoscete un software o un plugin che riesca a riprodurre un tale risultato ?


Andrea,
questa l'hai provata ?

SELECT ST_LineMerge(ST_Collect(geom))
FROM qualche_tavola
WHERE qualche_attributo IN ('TrattoA', 'TrattoB', 'TrattoC', 'TrattoD');

ti dovrebbe funzionare tanto con PostGIS come con splite, visto che
e' supportata direttamente dalla GEOS.

ciao Sandro
_______________________________________________
[hidden email]
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

_______________________________________________
[hidden email]
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


_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Come riaggregare tratti in contatto tra di loro.

Sandro Santilli
On Wed, Nov 13, 2013 at 08:17:34PM +0100, Maurizio Trevisani wrote:

> Scrive Sandro Santilli
>
>> Mi risulta che se le linee non si "toccano" esattamente (ovvero
>> se hanno intersezioni interne, on non si toccano proprio) allora la
>> LineMerge non sara' in grado di giuntarle. E' un caso da considerare.
>
> ma l'archivio in questione è correttamente "giuntato" (gli estremi snappano
> correttamente): deriva da una vecchia coverage arc/info su cui erano
> implementate routes, topologia, ecc.

In questo caso si direbbe un bug.
Riuscite a produrre un estratto (il piu' piccolo possibile)
che possa servire per riprodurre il problema ?

--strk;

 ()  ASCII ribbon campaign        - against html e-mail
 /\  http://www.asciiribbon.org   - against proprietary attachments
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Come riaggregare tratti in contatto tra di loro.

Andrea Peri
Non sono sicuro che ci sia un bug.

La Geos giunta correttamente, il problema è che poi quando si fa' la elem.geo vengono disgiuntati troppo.

Secondo Furieri è un bug della Geos, io sospettoo cheinvece sia un bug della spatialite.
:))
ovrei provare su postgis, ma in questo momento non ho proprio tempo.
Affogo nel lavoro.
Ad ogni modo in attesa che produca un set minimo, se puoi provare con questo shapefile nel thread seguente:

http://lists.gfoss.it/pipermail/gfoss/2013-November/029869.html

In tale shapefile tutti i tratti sono unici oppure se sono in contatto sono giuntati a modino, perche' ricavati da un ambiente topologico.vero.

Andrea.




Il giorno 14 novembre 2013 17:53, Sandro Santilli <[hidden email]> ha scritto:
On Wed, Nov 13, 2013 at 08:17:34PM +0100, Maurizio Trevisani wrote:

> Scrive Sandro Santilli
>
>> Mi risulta che se le linee non si "toccano" esattamente (ovvero
>> se hanno intersezioni interne, on non si toccano proprio) allora la
>> LineMerge non sara' in grado di giuntarle. E' un caso da considerare.
>
> ma l'archivio in questione è correttamente "giuntato" (gli estremi snappano
> correttamente): deriva da una vecchia coverage arc/info su cui erano
> implementate routes, topologia, ecc.

In questo caso si direbbe un bug.
Riuscite a produrre un estratto (il piu' piccolo possibile)
che possa servire per riprodurre il problema ?

--strk;

 ()  ASCII ribbon campaign        - against html e-mail
 /\  http://www.asciiribbon.org   - against proprietary attachments



--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------

_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Come riaggregare tratti in contatto tra di loro.

Andrea Fredduzzi
Se non ho capito male, forse la sto facendo troppo semplice, basta un unico comando di grass: v.build.polylines


Funziona se le linee di un unico vettoriale hanno effettivamente i vertici coincidenti: cioè in editing i vertici appaiono in verde.




ciao



Il giorno 14 novembre 2013 18:01, Andrea Peri <[hidden email]> ha scritto:
Non sono sicuro che ci sia un bug.

La Geos giunta correttamente, il problema è che poi quando si fa' la elem.geo vengono disgiuntati troppo.

Secondo Furieri è un bug della Geos, io sospettoo cheinvece sia un bug della spatialite.
:))
ovrei provare su postgis, ma in questo momento non ho proprio tempo.
Affogo nel lavoro.
Ad ogni modo in attesa che produca un set minimo, se puoi provare con questo shapefile nel thread seguente:

http://lists.gfoss.it/pipermail/gfoss/2013-November/029869.html

In tale shapefile tutti i tratti sono unici oppure se sono in contatto sono giuntati a modino, perche' ricavati da un ambiente topologico.vero.

Andrea.




Il giorno 14 novembre 2013 17:53, Sandro Santilli <[hidden email]> ha scritto:

On Wed, Nov 13, 2013 at 08:17:34PM +0100, Maurizio Trevisani wrote:

> Scrive Sandro Santilli
>
>> Mi risulta che se le linee non si "toccano" esattamente (ovvero
>> se hanno intersezioni interne, on non si toccano proprio) allora la
>> LineMerge non sara' in grado di giuntarle. E' un caso da considerare.
>
> ma l'archivio in questione è correttamente "giuntato" (gli estremi snappano
> correttamente): deriva da una vecchia coverage arc/info su cui erano
> implementate routes, topologia, ecc.

In questo caso si direbbe un bug.
Riuscite a produrre un estratto (il piu' piccolo possibile)
che possa servire per riprodurre il problema ?

--strk;

 ()  ASCII ribbon campaign        - against html e-mail
 /\  http://www.asciiribbon.org   - against proprietary attachments



--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------

_______________________________________________
[hidden email]
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



--
Andrea Fredduzzi (phD)
Department of Civil and Environmental Engineering 
University of Perugia
Via G. Duranti 93/a - 06125 Perugia (Italy)
e-mail: [hidden email] - [hidden email]
tel: +39(0)755853760 - fax: +39(0)755853756

_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Come riaggregare tratti in contatto tra di loro.

a.furieri
In reply to this post by Andrea Peri
On Thu, 14 Nov 2013 18:01:16 +0100, Andrea Peri wrote:

> Non sono sicuro che ci sia un bug.
>
> La Geos giunta correttamente, il problema è che poi quando si fa' la
> elem.geo vengono disgiuntati troppo.
>
> Secondo Furieri è un bug della Geos, io sospettoo cheinvece sia un
> bug della spatialite.
>  :))
>
> ovrei provare su postgis, ma in questo momento non ho proprio tempo.
>
> Affogo nel lavoro.
> Ad ogni modo in attesa che produca un set minimo, se puoi provare con
> questo shapefile nel thread seguente:
>
> http://lists.gfoss.it/pipermail/gfoss/2013-November/029869.html [2]
>
> In tale shapefile tutti i tratti sono unici oppure se sono in
> contatto
> sono giuntati a modino, perche' ricavati da un ambiente
> topologico.vero.
>

Andrea,

forse tra i vari post ti e' sfuggito, ma ti avevo gia' risposto ieri.
quel tuo campione funziona perfettamente bene su splite

CREATE TABLE sample2 AS
SELECT ST_LineMerge(ST_Collect(geometry)) AS geom
FROM little_sample_route;
SELECT RecoverGeometryColumn('sample2', 'geom', 3003,
'MULTILINESTRING', 'XY');
.elemgeo

si parte con 24 linestrings ed al termine del processo ne abbiamo solo
9;
a me pare proprio che funzioni tutto secondo attesa.

quel che dicevo a riguardo della GEOS e' che non sempre pare funzionare
quando gli si passano aggregati veramente enormi, p.es con alcune
migliaia
di pezzettini: in quel caso mi pare che assai spesso si ottiene
indietro
esattamente il dataset di partenza tal quale senza nessuna ri-cucitura.

ma probabilmente ha ragione Srtk; forse quando gli passi troppa roba
non sempre puoi essere sicuro che sia tutta rigorosamente coerente
da un punto di vista topologico.
Perlomeno, io non ho mai fatto un test di questo tipo con materiali a
prova di bomba, se non usando qualche grafo stradale, p.es. OSM
ma in genere i grafi stradali hanno una struttura a maglie chiuse,
e quindi e' perfattamente plausibile che non trovi veramente nulla
da ricucire sempicemente perche' non ci sono nodi di cardinalita' 2,
come ci ricordava Giuliano.

ciao Sandro

ciao Sandro
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Come riaggregare tratti in contatto tra di loro.

Andrea Peri

Grazie per il chiarimento.
Quello che succede é proprio questo che dici. Però in effetti non ho selezionato un sample mirando a questo. 
Domani estraggo un campione significativo su questo errore.

Il 14/nov/2013 18:18 <[hidden email]> ha scritto:
On Thu, 14 Nov 2013 18:01:16 +0100, Andrea Peri wrote:
Non sono sicuro che ci sia un bug.

La Geos giunta correttamente, il problema è che poi quando si fa' la
elem.geo vengono disgiuntati troppo.

Secondo Furieri è un bug della Geos, io sospettoo cheinvece sia un
bug della spatialite.
 :))

ovrei provare su postgis, ma in questo momento non ho proprio tempo.

Affogo nel lavoro.
Ad ogni modo in attesa che produca un set minimo, se puoi provare con
questo shapefile nel thread seguente:

http://lists.gfoss.it/pipermail/gfoss/2013-November/029869.html [2]

In tale shapefile tutti i tratti sono unici oppure se sono in contatto
sono giuntati a modino, perche' ricavati da un ambiente
topologico.vero.


Andrea,

forse tra i vari post ti e' sfuggito, ma ti avevo gia' risposto ieri.
quel tuo campione funziona perfettamente bene su splite

CREATE TABLE sample2 AS
SELECT ST_LineMerge(ST_Collect(geometry)) AS geom
FROM little_sample_route;
SELECT RecoverGeometryColumn('sample2', 'geom', 3003, 'MULTILINESTRING', 'XY');
.elemgeo

si parte con 24 linestrings ed al termine del processo ne abbiamo solo 9;
a me pare proprio che funzioni tutto secondo attesa.

quel che dicevo a riguardo della GEOS e' che non sempre pare funzionare
quando gli si passano aggregati veramente enormi, p.es con alcune migliaia
di pezzettini: in quel caso mi pare che assai spesso si ottiene indietro
esattamente il dataset di partenza tal quale senza nessuna ri-cucitura.

ma probabilmente ha ragione Srtk; forse quando gli passi troppa roba
non sempre puoi essere sicuro che sia tutta rigorosamente coerente
da un punto di vista topologico.
Perlomeno, io non ho mai fatto un test di questo tipo con materiali a
prova di bomba, se non usando qualche grafo stradale, p.es. OSM
ma in genere i grafi stradali hanno una struttura a maglie chiuse,
e quindi e' perfattamente plausibile che non trovi veramente nulla
da ricucire sempicemente perche' non ci sono nodi di cardinalita' 2,
come ci ricordava Giuliano.

ciao Sandro

ciao Sandro
_______________________________________________
[hidden email]
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

_______________________________________________
[hidden email]
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
12