[Gfoss] Piccolo servizio per ottimizzare GPX online

Ciao a tutti
ho appena realizzato un semplice servizio per ottimizzare tracce GPX riducendo il numero di punti senza perdere qualita della traccia.

Utilizza questo algoritmo che mi sembra buono:
http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm anche se probabilmente la scrollbar per regolare la precisione potrebbe essere migliore con scala logaritmica o esponenziale.

Funziona offline senza bisogno di upload o download… semplice javascript e Leaflet.

http://labs.easyblog.it/maps/gpx-simplify-optimizer/

L’ho fatto in pochi minuti senza fare troppi test… se qualcuno vuole partecipare a breve pubblico la repo su github…

saluti
Stefano Cudini

Il giorno Sat, 24 May 2014 02:19:04 +0200
Stefano Cudini <stefano.cudini@gmail.com> ha scritto:

Ciao a tutti

ciao Stefano,

ho appena realizzato un semplice servizio per ottimizzare tracce GPX
riducendo il numero di punti senza perdere qualita della traccia.

ottimo, spero quanto prima di poter provare il tuo plugin :slight_smile:

Utilizza questo algoritmo che mi sembra buono:
http://en.wikipedia.org/wiki/Ramer–Douglas–Peucker_algorithm
......

ti segnalo una curiosità, ininfuente per i tuoi obiettivi, ma un
particolare forse interessante da conoscere: in una occasione del tutto
fortuita mi sono accorto che l'algoritmo RDP non è ottimo, cioè lascia
dei vertici della polilinea non necessari; avevo segnalato la
circostanza anche sulla lista dev, ma poi la cosa non aveva avuto
seguito (probabilmente per la mia scarsa comprensione dell'inglese e
forse perchè la lista non era il posto più adatto per l'argomento);

si può pensare ad un algoritmo diverso che sembrerebbe migliore;

niente, una piccola inezia nello splendido lavoro che hai fatto: usala
a tua discrezione :slight_smile:

saluti
Stefano Cudini

ciao,
giuliano

Il giorno 24 maggio 2014 16:50, giulianc51 <giulianc51@gmail.com> ha
scritto:

...
> ho appena realizzato un semplice servizio per ottimizzare tracce GPX
> riducendo il numero di punti senza perdere qualita della traccia.

ottimo, spero quanto prima di poter provare il tuo plugin :slight_smile:

Be non è proprio un plugin... è una web app che utilizza svariati plugins
Leaflet e altro.
Io in pratica ho solo messo insieme i pezzi...

> Utilizza questo algoritmo che mi sembra buono:
>
http://en.wikipedia.org/wiki/Ramer–Douglas–Peucker_algorithm
> ......

ti segnalo una curiosità, ininfuente per i tuoi obiettivi, ma un
particolare forse interessante da conoscere: in una occasione del tutto
fortuita mi sono accorto che l'algoritmo RDP non è ottimo, cioè lascia
dei vertici della polilinea non necessari;

Questa cosa l'avevo notata anche su JOSM
<https://josm.openstreetmap.de/&gt;quindi suppongo che utilizzi lo stesso
identico algoritmo.

avevo segnalato la
circostanza anche sulla lista dev, ma poi la cosa non aveva avuto
seguito (probabilmente per la mia scarsa comprensione dell'inglese e
forse perchè la lista non era il posto più adatto per l'argomento);

si può pensare ad un algoritmo diverso che sembrerebbe migliore;

niente, una piccola inezia nello splendido lavoro che hai fatto: usala
a tua discrezione :slight_smile:

Ho appena aperto tutto il codice:
https://github.com/stefanocudini/gpx-simplify-optimizer
Anche per cercare ti ottimizzare quell'algoritmo o vedere se ce ne sono
altri.

In effetti ho notato che a volte lascia dei nodi strani... ma in generale
mi sembra che funzioni molto bene su tracce molto ridondanti.
Lo scopo dell'app piu che altro è allegerire i file GPX poi per migliorare
la precisione stavo pensando di aggiungere anche
la possibilita di editare il percorso dopo l'ottimizzazione automatica.

Il giorno Sat, 24 May 2014 22:54:56 +0200
Stefano Cudini <stefano.cudini@gmail.com> ha scritto:

Il giorno 24 maggio 2014 16:50, giulianc51 <giulianc51@gmail.com> ha
scritto:

> .....

Be non è proprio un plugin... è una web app che utilizza svariati
plugins Leaflet e altro.
Io in pratica ho solo messo insieme i pezzi...

sì, scusa, avevo letto male :frowning:

> ......
Questa cosa l'avevo notata anche su JOSM
<https://josm.openstreetmap.de/&gt;quindi suppongo che utilizzi lo stesso
identico algoritmo.
.......
In effetti ho notato che a volte lascia dei nodi strani... ma in
generale mi sembra che funzioni molto bene su tracce molto ridondanti.
Lo scopo dell'app piu che altro è allegerire i file GPX ......

beh, come avevo anticipato, la cosa è inessenziale rispetto al tuo
obiettivo: RDP fa un egregio lavoro di semplificazione, però, proprio
per l'approccio binomiale che adotta, va in crisi in alcune situazioni,
ad es. il percorso:
        1 5
        | |
        2---------3-----------4
rimarrà tale, mentre potrebbe essere semplificato ulteriormente in
        1 5
        | |
        2---------------------4

comunque probabilmente sto andando OT in questa lista, quindi chiudo; se
volessi però provare un altro algoritmo qualche idea ce l'avrei :slight_smile:

ciao,
giuliano
(matematico per diporto :slight_smile:

Il giorno 24 maggio 2014 23:51, giulianc51 <giulianc51@gmail.com> ha
scritto:

> Questa cosa l'avevo notata anche su JOSM
> <https://josm.openstreetmap.de/&gt;quindi suppongo che utilizzi lo stesso
> identico algoritmo.
> .......
> In effetti ho notato che a volte lascia dei nodi strani... ma in
> generale mi sembra che funzioni molto bene su tracce molto ridondanti.
> Lo scopo dell'app piu che altro è allegerire i file GPX ......

beh, come avevo anticipato, la cosa è inessenziale rispetto al tuo
obiettivo: RDP fa un egregio lavoro di semplificazione, però, proprio
per l'approccio binomiale che adotta, va in crisi in alcune situazioni,
ad es. il percorso:
        1 5
        | |
        2---------3-----------4
rimarrà tale, mentre potrebbe essere semplificato ulteriormente in
        1 5
        | |
        2---------------------4

comunque probabilmente sto andando OT in questa lista, quindi chiudo

Ma tanto non sta partecipando nessun altro quindi direi che non è un gran
danno :slight_smile:

; se
volessi però provare un altro algoritmo qualche idea ce l'avrei :slight_smile:

Allora prima di tutto vorrei sottolineare che la vera utilità della mia app
sta nel fatto che tramite lo slider si puo regolare molto finemente il
fattore di approssimazione dell'algoritmo, cosa che attualmente non si può
fare neanche su JSOM... che non ho ancora capito che valore utilizza..

Poi devo dire che in realtà io l'algoritmo specifico prima di metterni a
fare questa app non lo conoscevo... ma ora la cosa mi sta molto
interessando.
Soprattutto ho notato una cosa, giocherellando con questa app.. che magari
è una banalità, questo algoritmo è impreciso xke si occupa soltanto di
TOGLIERE nodi e non fa nessuna altra operazione.. se invece di togliere
soltanto potesse anche spostare i nodi rimanenti in posizioni piu
"strategiche" credo che si avrebbe un netto miglioramento della qualità!
mantenendo la stessa identica quantita di dati finali.
Questo non so se sia possibile aggiungerlo a livello di algoritmo
matematico.. ora non ho dato una occhiata precisa al codice che lo
implementa, ma a livello di programmazione non mi sembra una cosa poi cosi
complessa.. probabilmente anzi ci ha gia pensato qualcuno.

L'implementazionde dell'RDP usato si trova qui:
https://github.com/seabre/simplify-geometry/blob/master/simplifygeometry-0.0.1.js

ciao,
giuliano
(matematico per diporto :slight_smile:

Il giorno Mon, 26 May 2014 18:59:43 +0200
Stefano Cudini <stefano.cudini@gmail.com> ha scritto:

ciao Stefano,

Il giorno 24 maggio 2014 23:51, giulianc51 <giulianc51@gmail.com> ha
scritto:

> .....
> comunque probabilmente sto andando OT in questa lista, quindi chiudo

Ma tanto non sta partecipando nessun altro quindi direi che non è un
gran danno :slight_smile:

sì, però mi conosco, quindi è meglio sempre stare all'erta :slight_smile:

> ....
Allora prima di tutto vorrei sottolineare che la vera utilità della
mia app sta nel fatto che tramite lo slider si puo regolare .....

Poi devo dire che in realtà io l'algoritmo specifico prima di
metterni a fare questa app non lo conoscevo... ma ora la cosa mi sta
molto interessando.

beh, io avevo un pò forzato e mescolato due argomenti non proprio
sovrapposti, però, avendone l'occasione, e sempre con la pazienza degli
altri, mi piaceva scambiare qualche parola :slight_smile:

...... questo algoritmo è impreciso xke si occupa
soltanto di TOGLIERE nodi e non fa nessuna altra operazione.. se
invece di togliere soltanto potesse anche spostare i nodi rimanenti
in posizioni piu "strategiche"

tema delicato: credo che gli Autori si sono preoccupati, riuscendoci, a
semplificare notevolmente una polilinea _eliminando_ i vertici
superflui; cosa alquanto diversa è quella che proponi: sostituire una
primitiva con altra;

....... Questo non so se sia possibile aggiungerlo a livello
di algoritmo matematico.. ora non ho dato una occhiata precisa al
codice che lo implementa, ma a livello di programmazione non mi
sembra una cosa poi cosi complessa.. probabilmente anzi ci ha gia
pensato qualcuno.

su _miglioramenti_ non saprei, ma sulla loro possibilità direi di sì,
rispettando le precedenze: prima costruisci l'algoritmo
logico-matematico, poi quello informatico (anche se può sembrare la
storia dell'uovo e la gallina :slight_smile:

se fai sapere in lista i tuoi progressi, sicuramente qualcuno
interessato ci sarà (ad es. io :slight_smile:

ciao,
giuliano