gpsbabel | 747A+

Attualmente possiedo un GPS data-logger della Transystem: l’iblue 747. Utilizzo mtkbabel per la gestione dei tempi di campionamento, per il download dei dati e per la cancellazione degli stessi.

Oggi ho provato il modello più recente: l’iblue 747 A+. Non funziona con mtkbabel. E’ necessario utilizzare il kernel linux > 2.6.29. Sulla mia Debian Lenny ho la versione 2.6.26. Che fare?

Ho cercato in rete ed alla fine ho trovato questa illuminante pagina: gpsbabel, again!

Il GPS in questione viene identificato come “/dev/ttyACM0” (per verificarlo lanciare il comando dmesg da console).

Per scaricare i dati mediante gpsbabel dare il seguente comando:

gpsbabel -t -w -i mtk -f /dev/ttyACM0 -o gpx -F out.gpx

In questo modo vengono scaricate le tracce (“t”), i waypoint (“w”) nel formato gpx e nel file di destinazione out.gpx. Fatto.

Per eliminare le tracce scaricate aggiungere “,erase” dopo la specifica del chipset “mtk“.

maemo mapper | again!

Sto testando alla grande maemo -mapper (applicativo per navigazione che gira su nokia internet tablet).
La navigazione avviene tramite pre-caricamento di un file GPX dal menu “Rotte”.
Il file GPX puo’ essere generato mediante alcuni servizi disponibili on-line. Ho testato openrouteservice.org che permette di generare un percorso definendo indirizzo di partenza e di arrivo. Si basa su dati openstreetmap e fornisce in output un file in formato GPX o XML. Il file GPX puo’ essere caricato in Maemo-mapper ma non contiene la descrizione del percorso tale da poter essere interpretato dal sintetizzatore vocale (disponibile solo previa installazione del pacchetto “flite”). Il file XMl invece contiene la descrizione del percorso ma non e’ caricabile in maemo-mapper: :-|.
In alternativa si possono usare i servizi forniti da http://gnuite.com/cgi-bin/gpx.cgi; si tratta di un servizio che sfrutta la “rete” di googlemaps :-|. In questo modo si ottiene un GPX interpretabile dal sintetizzatore vocale.
Sono alla ricerca di un modo per convertire il file XML fornito da http://www.openrouteservice.org in GPX “valido” per il navigatore di maemo-mapper. Tuttavia ho anche scoperto che esiste un progettino (mi pare mantenuto dal creatore di maemo-mapper, John Costigan) che ha il lodevole scopo di creare un sistema di definzione dei percorsi interno a maemo-mapper. Una descrizione si trova qui.

maemo mapper | navigazione

Maemo mapper funziona come navigatore, registratore di tracce, wpt,…
Per la navigazione ci sono due modi (non presenta un sistema di ricerca di indirizzi):

– 1. si pianifica in precedenza il percorso caricando una “rotta” da file GPX. Per un primo test mi sono appoggiato all’ottimo servizio di routing OpenRouteService.org.
Basta indicare l’indirizzo di partenza e si ottiene una descrizione del percorso (in aggiunta alla visualizzazione sulla mappa). Questo si puo’ scaricare in formato GPX.
Fatto questo lanciare MP. Dal menu’ scegliere “Rotte” -> “Apri” e selezionar eil GPX appena scaricato.
In questo modo viene visualizzato il tracciato in verde che verra’ seguito durante il routing.

– 2. se si e’ connessi alla rete dal menu’ selezionare Rotta -> Scarica.

Menu -> Rotta -> Scarica

Compare una finestra di impostazione della posizione di partenza e di arrivo (si puo’ scegliere se usare l’ttuale posizione GPS come partenza) . Inserire l’indirizzo della partenza e della destinazione (avendo impostato prima il “Router” che puo’ essere Goole o Yandex). Dare Ok e vedremo visualizzata in verde sulla mappa la traccia che indica il percorso da fare. Se abbiamo installato anche il sintetizzatore vocale comincera’ a parlarci per dirci cosa far :-).

Impostazione della rotta da percorrere

maemo-mapper | nokia N810

Mi e’ arrivato il Nokia N810. Diversamente da quello che si può pensare parlando di Nokia, l’N810 e’ tutto tranne un telefono :-).
E’ basato su SO Maemo (Debian based).
Ho “tribolato” un pochettino prima di riuscire ad installare maemo-mapper. Ma alla fine ci sono riuscito.
Inizialmente il problema era dovuto al fatto che non tutti gli ISP (Internet Service Provider) possono accedere ai repository di maemo: dalla rete aziendale infatti venivano bloccati gli accessi. Trovata la rete giusta sono riuscito a recuperare la lista dei pacchetti da una serie di report recuperati da qui.
Cercando di installare l’applicazione dal gestore delle applicazioni mi risultavano errori di dipendenze non risolte con alcune librerie: libgdbm3, libglib2.0-0,libhildonfn2, libhildonhelp0, libosso1. Ho “smazzato” la rete per un po’ fino a quando ho trovato un post illuminante per installare un piccolo pacchetto che consentisse di autenticarsi come root (per la console) e agire via apt-get. Il pacchetto installato si chiama “easyroot”. Una volta installato lanciare la console e digitare
$ sudo gainroot
A questo punto il prompt cambia presentando il “famoso” cancelletto (#) di root.
Da li ho lanciato un
# apt-get update
# apt-get dist-upgrade
# apt-get install maemo-mapper
Durante questa fase viene chisto se installare o meno software non autenticato con alternative di risposta [y,N].
Bisogna rispondere con una “s” se si intende installare (usa la lingua di default del sistema; nel mio caso l’italiano). Schiacciando “y” come proposto si presenta un “aborted”. Superato questo scoglio l’installazione e’ andata liscia. Al primo lancio lo stupore: gran software!!! Usa OSM come cartografia di base…ma questo e’ solo l’inizio.
Un’ottima guida per iniziare con maemo-mapper si trova qui
Il Nokia N810 e’ dotato di ricevitore GPS integrato. Ma non si “viaggia” bene con questo dispositivo. L’aggancio dei satelliti richide tempi lugnhi (>5 minuti quando va bene). Ho provato (come indicato in varie guide reperite dalla rete) a collegalo via BT all’iblue 747. Durante la connessione viene richiesto di inserire il codice di accesso. Ho perso un tot di tempo per capire che bastava inserire “0000” (quattro zeri). Dopo di chè l’aggancio e’ stato quasi immediato!

Conversione di uno SHP da coordinate WGS84 a Gauss-Boaga Fuso Ovest (GB Fuso Ovest -> WGS84 nel commento)

Questo post è l’evoluzione di quello relativo a “GPX | magie con gpsbabel”. In quel post è descritta una procedura per convertire un file GPX (trk) in SHP (wpt) avente una tabella attributi popolata anche con il TIMESTAMP. Questo per consentire di “rincorrere” il percorso effettuato in base all’ora di interrogazione.

Tuttavia questa conversione di formato produce in output dati geografici in un sistema di coordinate universale per i GPS: il WGS84 (codice EPSG:4326).

E’ utile poter convertire tali dati anche in altri sistemi di riferimento; in particolare, lavorando in Veneto, è basilare convertire tutto in Gauss_boaga Fuso Ovest (codice EPSG:3003) quale sistema di riferimento adottato dalla Regione Veneto per la CTRN (Carta Tecnica Regionale Numerica). Per fare questo ci viene in aiuto un altro magico tool: ogr2ogr. E’ uno strumento che consente la conversione di svariati formati vettoriali, compresa la possibilità di convertirli da un sistema di riferimento ad un altro.

La sintassi del comando è di questo tipo:

$ ogr2ogr output.shp input.shp -s_srs EPSG:4326 -t_srs EPSG:3003

In questo esempio si effettua la conversione di un file SHP da WGS84 a Gauss-Boaga Fuso Ovest.

Ma il risultato che si ottiene non è buono: caricando lo SHP generato (es tramite Qgis) e sovrapponendolo alla CTRN si nota uno scostamento rigido verso nord-ovest.

Nell’immagine seguente si può notare lo scostamento rispetto alla reale posizione della strada.

 

traccia riproiettata senza parametri "+towgs84"

traccia convertita senza parametri "+towgs84"

Questo errore si può rimediare inserendo i parametri comprensivi di “+towgs84” in luogo di “-t_srs”. Pertanto il comando per ottenere una riproiezione corretta (ci sono ancora errori, ma notevolmente ridotti) è il seguente:

$ ogr2ogr gb_$nome_ref.shp $nome_ref.shp -s_srs EPSG:4326 -t_srs ‘+proj=tmerc +ellps=intl +lat_0=0 +lon_0=9 +k=0.999600 +x_0=1500000 +y_0=0 +units=m +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68’

Il risultato è questo:

qgis_si_towgs

traccia convertita con parametri "+towgs84"

Per continuare con il post precedente sopra citato ho aggiornato lo script in Perl già pubblicato. In sostanza lo script fa 4 cose:

– scarica i dati dal GPS (nel caso specifico un i-blue 747);

– converte le track (trk) in waypoint (wpt) per poter memorizzare il TIMESTAMP di ogni punto;

– converte il nuovo GPX in SHP (con tabella attribuiti ben popolata);

– converte lo SHP generato dal sistema WGS84 a Gauss-Boaga Fuso Ovest

Questo lo script integrale: script_trk2wpt

Se trovate imprecisioni commentate!

GPX | magie con gpsbabel :-)

GPX è un formato di interscambio dati per dispositivi GPS. Sostanzialmenete è un file XML. Al suo interno vengono memorizzate, oltre alle coordinate X,Y e Z, anche altre informazioni quali DATE e TIMESTAMP. E proprio quest’ultimo dato è l’oggetto di questo post. Tutto è nato dalla necessità di salvare i dati recuperati via GPS in uno SHP (shape file: formato dati standard in ambito GIS) in modo da poter localizzare (mediante query) la mia posizione ad una determinata ora. Caricando un file GPX in Qgis vengono visualizzate tracce (trk), waypoint (wpt) e rotte (rte). Durante l’acquisizione della traccia vengono “taggati” n punti ogni TOT secondi (ho impostato la rilevazione della posizione in base al tempo). La traccia visualizzata diventa un record unico e ad essa sono abbinati una serie di dati. Ma in questo modo non riesco a risalire alla mia posizione; i dati sono riferiti al tracciato nella sua interezza. Esiste un tool davvero eccezionale: GPSBABEL. Consente una buona serie di “magie” per convertire dati GPX. In particolare è possibile convertire una traccia in una serie di wp. In questo modo ad ogni punto viene associato anche il momento in ci è stato rilevato. In seconda battuta si può trasformare il nuovo GPX con i wp in SHP mediante OGR2OGR o GPX2SHP. vediamo i passi necessari:

– trasformazione delle tracce in waypoint mediante gpsbabel:
$ gpsbabel -i gpx -f nome_traccia.gpx -x transform,wpt=trk -o gpx -F nome_wp.gpx

– conversione del GPX in SHp mediante gpx2shp:
$ gpx2shp -w -o nome_wp.shp nome_wp.gpx

Visto che questo lavoro dovrebbe processare una serie di tracce recuperate in tempi diversi da persone diverse ho predisposto (una vera operazione di hackeraggio artigianale vista la mia bassissima esperienza di programmazione) un piccolo e semplice script in Perl. Lo script ha come requirements la presenza di perl, gpsbabel e gpx2shp e deve essere eseguito all’interno della directory contenente i GPX da processare.
Lo script in formato PDF: gpx_trk2wpt_gpx2shp. Copiare il testo e incollarlo in un nuovo file. Dare un nome al file (Es: converter_gpx_shp.pl) con estesnione .pl e lanciarlo con:
$ perl converter_gpx_shp.pl
All’avvio viene chiesto il nome del GPX da elaborare (omettendo l’estensione .GPX) ed il nome da dare al file generato. A fine operazione vengono generati un nuovo GPX contente i WP delle tracce ed uno SHP con i WP stessi.
Questo SHP può essere caricato in Qgis per le opportune elaborazioni.

Mtkababel

Mtkbabel è un programma in Perl per gestire (configurare/scaricare) dispositivi GPS come l’i-blue-747 (GPS data-logger) della Transystem.

Questo tool consente di salvare dati dal GPS al PC in formato GPX e BIN, modificare i criteri di logging (tempo/distanza/velocità), avviare o bloccare il logging, cancellare la memoria del dispositivo, e altre piccole funzioni.

Posizionare il pulsante del GPS su “log” e collegarlo al PC mediante cavo USB.

Per settare il tempo di campionamento ad 1 secondo:

$ mtkbabel -r 1 s

Per scaricare i dati:

$ mtkbabel -l off -f data -t

In questo caso impostiamo lo spegnimento della funzione di log (off), e creiamo un file “data” (in realtà vengono creati due file: “data.bin” e “data_trk.gpx”) contenente le tracce (trk).

Per cancellare la memoria:

$ mtkbabel -E