doc:appunti:hardware:oms_recipes
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| doc:appunti:hardware:oms_recipes [2018/04/21 07:23] – [Grafo stradale da OSM] niccolo | doc:appunti:hardware:oms_recipes [2018/04/24 18:32] (current) – removed niccolo | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Ricette Mappe OpenStreetMap ====== | ||
| - | |||
| - | In questa pagina alcune ricette utili per cucinare mappe OpenStreetMap da caricare su navigatore GPS. In particolare l' | ||
| - | |||
| - | ===== Spazio limitato: è necessario un compromesso ===== | ||
| - | |||
| - | Per motivi di capienza sarà quindi necessario restringere l' | ||
| - | |||
| - | ===== Cosa includere ===== | ||
| - | |||
| - | * **Grafo stradale**. Poiché l' | ||
| - | * **Waypoint**. Si è inclusa una selezione di waypoint. Dalla categoria **amenity** di OSM: distributori di benzina, punti di ristoro (ristoranti, | ||
| - | * **Centri abitati**. Avere i centri abitati come waypoint è utile per effettuare ricerche e spostarsi velocemente sulla mappa del GPS. | ||
| - | * **Confini amministrativi**. Si sono inclusi i confini delle regioni italiane soprattutto per fini " | ||
| - | |||
| - | ===== Confini regioni italiane da Istat ===== | ||
| - | |||
| - | L' | ||
| - | |||
| - | I pacchetti Debian da installare sono: | ||
| - | |||
| - | < | ||
| - | apt-get install postgis gdal-bin gpsbabel | ||
| - | </ | ||
| - | |||
| - | Dalla pagina **[[https:// | ||
| - | |||
| - | Queste sono le trasformazioni applicate al dataset originale: | ||
| - | |||
| - | - Rimozione dei **" | ||
| - | - **Semplificazione**, | ||
| - | - Eliminazione dei **poligoni più piccoli** di una certa area. | ||
| - | - Riproiezione dal sistema **UTM zone 32N** (EPSG: | ||
| - | - Conversione del file GPX in **file OSM**. | ||
| - | |||
| - | Per la creazione di un database geografico consultare la pagina **[[..: | ||
| - | |||
| - | < | ||
| - | shp2pgsql -s 32632 Reg_2016_WGS84.shp reg2016 > Reg_2016_WGS84.sql | ||
| - | </ | ||
| - | |||
| - | Il primo passaggio è la **rimozione dei " | ||
| - | |||
| - | < | ||
| - | SELECT regione, ST_MakePolygon(ST_ExteriorRing((ST_Dump(geom)).geom)) AS geom | ||
| - | INTO TABLE reg2016_no_holes FROM reg2016; | ||
| - | </ | ||
| - | |||
| - | I passaggi successivi sono realizzati da una sola istruzione SQL, che viene eseguita dal tool **ogr2ogr**, | ||
| - | |||
| - | <code bash> | ||
| - | #!/bin/sh | ||
| - | SQL=" | ||
| - | FROM reg2016_no_holes WHERE ST_Area(geom) > 11000000" | ||
| - | export GPX_USE_EXTENSIONS | ||
| - | ogr2ogr \ | ||
| - | -f " | ||
| - | PG:" | ||
| - | -sql " | ||
| - | -lco " | ||
| - | </ | ||
| - | |||
| - | Nell' | ||
| - | |||
| - | Il passaggio finale viene fatto con il tool **gpsbabel**, | ||
| - | |||
| - | <code bash> | ||
| - | #!/bin/sh | ||
| - | gpsbabel -i gpx -f regioni.gpx \ | ||
| - | -o osm, | ||
| - | -F regioni_bad_id.osm | ||
| - | cat regioni_bad_id.osm | ||
| - | rm regioni_bad_id.osm | ||
| - | </ | ||
| - | |||
| - | FIXME Questa ricetta ha un problema teorico: gli ID trasformati in numeri positivi potrebbero andare in conflitto con gli ID degli oggetti scaricati dal database OpenStreetMap e quindi creare problemi al programma **osmconvert**. Esiste anche la funzione **renumber** del programma **osmium** (dal pacchetto **osmium-tool**), | ||
| - | ===== Confine per l' | ||
| - | |||
| - | {{ .: | ||
| - | Utilizzeremo il linguaggio **[[https:// | ||
| - | |||
| - | Per disegnare i confini abbiamo utilizzato [[https:// | ||
| - | |||
| - | - Scaricato una porzione della mappa che includa un **piccolo tratto del confine regionale**. | ||
| - | - Dopo aver selezionato tale tratto di confine, dal tab //Tags / Memberships// | ||
| - | - Menu //File//, **//New Layer//**. | ||
| - | - Nel nuovo layer **si disegna il poligono approssimato** che racchiuda la regione. | ||
| - | - Click destro sul layer disegnato, **//Export to GPX//**. | ||
| - | |||
| - | Dal file GPX creato è possibile **estrarre le coordinate** con un semplice script di shell (lo abbiamo chiamato **bounds-gpx2txt**): | ||
| - | |||
| - | <code bash> | ||
| - | #!/bin/sh | ||
| - | cat " | ||
| - | | grep '< | ||
| - | | sed ' | ||
| - | | tr ' | ||
| - | | awk ' | ||
| - | </ | ||
| - | |||
| - | Il risultato desiderato è semplicemente **la sequenza delle coordinate lat lon** di tutti i vertici separate da spazi: | ||
| - | |||
| - | < | ||
| - | 44.381756 9.629437 44.488539 9.699057 44.569342 9.951234 ... | ||
| - | </ | ||
| - | |||
| - | ===== Grafo stradale da OSM ===== | ||
| - | |||
| - | In un file che chiameremo **query_way.xml** si prepara la **query Overpass** per estrarre le //way// dalla zona desiderata: | ||
| - | |||
| - | <code xml> | ||
| - | < | ||
| - | <query type=" | ||
| - | <has-kv k=" | ||
| - | < | ||
| - | </ | ||
| - | < | ||
| - | <item /> | ||
| - | <recurse type=" | ||
| - | </ | ||
| - | <print mode=" | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | **NOTA**: all' | ||
| - | |||
| - | Nell' | ||
| - | |||
| - | Per prelevare i grafo stradale è quindi sufficiente l'uso di **wget**: | ||
| - | |||
| - | <code bash> | ||
| - | wget --post-file=" | ||
| - | </ | ||
| - | |||
| - | Infine usiamo **osmfilter** per ripulire il file, togliendo eventuali tag associati ai singoli nodi e mantenendo solo alcuni tag delle strade (i tag // | ||
| - | |||
| - | <code bash> | ||
| - | osmfilter " | ||
| - | --drop-node-tags=" | ||
| - | --drop-author --fake-version --out-osm -o=" | ||
| - | </ | ||
| - | ===== Waypoint da OSM ===== | ||
| - | |||
| - | ===== Centri abitati da OSM ===== | ||
| - | |||
| - | ===== Stile della mappa ===== | ||
doc/appunti/hardware/oms_recipes.1524288239.txt.gz · Last modified: by niccolo
