此刻我正在尝试阅读GPX文件,到目前为止,我已经从我的运动追踪器应用程序导出了运行,我已设法正确加载这些并将它们绘制在地图上。
现在我在我的应用程序中绘制了一条新路径,并将其导出到.gpx文件中,但是当我尝试在R中加载时,我收到以下错误:
nm [[1]]出错:下标超出界限
R代码:
library(plotKML)
library(leaflet)
route <- readGPX("../GPS data Serge/Testing.gpx", tracks = TRUE)
Testing.gpx文件:
<?xml version="1.0" encoding="UTF-8"?>
<gpx version="1.1" creator="Endomondo.com" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd" xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<metadata>
<author>
<name>Wouter Baeckelmans</name>
</author>
<link href="http://www.endomondo.com">
<text>Endomondo</text>
</link>
<time>2015-12-02T15:53:31Z</time>
</metadata>
<trk>
<name>Test</name>
<src>http://www.endomondo.com/</src>
<link href="https://www.endomondo.com/routes/639589549">
<text>Test</text>
</link>
<type>RUNNING</type>
<trkseg>
<trkpt lat="8.39087" lon="-12.94756"/>
<trkpt lat="8.39022" lon="-12.94777"/>
<trkpt lat="8.38974" lon="-12.94861"/>
<trkpt lat="8.38307" lon="-12.94227"/>
<trkpt lat="8.38248" lon="-12.94181"/>
<trkpt lat="8.3822" lon="-12.94171"/>
<trkpt lat="8.38104" lon="-12.94155"/>
<trkpt lat="8.3765" lon="-12.94101"/>
<trkpt lat="8.37593" lon="-12.94086"/>
<trkpt lat="8.37556" lon="-12.94065"/>
<trkpt lat="8.37522" lon="-12.9404"/>
<trkpt lat="8.3742" lon="-12.93948"/>
<trkpt lat="8.37367" lon="-12.93893"/>
<trkpt lat="8.37305" lon="-12.93819"/>
</trkseg>
</trk>
</gpx>
有什么想法会导致这个问题?我注意到这个.gpx文件看起来与我可以成功加载的其他.gpx文件不同。该文件包含每个trkseg
标记的trkpt
标记...
但我认为应该可以加载这个文件,我似乎也没找到。
非常感谢任何帮助!
答案 0 :(得分:1)
从readOGR
包中尝试rgdal
?
> route = readOGR("Testing.gpx","tracks")
OGR data source with driver: GPX
Source: "Testing.gpx", layer: "tracks"
with 1 features
It has 12 fields
> plot(route)
就是这样。
route
现在是SpatialLinesDataFrame
,因此请阅读sp
包,了解您可以使用它做些什么。 SpatialLinesDataFrame
特征可能是复杂的事物,例如整个分支河流系统,因此对原始坐标的访问可能相应复杂。如果您知道您的数据是一个简单的单行,那么您可以将坐标作为2列矩阵:
> coordinates(route)[[1]][[1]]
[,1] [,2]
[1,] -12.94756 8.39087
[2,] -12.94777 8.39022
[3,] -12.94861 8.38974
[4,] -12.94227 8.38307
[5,] -12.94181 8.38248
[6,] -12.94171 8.38220
[7,] -12.94155 8.38104
[8,] -12.94101 8.37650
[9,] -12.94086 8.37593
[10,] -12.94065 8.37556
[11,] -12.94040 8.37522
[12,] -12.93948 8.37420
[13,] -12.93893 8.37367
[14,] -12.93819 8.37305
这是因为您在该功能中有一个功能和一行。
查看readGPX
代码,我怀疑它在处理GPX文件中的名称时存在错误....