下标超出范围 - 加载.gpx文件

时间:2015-12-02 09:55:39

标签: r gpx

此刻我正在尝试阅读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标记... 但我认为应该可以加载这个文件,我似乎也没找到。

非常感谢任何帮助!

1 个答案:

答案 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文件中的名称时存在错误....