7 December 2020
gpscsv 1 The GPSD Project GPSD Documentation
gpscsv dump the JSON output from gpsd as CSV
`gpscsv` -? --class MCLASS --count COUNT --cvt-isotime --debug LVL --device DEVICE --fields FIELDS --file FILE --header HEADER --help --host HOST --port PORT --seconds FIELDS --separator SEPARATOR --version -c MCLASS -D LVL -f FIELDS -h -n COUNT -V -x FIELDS [host[:port[:device]]]

## DESCRIPTION

gpscsv is a simple Python program for reading a gpsd JSON data streams and outputting them in Comma Separated Values (CSV) format. It takes input from a specified gpsd and reports to standard output. The program runs until the gpsd dies, "`-n COUNT`" messages are processed, "`-x SECONDS`" have passed, or it is interrupted by ^C or other means.

One good use of gpscsv is to create CSV files for use with the gnuplot program.

## OPTIONS

The program accepts the following options:

`-?`
`-h`
`--help`

  Show help information and exit.

`-c MCLASS`
`--class MCLASS`

  Select the JSON class messages of type MCLASS. Default is TPV. .

`--cvt-isotime`

  Convert fields named "time" from ISO time to UNIX time.

`-D LVL`
`--debug LVL`

  Set debug level to LVL. Default 0. Higher arguments than 0 produce more debug output.

`--device DEVICE`

  The DEVICE on the gpsd to connect to. Defaults to all.

`-f FIELDS`
`-fields FIELDS`

  The FIELDS from the JSON message to dump to the output. Set FIELD to empty ('') for all fields Default varies by CLASS.

`--file FILE`

  Read JSON from FILE instead of from gpsd..

`--header HEADER`

  Set header style to HEADER. 0 for no header, 1 output fields as header, 2 send fields as a comment ('#'). Defaults to 1.

`--host HOST`

  Connect to the gpsd on HOST. Defaults to localhost.

`-n COUNT`
`--count COUNT`

  Exit after outputting COUNT records. Set COUNT to 0 to disable. Default is 0

`--port PORT`

  Use PORT to connect to gpsd. Defaults to 2947.

`--separator SEPARATOR`

  Use SEPARATOR as the field separator. Default separator is a comma (',').

`-V`
`--version`

  Show gpscsv version, and exit.

`-x SECONDS`
`--seconds SECONDS`

  Exit after SECONDS number of seconds have passed. Set SECONDS to 0 to disable. Default is 0

## EXAMPLES

Some basic examples, do them in exact order shown:

Grab 100 samples of time,lat,lon,altHAE:

      $ gpscsv -n 100 --cvt-isotime  > tpv.dat

Grab 100 samples of time,epx,epy,epv,eph,sep

      $ gpscsv -n 100 --cvt-isotime -f time,epx,epy,epv,eph,sep > ep.dat

Grab 100 samples of time,xdop,ydop,vdop,tdop,hdop,gdop,pdop

      $ gpscsv -n 100 --cvt-isotime -c SKY  > sky.dat

Grab 100 samples of time,nSat,uSat

      $ gpscsv -n 100 --cvt-isotime -c SKY -f time,nSat,uSat  > sat.dat

start gnuplot in interactive mode:

      $ gnuplot

Some gnuplot housekeeping:

      # this are csv files
      gnuplot> set datafile separator ','
      # use the first line as title
      gnuplot> set key autotitle columnhead
      # X axis is UNIT time in seconds.
      gnuplot> set xdata time
      gnuplot> set timefmt "%s"

Now to plot time vs latitude:

      gnuplot> plot 'tpv.dat' using 1:2

Then to plot longitude and altHAE, in separate plots:

      gnuplot> plot 'tpv.dat' using 1:3
      gnuplot> plot 'tpv.dat' using 1:4

Put both latitude and longitude on one plot:

      gnuplot> set y2tics
      gnuplot> plot 'tpv.dat' using 1:2, '' using 1:3 axes x1y2

Plot epx, epy, epv, eph, and sep in one plot:

      gnuplot> plot 'ep.dat' using 1:2, '' using 1:3, \
               '' using 1:4, '' using 1:5, '' using 1:6

Plot all the DOPs on one plot:

      gnuplot> plot 'sky.dat' using 1:2, '' using 1:3, '' using 1:4, \
               '' using 1:5, '' using 1:6, '' using 1:7, '' using 1:8

Plot nSat and uSat together:

      gnuplot> plot 'sat.dat' using 1:2, '' using 1:3

Lat/lon scatter plot:

      # x is no longer time
      gnuplot> set xdata
      gnuplot> plot 'tpv.dat' using 3:2 title 'fix'

## SEE ALSO

gpsd 8 ,

## AUTHOR

Gary E. Miller gem@rellim.com.