User Tools

Site Tools


tecnica:gps_cartografia_gis:osm_recipes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tecnica:gps_cartografia_gis:osm_recipes [2018/05/05 23:13] – [Waypoint da OSM] niccolotecnica:gps_cartografia_gis:osm_recipes [2020/07/31 09:54] (current) – [Riferimenti Web] niccolo
Line 9: Line 9:
 Per motivi di capienza sarà quindi necessario restringere l'estensione della mappa ad **una sola regione** (in questo esempio la Toscana), inoltre si dovrà optare per una **mappa di tipo on-road** (ad esempio per uso cicloturistico) oppure una **off-road** (per uso trekking o MTB). Nel primo caso si includerà solo la rete stradale ordinaria (da **//motorway//** a **//unclassified//** nella classificazione OSM), nel secondo caso quella off-road (**//footway//**, **//track//** e **//path//** nella classificazione OSM). Per motivi di capienza sarà quindi necessario restringere l'estensione della mappa ad **una sola regione** (in questo esempio la Toscana), inoltre si dovrà optare per una **mappa di tipo on-road** (ad esempio per uso cicloturistico) oppure una **off-road** (per uso trekking o MTB). Nel primo caso si includerà solo la rete stradale ordinaria (da **//motorway//** a **//unclassified//** nella classificazione OSM), nel secondo caso quella off-road (**//footway//**, **//track//** e **//path//** nella classificazione OSM).
  
 +**ATTENZIONE**: Dopo un po' di prove sul campo ho realizzato che per fare trekking è necessario avere **contemporaneamente** sia le **strade asfaltate** che i **sentieri**. A queste condizioni **una regione intera** come la Toscana **non ci sta**. Il mio suggerimento è quindi di estrarre i dati solo di **alcuni comuni** limitrofi.
 ===== Cosa includere ===== ===== Cosa includere =====
  
Line 15: Line 16:
   * **Centri abitati**. Avere i centri abitati come waypoint è utile per effettuare ricerche e spostarsi velocemente sulla mappa del GPS.   * **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 "estetici", poiché sono utili ad interpretare la mappa a livelli di zoom inferiori. I confini NON vengono utilizzati per l'indicizzazione degli indirizzi da utilizzare durante la ricerca degli stessi. L'aggiunta dei confini regionali ha ingrossato la mappa finale di circa **170 kb**.   * **Confini amministrativi**. Si sono inclusi i confini delle regioni italiane soprattutto per fini "estetici", poiché sono utili ad interpretare la mappa a livelli di zoom inferiori. I confini NON vengono utilizzati per l'indicizzazione degli indirizzi da utilizzare durante la ricerca degli stessi. L'aggiunta dei confini regionali ha ingrossato la mappa finale di circa **170 kb**.
 +
 +===== Galleria =====
 +
 +{{.:etrex_osm:img_01.jpg?160|}}
 +{{.:etrex_osm:img_02.jpg?160|}}
 +{{.:etrex_osm:img_03.jpg?160|}}
 +
 +{{.:etrex_osm:img_04.jpg?160|}}
 +{{.:etrex_osm:img_05.jpg?160|}}
 +{{.:etrex_osm:img_06.jpg?160|}}
  
 ===== Confini regioni italiane da Istat ===== ===== Confini regioni italiane da Istat =====
Line 200: Line 211:
 ===== Centri abitati da OSM ===== ===== Centri abitati da OSM =====
  
 +L'estrazione dei centri abitati è del tutto simile a quella degli altri waypoint. La query Overpass deve selezionare i node con tag **place** e valore //city//, //town// oppure //village//. Anche in questo caso si aggiunge il tag nome nel caso che sia assente ed infine si rimuovono tutti i tag ad eccezione di **name**, **place** e **population**:
 +
 +<code bash>
 +osmfilter "tmp/op_place_n_fix.osm" \
 +    --keep-node-tags="all name= place= population=" \
 +    --drop-author --fake-version --out-osm -o="tmp/f_place_n.osm"
 +</code>
 ===== Assemblare tutti i pezzi ===== ===== Assemblare tutti i pezzi =====
  
Line 208: Line 226:
     "admin_boundaries.osm" \     "admin_boundaries.osm" \
     "tmp/f_track.osm" \     "tmp/f_track.osm" \
 +    "tmp/f_way.osm" \
     "tmp/f_place_n.osm" \     "tmp/f_place_n.osm" \
     "tmp/f_amenity_n.osm" "tmp/f_amenity_w.osm" \     "tmp/f_amenity_n.osm" "tmp/f_amenity_w.osm" \
     "tmp/f_tourism_n.osm" "tmp/f_tourism_w.osm" \     "tmp/f_tourism_n.osm" "tmp/f_tourism_w.osm" \
-    -o="etrex_map.osm"+    -o="gmapsupp.osm"
 </code> </code>
  
-Il risultato è un file sempre nel **formato XML di OpenStreetMap**. +Il risultato è un file **gmapsupp.osm** ancora nel **formato XML di OpenStreetMap**. 
-===== mkgmap-splitter mkgmap =====+===== mkgmap-splitter ===== 
 + 
 +Il file risultante **gmapsupp.osm** deve essere suddiviso in quadranti più piccoli (tile, mattonelle) per adeguarsi al formato Garmin, si utilizza il programma **mkgmap-splitter** installato dal pacchetto Debian omonimo. 
 + 
 +<code> 
 +mkgmap-splitter gmapsupp.osm 
 +</code> 
 + 
 +Il risultato è una serie di file la cui simensione è di circa **10 Mb** ciascuno: 
 + 
 +  * **63240001.osm.pbf** 
 +  * **63240002.osm.pbf** 
 +  * ... 
 + 
 + 
 +===== Personalizzare lo stile della mappa =====
  
-^ %%--region-name%% | Viene mostrato accanto al nome del centro abitato nella visualizzazione dell'elenco (altrimenti compare la stringa **ABC**). FIXME Forse esiste la possibilità di usare i confini amministrativi e l'indicizzazione degli indirizzi per associare il centro abitato al nome del comune che lo contiene?  |+Prima dell'esecuzione finale del programma **mkgmap** è opportuno definire lo stile della mappa; a causa delle limitate capacità grafiche del Garmin eTrex 10 lo stile predefinito non è ottimale. Tre sono i concetti propedeutici da comprendere:
  
-===== Stile della mappa =====+  * I **levels** sono versioni della stessa mappa a diversi livelli di dettaglio. Quando si varia lo zoom di visualizzazione, il device attiverà automaticamente il //level// più opportuno. 
 +  * Gli **styles** associano ogni elemento OSM ad un particolare simbolismo (rendering grafico) Garmin, indicando a quale //level// si applica. 
 +  * Il **linguaggio TYP** può essere usato per modificare i simbolismi predefiniti Garmin, ad esempio per modificare come viene visualizzato un certo tipo di track o path.
  
 Fondamentale lettura è il **[[https://www.mkgmap.org.uk/doc/pdf/style-manual.pdf|Conversion Style manual]]** di **mkgmap** (qui una {{.:osm:mkgmap-style-manual.pdf|copia locale}}). Si deve anzitutto familiarizzare con alcuni concetti: Fondamentale lettura è il **[[https://www.mkgmap.org.uk/doc/pdf/style-manual.pdf|Conversion Style manual]]** di **mkgmap** (qui una {{.:osm:mkgmap-style-manual.pdf|copia locale}}). Si deve anzitutto familiarizzare con alcuni concetti:
Line 309: Line 345:
 ==== Personalizzazione del simbolismo (file TYP) ==== ==== Personalizzazione del simbolismo (file TYP) ====
  
-Ogni GPS Garmin ha un **simbolismo predefinito** che definisce l'aspetto grafico per ogni oggetto mappa. Ad esempio una **highway=track** della mappa OSM viene convertita in un oggetto Garmin **line Type=0x00a**, che viene mostrata sul display dell'eTrex 10 con un certo spessore e colore.+Ogni GPS Garmin ha un **simbolismo predefinito** che definisce l'aspetto grafico per ogni oggetto mappa. Ad esempio una **highway=track** della mappa OSM viene convertita da **mkgmap** in un oggetto Garmin **line Type=0x00a**, che viene mostrata sul display dell'eTrex 10 con un certo spessore e colore. Il simbolismo è **codificato all'interno del firmware** del GPS, nell'eTrex provvede anche ad adattare la rappresentazione grafica rispetto alla scala; ad esempio una strada di tipo //secondary// verrà rappresentata con una linea più spessa quando si aumenta lo zoom.
  
-Nella mappa compilata con mkgmap è possibile definire delle **personalizzazioni** rispetto al simbolismo predefinito. Abbiamo sfruttato questa possibilità per **modificare l'aspetto** delle **linee** **Type=0x00a** e **Type=0x016** (track e path rispettivamente) in modo che fossero **più sottili** e non confondessero il display alla scala dei 2 km.+Nella mappa compilata con mkgmap è possibile tuttavia definire delle **personalizzazioni** rispetto al simbolismo predefinito. Abbiamo sfruttato questa possibilità per **modificare l'aspetto** delle **linee** **Type=0x00a** e **Type=0x016** (track e path rispettivamente) in modo che fossero **più sottili** e non confondessero il display alla scala dei 2 km.
  
 Per ottenere il risultato è sufficiente creare un file **my_etrex10.txt** con questo contenuto: Per ottenere il risultato è sufficiente creare un file **my_etrex10.txt** con questo contenuto:
Line 326: Line 362:
 UseOrientation=Y UseOrientation=Y
 Xpm="32 1 2  1" Xpm="32 1 2  1"
-"c #000000"+"c #000000"
  c none"  c none"
-"!!!!!!  !!!!!!  !!!!!!  !!!!!!  "+"------  ------  ------  ------  "
 ;12345678901234567890123456789012 ;12345678901234567890123456789012
 String1=0x04,Track String1=0x04,Track
Line 339: Line 375:
 UseOrientation=Y UseOrientation=Y
 Xpm="32 1 2  1" Xpm="32 1 2  1"
-"c #808080"+"c #808080"
  c none"  c none"
-"!!!!  !!!!  !!!!  !!!!  !!!!  !!"+"----  -----  ----  -----  ----  "
 ;12345678901234567890123456789012 ;12345678901234567890123456789012
 String1=0x04,Path String1=0x04,Path
 ExtendedLabels=N ExtendedLabels=N
 [end] [end]
 +</file>
 +
 +**ATTENZIONE**: Il file qui sopra produce un simbolismo che verrà **applicato per ogni level**. Cioè le linee **Type=0x00a** e **Type=0x016** saranno rappresentate sempre allo stesso modo ad ogni livello di zoom. Questo è molto differente dagli stili applicati internamente dall'eTrex, dove ad esempio il **Type=0x04** applicato alle **highway=secondary** produce linee via via più spesse quando si aumenta lo zoom. In alternativa si dovrebbero definire diverse righe nel file ''style/default/lines'' (vedi sopra), ciascuna associata ad una resolution diversa e con un codice Type diverso, qualcosa del tipo:
 +
 +<file>
 +highway=track [0x0a road_class=0 road_speed=1 resolution 24 continue]
 +highway=track [0x0a01 road_class=0 road_speed=1 resolution 23-20 continue]
 +highway=track [0x0a02 road_class=0 road_speed=1 resolution 19]
 </file> </file>
  
Line 352: Line 396:
 **NOTA BENE**: Con **mkgmap versione svn3741** non è più necessario compilare il file TYP, è possibile utilizzare direttamente il testo sorgente. **NOTA BENE**: Con **mkgmap versione svn3741** non è più necessario compilare il file TYP, è possibile utilizzare direttamente il testo sorgente.
  
-Per ulteriori dettagli vedere:+===== No Results foundbug POI non elencati per categoria =====
  
-  * **[[http://www.mkgmap.org.uk/doc/typ-compiler|The mkgmap TYP file compiler]]** +Sembra che ci sia un bug nel firmware dell'eTrex 10in alcune circostanze gli **waypoint inclusi nella mappa non vengono elencati nelle opportune categorie**. Ad esempio uno waypoint a cui sia assegnato il **tipo 0x2c0d** viene visualizzato sulla mappa con l'icona **Place of worship** e dovrebbe comparire nel menu **Where to?** => **Community**.
-  * **[[http://www.cferrero.net/maps/guide_to_TYPs.html|Guide to TYP files]]** +
-  * **[[http://gps.maroufi.net/etrex10map.shtml|Karten auf dem eTrex 10]]** +
-  * **[[https://sites.google.com/site/sherco40/]]** Il programma **TYPViewer** (per Windows, ma che gira anche sotto Wine) consente di ispezionare i file TYP compilati, traducendoli in testo sorgente e mostrando graficamente il simbolismo.+
  
-==== Compilazione della mappa con stile e simbolismo personalizzato ====+Dovrebbe essere sufficiente che la **mappa OSM** contenga un nodo di questo tipo: 
 + 
 +<file> 
 +<node id="170860041" lat="43.91410710" lon="11.22389060" version="1"> 
 +  <tag k="amenity" v="place_of_worship"/> 
 +  <tag k="name" v="Pieve di San Severo"/> 
 +</node> 
 +</file> 
 + 
 +e lo stile **styles/default/points** contenga una riga del tipo: 
 + 
 +<file> 
 +amenity=place_of_worship [0x2c0d resolution 24] 
 +</file> 
 + 
 +Si è verificato invece che in alcune condizioni ciò non accade, la categoria **Community** riporta **No Results found - Try Adjusting Search Parameters**. Dalle prove fatte è necessario rispettare le seguenti condizioni per **evitare il bug**: 
 + 
 +  - Il file mappa OSM deve **contenere dei nodi** - eventualmente fasulli - che verranno assegnati agli stili da 0x2c0a a 0x2c0c. Tali nodi devono essere in prossimità degli altri, cioè più o meno nel range della mappa; posizionandoli in prossimità delle coordinate lat=0 lon=0 non funziona. 
 +  - Il file dello stile deve definire degli stili per i nodi di cui sopra, **assegando le icone da 0x2c0a a 0x2c0c**. 
 + 
 +In pratica sembra che l'eTrex abbia bisogno che nella mappa esista **la serie completa di sottotipi** (in questo caso a partire da 0x2c0a fino a quello che interessa a noi, cioè il 0x2c0d), altrimenti la categoria non viene creata. Non è chiaro come mai la serie completa in questo caso può iniziare da 0x2c0a, quando intuitivamente si potrebbe pensare che la serie inizia con 0x2c00. 
 + 
 + 
 +===== mkgmap ===== 
 + 
 +L'ultimo passaggio è quindi la compilazione della mappa con stile e simbolismo personalizzato.
  
 Durante l'invocazione di **mkgmap** è sufficiente passare il riferimento alla **directory con lo stile modificato** e al file con le **modifiche al simbolismo** per ottenere la mappa desiderata (il file TYP viene compilato al volo): Durante l'invocazione di **mkgmap** è sufficiente passare il riferimento alla **directory con lo stile modificato** e al file con le **modifiche al simbolismo** per ottenere la mappa desiderata (il file TYP viene compilato al volo):
Line 374: Line 440:
     ./typ/my_etrex10.txt     ./typ/my_etrex10.txt
 </code> </code>
 +
 +L'opzione **%%--region-name%%** viene usata come stringa da visualizzare accanto al nome del centro abitato nella visualizzazione dell'elenco, altrimenti compare la stringa generica **ABC**. FIXME Forse esiste la possibilità di usare i confini amministrativi e l'indicizzazione degli indirizzi per associare il centro abitato al nome del comune che lo contiene?
 +
 +===== Riferimenti Web =====
 +
 +  * **[[http://www.mkgmap.org.uk/doc/typ-compiler|The mkgmap TYP file compiler]]**
 +  * **[[https://www.mkgmap.org.uk/doc/pdf/style-manual.pdf|mkgmap Conversion Style manual]]** - Qui una {{.:etrex_osm:mkgmap-style-manual.pdf|copia locale}}.
 +  * **[[https://wiki.openstreetmap.org/wiki/Mkgmap/help/style_rules|Mkgmap style rules]]** - Dichiarata //outdated//, ma utile.
 +  * **[[http://www.cferrero.net/maps/guide_to_TYPs.html|Guide to TYP files]]**
 +  * **[[http://gps.maroufi.net/etrex10map.shtml|Karten auf dem eTrex 10]]**
 +  * **[[https://sites.google.com/site/sherco40/]]** Il programma **TYPViewer** (per Windows, ma che gira anche sotto Wine) consente di ispezionare i file TYP compilati, traducendoli in testo sorgente e mostrando graficamente il simbolismo.
 +  * **[[https://extract.bbbike.org/|BBBike Extract OpenStreetMap]]** - Produce automaticamente mappe anche per Garmin.
tecnica/gps_cartografia_gis/osm_recipes.1525554826.txt.gz · Last modified: 2018/05/05 23:13 by niccolo