CSV data files

You will be able to tell from this that I am a newbie, but keen to get started.
I have a Columbus V-900 that outputs tracks ? as a .csv file. JOSM says it will accept .csv files but I can’t get it to. I then spent 6 -8 hours trying various conversions to try and get a usable .gpx file. I settled on a file conversion using GarminGPXConverter and imported the result into JOSM. No Luck. Although Slippy seemed to make the appropriate tiles available, i.e. the right section of map displayed, there were no points displayed. I think maybe the conversion treated all recorded positions as waypoints not a contiguous track. Is this the case and how can I overcome the stumbling block? Anyone willing to mentor me through this startup will be much appreciated.

Probably the best tool for converting GPS formats is GPSBabel.

What OSM needs to show a track is, ofcourse, trackpoints so you will have to convert the waypoints into trackpoints eventually (Although JOSM will show a blue flag for each waypoint). The second thing OSM needs is a timestamp on each trackpoint. You may want to download a few small example tracklogs from the OSM website and compare your own tracklog against it.

Thanks for your input Lambertus. I have spent another day playing with GPSBabel as you suggested but i don’t think my cause has advanced much. I also spent a bit of time going over the “Time Album” software supplied with the Columbus V-900, V1.5.4

The software is supplied in order to provide some basic communication with the Columbus V-900 Data Logger and to allow integration of voice recordings and photos.

The software generates a Config.txt file which is loaded onto the MicroSD card (Max capacity 2G). Included are; a) Time Zone; b) Ground or Airborne logging; c) Standard [limited] or Professional [full] Data Sets; d) Over speed alert 30Kph [min] to 300Kph [max]; e) Spy Tracking, ON/OFF & Interval [1min to 100min]; f) Kph or Mph; g) Feet or Meters; h) Track Points to be based on Distance or Time.

When the recorded data is downloaded from unit it is in .CSV format with column headers in following order:
INDEX = sequential number for points generated in track
TAG = for correlation of voice record or photo?
DATE = year month day, Ex: 090130 = Jan 30,09
TIME = hour minute second, 24hr, Ex: 100031 = 31 secs past 10AM
LATITUDE N/S = Ex: 45.012688N
LONGITUDE E/W = Ex: 075.640261W
ALTITUDE = settable in setup, meters or feet (whole number no decimal)
SPEED = settable in setup, kph or mph (whole number no decimal)
HEADING = degrees, 1 to 360, 0 being stationary
FIX MODE = settable in setup, 2D or 3D, shows achieved 2D or 3D
VALID = DGPS (differential) or SPS (standard)
PDOP = seen in test logging range of 1.1 to 3.2
HDOP = seen in test logging range of .8 to 1.5
VDOP = seen in test logging range of .8 to 2.9
VOX = geo-referenced file name of voice recording
IMAGE = I’ve not used yet but think YES/NO if software should look for matching EXIF data

What does OSM/JOSM need to see to know if the data is a track or individual waypoints?
Do I need to edit any of the column headings because I could do this manually with a text editor?
Any more clues to advance my progress more rapidly would be appreciated as I have a short visit mid month to Exuma in Bahamas and will record as much data as I can in the hope that it won’t be wasted.

Garmin GPS 3+, Garmin iQue3600, Columbus V-900

I’ve opened a couple of GPX files created by GPSBabel that I was using with JOSM yesterday. The differences are perhaps a bit more obvious if I quote bits:

From my track file

<trkpt lat="51.943822000" lon="1.055218000">
<trkpt lat="51.943817000" lon="1.055205000">

Note - I added the last two closing tags to the above example - in reality I was tracking at one second intervals from about 10am to about 16:40 which I split into roughly hourly tracks by saving progress to SD card and clearing on my GT-31.

From my waypoints file:

<wpt lat="51.944471600" lon="1.290305000">
<wpt lat="51.943933300" lon="1.289116600">

In the above the name, comment and description all come from my GPS device. If it’s possible to amend them within the device I don’t know, and don’t really care as I can tell from the map and my notes why I recorded a waypoint (it’s usually to mark where bollards are on a way or similar - I photograph the bollards from a short distance away, then stand between them and mark the waypoint).

The header on both files seems to be in a similar format, differing in time and bounds:

<?xml version="1.0" encoding="UTF-8"?>
creator="GPSBabel - http://www.gpsbabel.org"
xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
<bounds minlat="51.943582000" minlon ="1.045165000" maxlat="51.949028000" maxlon="1.055218000" />

The time in the above example is the time GPSBabel converted the BIN files from my SD card to GPX (and other) formats.

Anyway, you seem to have a lot more information than seems to be used in the above, so unless I’m missing something it should be possible to get the information into GPX format.

Bad form, replying to myself I know.

http://www.gpsbabel.org/htmldoc-development/fmt_unicsv.html has the universal CSV format for GPSBabel.

Perhaps you can work out suitable column headings for your CSV file to allow it to be processed as such a file?

Below is a 2 point tracklog in GPX format:

So if you’re logging just for OSM then you will need for each trackpoint:

If you’re interested in filtering out bad data (caused by bad reception of satellite data due to e.g. heavy cover or indoor use) then you might also want to enable:

And of course, if you want to see altitude graphs afterwards: ALTITUDE

If GPSBabel isn’t able to produce the correct gpx file, then creating simple script or even MS Excel can be useful to convert the CSV data into an usable GPX file.

I appreciate everyones input and I thought I was making progress. But my most recent attempt to upload a trace, submission 09020104.gpx, failed to import. Here’s the reported error: Found no good GPX points in the input data. At least 75% of the trackpoints lacked a tag.

I have no idea what to do next
The GPS logger output a .CSV file which was converted to a .KMZ file and then unzipped to a .KML. This was then converted to a .GPX and uploaded. The files up to .KML contained 1488 sequential track points, each with a time stamp 1 sec apart.
I have viewed the track in GPSMapEdit and ExpertGPS both show interconnected points with a time stamp on each point.
Start 2009-02-01 15:28:58
End 2009-02-01 15.53.48
I’d hate to see all this data go to waste and working with GPSBabel is above my skill level.
I’m a 70yr old with some spare time on my hands and thought I might be able to help with this great undertaking but I’m beginning to question my sanity at this point. Does anyone have any simple instructions that would help me past this block.

I’ve just loaded the KML equivalent of the GPX I quoted yesterday. The KML file has lost the times as far as I can see, so you need to create the GPX file at an earlier stage.

Or at least I can’t see times. I just see:

1.285322,51.947613,2.438400 1.285303,51.947612,2.438400 1.285307,51.947608,1.828800


Are you able to quote the first two or three lines of the CSV file here and I’ll (or we’ll) see what I (or we) can work out.

That’s what I was thinking too :slight_smile:

I have a Columbus V-900 and have recently recorded my first few tracks. I found a perl script here to convert the .csv files to gpx.

On Linux I’m doing:
columbus.pl 09020401.CSV > 09020401.gpx

FYI - you must set it to use “professional” mode to store the hdop, vdop, etc. and in order to use the perl script. Set the mode with a CONFIG.TXT in the root of the V-900:
1 Professional mode
000 Over-speed tag
001 Spy mode timer

Thank you all responders for your continuing interest and help. As requested here is some example data, firstly from the .CSV file generated by the logger. I have extracted some additional points where information is changing – the first 86 points virtually stationary, 87 onward DGPS kicks in, 118,119,120 getting up to speed & then 127 see below equivalent .GPX data. The CSV data was read in notepad as Excel drops the leading 0 in the DATE column.

1 ,T,090201,195532,44.612298N,075.687596W,0 ,0 ,0 ,3D,SPS ,1.2 ,0.9 ,0.8 ,
2 ,T,090201,195533,44.612414N,075.687896W,23 ,0 ,0 ,3D,SPS ,1.4 ,1.1 ,0.9 ,
3 ,T,090201,195534,44.612443N,075.687958W,31 ,0 ,0 ,3D,SPS ,1.4 ,1.1 ,0.9 ,
4 ,T,090201,195535,44.612443N,075.687960W,31 ,0 ,0 ,3D,SPS ,1.4 ,1.1 ,0.9 ,
5 ,T,090201,195538,44.612441N,075.687968W,39 ,0 ,0 ,3D,SPS ,1.4 ,1.1 ,0.9 ,
6 ,T,090201,195539,44.612441N,075.687970W,40 ,0 ,0 ,3D,SPS ,1.4 ,1.1 ,0.9 ,
7 ,T,090201,195540,44.612441N,075.687971W,40 ,0 ,0 ,3D,SPS ,1.4 ,1.1 ,0.9 ,
86 ,T,090201,195700,44.612475N,075.688044W,49 ,0 ,0 ,3D,SPS ,1.9 ,1.2 ,1.5 ,
87 ,T,090201,195701,44.612475N,075.688044W,49 ,0 ,0 ,3D,DGPS,1.9 ,1.2 ,1.5 ,
88 ,T,090201,195702,44.612475N,075.688046W,49 ,0 ,0 ,3D,DGPS,1.9 ,1.2 ,1.5 ,
89 ,T,090201,195703,44.612476N,075.688046W,49 ,0 ,0 ,3D,DGPS,1.9 ,1.2 ,1.5 ,
117 ,T,090201,195731,44.612476N,075.688039W,53 ,0 ,0 ,3D,DGPS,1.9 ,1.2 ,1.5 ,
118 ,T,090201,195732,44.612453N,075.687968W,53 ,3 ,0 ,3D,DGPS,1.4 ,1.1 ,0.8 ,
119 ,T,090201,195733,44.612451N,075.687943W,53 ,7 ,0 ,3D,DGPS,1.4 ,1.1 ,0.8 ,
120 ,T,090201,195734,44.612455N,075.687916W,54 ,9 ,79 ,3D,DGPS,1.9 ,1.2 ,1.5 ,
121 ,T,090201,195735,44.612468N,075.687891W,55 ,11 ,62 ,3D,DGPS,1.9 ,1.2 ,1.5 ,
122 ,T,090201,195736,44.612488N,075.687863W,56 ,11 ,52 ,3D,DGPS,1.9 ,1.2 ,1.5 ,
123 ,T,090201,195737,44.612508N,075.687840W,56 ,11 ,49 ,3D,DGPS,1.9 ,1.2 ,1.5 ,
124 ,T,090201,195738,44.612528N,075.687811W,56 ,11 ,44 ,3D,DGPS,1.9 ,1.2 ,1.5 ,
125 ,T,090201,195739,44.612549N,075.687786W,57 ,11 ,41 ,3D,DGPS,1.9 ,1.2 ,1.5 ,
126 ,T,090201,195740,44.612579N,075.687764W,57 ,12 ,36 ,3D,DGPS,1.9 ,1.2 ,1.5 ,
127 ,T,090201,195741,44.612615N,075.687738W,57 ,14 ,31 ,3D,DGPS,1.9 ,1.2 ,1.5 ,
128 ,T,090201,195742,44.612651N,075.687716W,57 ,14 ,27 ,3D,DGPS,1.9 ,1.2 ,1.5 ,

I donÂ’t know if this will be of any assistance but the following are the first few lines of the .GPX file equivalent of the foregoing .CSV file. It covers the first three waypoints/trackpoints and as you can see it has taken a big jump from the first two, the third one is actually 127 out of a total 192 in the original .CSV file.

<?xml version="1.0" encoding="UTF-8"?>



Time: 14:55:32
Index: 1
Date: 09-02-01
Latitude: 44.612298 N
Longitude: 075.687596 W
Altitude: 0m
Speed: 0km/h
Heading: 0°
Distance: 0.00km
PDOP: 1.2 HDOP: 0.9 VDOP: 0.8


<label_text>Time 14:55:32</label_text>

Time: 14:55:33 to 14:57:40
Index: 2
Date: 09-02-01
Latitude: 44.612414 N
Longitude: 075.687896 W
Altitude: 23m
Speed: 0km/h
Heading: 0°
Distance: 0.03km
PDOP: 1.4 HDOP: 1.1 VDOP: 0.9


<label_text>Time 14:55:33 to 14:57:40</label_text>

Time: 14:57:41
Index: 127
Date: 09-02-01
Latitude: 44.612615 N
Longitude: 075.687738 W
Altitude: 57m
Speed: 14km/h
Heading: 31°
Distance: 0.05km
PDOP: 1.9 HDOP: 1.2 VDOP: 1.5


<label_text>Time 14:57:41</label_text>

And the closing lines from the .GPX file

09020103.CSV Name: 09020103.CSV Qty of track point: 192 Time Album: V1.5.4 Qty of check point: 0 Qty of voice point: 0 Qty of photo point: 0 Start: 2009-02-01 14:55:32 End: 2009-02-01 14:58:42 Total time: 0 days 0 hours 3 minutes 14 seconds Distance: 0.19km Average speed: 3.6km/h Max speed: 20.0km/h Max altitude: 57m Time zone: GMT-05:00 Type: Normal track 09020103.CSV 0.000 23.000 57.000 &etc. Again trackpoints 1 & 2 followed by a jump to 127

Garmin GPS 3+, Garmin iQue3600, Columbus V-900

Looking at the csv sample and at ljn’s suggested perl script, I’d say that looks the quickest solution. I don’t think you need to worry about the config.txt as you seem to have the figures in the columns that are referenced.

If you’re on Windows and don’t have Perl you can get it here:


Thank you all responders for your assistance. The perl script suggested by ljn did the trick at least it did produce an acceptable upload file. I have some reservations about its content though. I have not read anything about any post processing of the data. For instance one column of data in the CVS file, VALID has for content SPS or DGPS. In view of the known increase in accuracy with DGPS should we be deleting SPS data.

I noticed the columbus log files show ‘SPS’ for the first 50-100+ points then the rest are ‘DGPS’ Differential GPS. You could filter the SPS points from the CSV file before converting to gpx. I’ve had to delete some of the initial samples due to inaccuracy.

The columbus records audio waypoints. The columbus.pl script I linked to in post#6 ignores the audio file info. I’ve modified the script to generate a gpx file with the audio waypoints only. Each waypoint links to an audio file. In JOSM there is an icon on the map for the audio waypoint. When you select it JOSM launches an audio player to play the file. The audio file and gpx file must be in the same directory. I load both gpx files into JOSM - the track file and the audio waypoint file.

columbus.pl in.CSV > out.gpx
columbus_audio.pl in.CSV > out_audio.gpx

I’ve posted a copy of the original columbus.pl file as well as the columbus_audio.pl file here:

I recently bought the Columbus V-900 and wrote an application which can easily and quickly convert the csv files into the needed gpx files.
Take a look: http://www.rz.tu-clausthal.de/~rzis/projects/v900togpx/