[Gfoss] [Talk-it] Automazione pulizia tracce, integrazione, caricamento.

Cristiano Giovando giovand a gmail.com
Lun 1 Set 2008 15:23:12 CEST


2008/8/30 Giovanni Mascellani <g.mascellani at gmail.com>:
> A quanto mi sembra di capire sia GlobalMapper che ArcGIS sono software
> proprietario... :-( Non conosco nel dettaglio cosa fanno e cosa no, ma
> non c'è modo di sostituirli?


Infatti è proprio questo il mio obbiettivo. Purtroppo i GFOSSers sono
ancora in vacanza... :-P


> 01. Download gpx tracks from GPS device(s);

E fino a qui ci siamo, GPSBabel (FOSS).

> 02. Open all gpx files in GlobalMapper, export to shapefile EPSG:3035

ogr2ogr -f GPX -t_srs EPSG:3035 output.shp input.gpx tracks (FOSS).
Ovviamente qualsiasi SRS proiettato che non introduca un errore
superiore a quello del GPS funziona.

> 03. Import shapefile to geodatabase (for automatic topology attributes)

Portare in PostGIS da GRASS? Da aggiornare ogni volta si modifica il dataset
v.to.db option=length type=line col=linelength units=me

> 04. Split line at vertices (this may take a long time, depending on machine)

Credo con GRASS, ma non ho trovato. v.clean spezza solo in
corrispondenza di nodi dove si incrociano due o più linee. Serve
qualcosa per spezzare ad ogni nodo in modo da rimuovere tutte le linee
generate per errore da GPS prima di prendere un lock decente.
Ovviamente si può fare a priori con GPSBabel dal NMEA, ma spesso le
tracce arrivano già in GPX.

> 05. Remove GPS errors, lines > 40 meters (assuming tracker speed was
> always <150km/h)

Questo passaggio ovviamente assume che si registri un trackpoint ogni
secondo e non si vada più veloci di 40 m/s. Con una query in OGR si
può fare questo passaggio senza problemi.

> 06. Dissolve to single feature

Operazione inversa dello step 5, probabilmente non necessaria in altri
ambienti, ArcGIS s'inceppa con troppe linee da semplificare insieme.

> 07. Simplify, tolerance 1 meter (this removes unnecessary nodes)

Immagino sia v.generalize in GRASS. Lo stesso si potrebbe fare a
priori con GPSBabel e l'opzione "simplify"

> 08. Integrate, tolerance 3 meters (collapse overlapping lines into one)

Questo serve per collassare tutte le tracce della stessa strada in un
unica mediana. Non ho idea di quale sia lo strumento FOSS da
utilizzare un questo caso.

> 09. Dissolve, save as newtmp.shp feature

Associato allo step di sopra, fonde tutte le tracce che combaciano una
sull'altra in un unica linea.

> 10. Open shapefile in GlobalMapper, export to gpx

ogr2ogr, inverso dello step 2.

> 11. Open gpx in JOSM, download data from server based on gpx extent,
> save as existing.osm file

Invece che salvare come OSM e poi esportare in GPX da GlobalMapper ho
notato che con le versioni recenti di JOSM finalmente funziona
l'export diretto a GPX.

> 12. Open osm file in GlobalMapper, export to existing.shp

ogr2ogr di nuovo.

> 13. Open existing.shp in ArcGIS, make 10 meter buffer

v.buffer in GRASS?

> 14. Erase from newtmp.shp using buffer (remove all data already mapped in OSM)

In questo passaggio si usa l'attuale stato del DB più un buffer di 10
metri (valore indicativo dell'errore GPS più quello delle tracce non
registrate accuratemente ogni secondo). Non ho trovato l'equivalente
di questa funzione in GRASS.

> 15. Make singlepart, save as new.shp (split ways at intersections)

In questo caso si può invece usare v.clean in GRASS

> 16. Review (and add id and attributes if using shp_to_osm.py script)

QGIS, Python, OGR (FOSS)

> 17. Export to new.osm using py script or open shp in GlobalMapper,
> then export to gpx.

Python oppure di nuovo ogr2ogr

> 18. Open new.osm or new.gpx in JOSM, review, edit where necessary,
> merge with existing

In JOSM si uniscono i dati esistenti con quelli nuovi in un unico file OSM.

> 19. Solve conflicts and merge ways.

A questo punto si devono "saldare" le parti esistenti con quelle nuove
inportate. Lavoro manuale in JOSM.

> 20. Upload to server.


Mescolare tutto bene, aggiungere un pò di Python e lasciare cuocere in
forno per 20 minuti.

Chi ha voglia (tempo) di provarci?



C



Maggiori informazioni sulla lista Gfoss