下标越界 - 加载 .gpx 文件

Subscript out of bounds - Loading .gpx file

目前我正在尝试读取 GPX 文件,到目前为止,我已经从我的运动追踪器应用程序中导出了跑步记录,并且我已经成功地正确加载了这些文件并将它们绘制在地图上。

现在我在我的应用程序中绘制了一条新路线并将其导出到一个 .gpx 文件中,但是当我尝试在 R 中加载它时我收到以下错误:

Error in nm[[1]] : subscript out of bounds

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 文件不同。该文件包含每个 trkpt 标签的 trkseg 标签... 但我认为应该也可以加载此文件,但我似乎没有找到方法。

非常感谢对此的任何帮助!

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