Skip to content

Problem with gdalOGR: GPX format

3 messages · Roger Bivand, Agustin Lobo

#
I'm trying to write an SpatialPointsDataFrame object as
GPX. I do:
writeOGR(wpcast1SPDF,dsn="/media/Transcend/MONTSENY2008/MONTSENY_UAV2/GPX",layer="wpcast1lonlat",driver="GPX")
Error in writeOGR(wpcast1SPDF, dsn =
"/media/Transcend/MONTSENY2008/MONTSENY_UAV2/GPX",  :

	GDAL Error 6: Field of name 'coords.x1' is not supported in GPX schema.
Use GPX_USE_EXTENSIONS creation option to allow use of the <extensions>
element.

Which would be valid Field of name 'coords.x1'? I've tried reading
http://www.topografix.com/GPX/1/1/
but it's really hard to understand.

I've also tried to add layer_options="GPX_USE_EXTENSIONS=YES" according to
http://www.gdal.org/ogr/drv_gpx.html
"GPX_USE_EXTENSIONS: By default, the GPX driver will discard attribute
fields that do not match the GPX XML definition (name, cmt, etc...).
If GPX_USE_EXTENSIONS=YES is specified, extra fields will be written
inside the<extensions> tag."

but still get the same error (and, ultimately, I'm not sure this would
actually solve the problem, the best would be using the "valid Field of
name coords.x1"):

writeOGR(wpcast1SPDF,dsn="/media/Transcend/MONTSENY2008/MONTSENY_UAV2/wpscastlonlat.gpx",layer="wpcast1lonlat",driver="GPX",layer_options="GPX_USE_EXTENSIONS=YES")
Error in writeOGR(wpcast1SPDF, dsn =
"/media/Transcend/MONTSENY2008/MONTSENY_UAV2/wpscastlonlat.gpx",  :

	GDAL Error 6: Field of name 'coords.x1' is not supported in GPX schema.
Use GPX_USE_EXTENSIONS creation option to allow use of the <extensions>
element.
Any help appreciated,
Agus
#
On Mon, 6 Jul 2009, Agustin Lobo wrote:

            
Yes, hard to understand, but that's ontology in the GIScience sense, it's 
certainly clear to the people who wrote it (I hope!). Try this:

library(sp)
load("fl1.rda")
pts <- spsample(fl1, n=50, offset=0.0, type="regular")
crds <- coordinates(pts)
SPDF <- SpatialPointsDataFrame(pts, data=as.data.frame(crds))
names(SPDF)
library(rgdal)
writeOGR(spTransform(SPDF, CRS("+proj=longlat +datum=WGS84")),
   dsn="fl1sp_pts.gpx", layer="waypoints", driver="GPX",
   dataset_options="GPX_USE_EXTENSIONS=yes")
summary(readOGR(dsn="fl1sp_pts.gpx", layer="waypoints"))

so three things: the GPX driver in OGR only seems to accept geographical 
coordinates; you needed layer="waypoints" - it accepts any value for 
writing, but readOGR() only takes the five enumerated on the OGR GPX page; 
and it is dataset_options="GPX_USE_EXTENSIONS=yes" (or YES), not 
layer_options=.

The last was the key problem, but it then failed on coordinates outside 
the range of geographical coordinates. The layer name is not used, so 
maybe best to stay with the most appropriate of the five values accepted 
for reading.

Roger

  
    
#
Thanks,

I've just circumvented the problem by writing a "universal csv" file (in 
gpsbabel jargon, see:
http://www.gpsbabel.org/htmldoc-development/fmt_unicsv.html

using write.table() and having converted to lon,lat and wgs84 with 
spTransform() first.

Then I convert to compegps format (the format used by the UAV navigation 
system) using gpsbabel,
GPX was an intermediate format between OGR and gpsbabel. unicsv seems 
easier to manage!

Agus
Roger Bivand wrote: