[GRASS5] v.in.gpsbabel

Hamish hamish_nospam at yahoo.com
Fri Jan 20 05:17:52 EST 2006


> V.IN.GPSBABEL
> 
> Hi all, we post the new version of v.in.gpsbabel, with some bug fixed
> ...

Hi,

Great work. We should put it into CVS so we can work "on the same page"
and make patching easier. Then once all the bugs are sorted out we just
have to activate it.

Uploading routes and tracks works for me. Martin's new 'd.vect -c'
feature is great for viewing each track line in a different color. 
Waypoints don't work at all. Maybe make them use GPX filter instead of 
XCSV?


comments:

Please apply recent bug fixes to v.in.garmin:
http://freegis.org/cgi-bin/viewcvs.cgi/grass6/scripts/v.in.garmin/v.in.garmin

These are the changes since the version you started from?:
http://freegis.org/cgi-bin/viewcvs.cgi/grass6/scripts/v.in.garmin/v.in.garmin.diff?r1=1.12&r2=1.23

(e.g. unset locale so awk doesn't misinterpret "," as decimal place
holder, add v.in.ascii "EXITCODE=$?" tests etc.)


Parameters:
  output   name for new binary vector file (omit for display to stdout)
    file   device of file used to import data
    proj   projection of input data (use cs2cs options), if not set the
map projection is used


should that be
    file   name of device or file used to import data
                          ^^^ 

I think that option be called "input" not "file"? It is a little
confising as device is not a file. (yes, I know, "in UNIX everything is
a file")


and maybe this is clearer?

    proj   projection of input data (using PROJ.4 terms), if not given
input is assumed to be WGS84 Lat/lon


> g.proj -jf > $TMP.tmp
> read OUT_PROJ < $TMP.tmp
etc.

simplify:
OUT_PROJ="`g.proj -jf`"

shell variables are much quicker and lighter than writing & reading
files.


descripton.html:
Import tracks from /dev/ttyS0 garmin GPS in tracks binary vector file 
v.in.gpsbabel -w file=/dev/ttyS0 format=garmin output=tracks 
             ^^^^
Should be -t ?

"AUTHORS
..
Based on v.in.garmin for GRASS 6.0 by Hamish Bowman"

you should add
"and v.in.garmin.sh for GRASS 5 by Andreas Lange"

as without Andreas's awk programming it wouldn't go anywhere.



The Makefile needs to install grass_write_ascii.style.
gpsbabel -h:
   xcsv                  ? Character Separated Values
     style                 Full path to XCSV style file (required)
                           ^^^^

add this to the end of the Makefile:
	cp -f grass_write_ascii.style $(GISBASE)/etc/

and in the script:
STYLE="$GISBASE/etc/grass_write_ascii.style"
...
[gpsbabel ...] -o xcsv,style="$STYLE"


in grass_write_ascii.style:
#
# FILE LAYOUT DEFINITIIONS:
#
FIELD_DELIMITER         PIPE

that doesn't work for me (gpsbabel 1.2.4). It writes out the word 
"PIPE".

Need to test for gpsbabel version >= 1.2.?
$ gpsbabel -V | grep Version | cut -f3 -d' '

Seems I need to backport version 1.2.7 of gpsbabel to Debian/stable..

Anyway editing the style file to make it "|" instead of "PIPE" works
for now.

style file:
change %f to %.8f to allow sub-millimeter precision. (we use trimbles :)
  IFIELD LON_DECIMAL,"","%.8f"
  IFIELD LAT_DECIMAL,"","%.8f"


next I get:
167.89686441|-44.64901694|-99999999.000000|-99999999.000000|03-DEC-05 02:30
167.91928768|-44.68072065|-99999999.000000|-99999999.000000|03-DEC-05 03:44
Attempting waypoint projection transform with cs2cs
Importing Waypoints...
Maximum input row length: 82
Maximum number of columns: 5
Minimum number of columns: 5
column: 1  type: double
column: 2  type: double
column: 3  type: double
column: 4  type: double
column: 5  type: string  length: 15
ERROR: Number of columns defined (6) does not match number of columns (5)
       in input.

i.e. above input doesn't match columns="":
            cat "${TMP}.asc" | v.in.ascii output="$NAME" cat=0 \
                columns='x double precision, y double precision, altitude double precision, Creatdate varchar(10), time varchar(11), comments varchar(40)'

(note those can just be "columns='x double, y double, ...")


So the style file needs fixing. Style file only defines five columns.
GPX import may go better?

This is what my Garmin 48 reports:

$ gpsbabel -i garmin -f /dev/ttyS0 -o csv -F wpt.csv
[...]
-44.64902, 167.89686, 03-DEC-05 02:30
-44.68072, 167.91929, 03-DEC-05 03:44

$ gpsbabel -i garmin -f /dev/ttyS0 -o gpx -F wpt.gpx
[...]
<wpt lat="-44.649016941" lon="167.896864414">
  <name>124</name>
  <cmt>03-DEC-05 02:30</cmt>
  <desc>03-DEC-05 02:30</desc>
  <sym>dot</sym>
</wpt>
<wpt lat="-44.680720652" lon="167.919287682">
  <name>125</name>
  <cmt>03-DEC-05 03:44</cmt>
  <desc>03-DEC-05 03:44</desc>
  <sym>dot</sym>
</wpt>


Tracks:
> There is a problem I want to make at your attention: with our gps
> (garmin), when we download points the time-field is not correctly set
> (the time set is not that of point creation but a system default
> time).

this?:
start_time of first line gets set to download clock time, not GPS 
timestamp.

end_time is ok.
end_lon is set to first lon value in line, not the last value.

Routes:
route_id is lost
start_wpt is wrong for all but last route.



> Davide Spano, Claudio Porta 
> University of Pisa
(and Markus)


good on ya,
Hamish




More information about the grass-dev mailing list