gpt4 book ai didi

读取多个 .gpx 文件

转载 作者:行者123 更新时间:2023-12-04 17:27:24 25 4
gpt4 key购买 nike

假设我有许多 .gpx 文件(这些文件包含来自 Garmin eTrex 的 GPX 航路点数据)。我想将它们以不同的名称加载到 R 中并对其进行操作。

我可以这样读取一个文件:

library(maptools)
gpx.raw <- readGPS(i = "gpx", f = "file1_w_12_f_ddf.gpx", type="w")

假设我想将其中的一些读入内存。我可以尝试一个 for 循环:
files <- list.files(".",pattern = "*.gpx")
for(x in files){

#Create new file name
temp <- strsplit(x,"_",fixed=TRUE)
visit.id <- sapply(temp,FUN=function(x){paste(x[1],x[4],substr(x[5],1,3),sep="_")})

#read file with new filename
assign(visit.id, readGPS(i = "gpx", f = x, type="w"))
}

运行上面的程序会产生以下错误:

Error in read.table(con <- textConnection(gpsdata), fill = TRUE, ...) : no lines available in input In addition: Warning message: running command 'C:\PROGRA~2\GPSBabel\gpsbabel.exe -w -i gpx -f file1_w_12_f_ddf.gpx -o tabsep -F -' had status 1



请注意,我能够自己读取此文件,因此它似乎与文件本身无关,而是与循环运行 readGPS 有关。

总的来说,我仍然觉得 R 如何处理像上面的 x 这样的变量非常令人困惑。我不确定如何从独立实例修改 readGPS 的参数 f = "file1_w_12_f_ddf.gpx" : 应该是 x , 或 f = x , 或 f = "x" , 或者是什么?或者也许问题出在对 GPSBabel 的调用中...

我在下面包含了一个示例文件,以便您可以将其复制到文本编辑器,并另存为 .gpx。两次使用不同的名称并尝试自己。
<?xml version="1.0" encoding="UTF-8"?>
<gpx
version="1.0"
creator="GPSBabel - http://www.gpsbabel.org"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.topografix.com/GPX/1/0"
xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
<time>2010-09-14T18:35:43Z</time>
<bounds minlat="18.149888897" minlon="-96.747799935" maxlat="50.982883293" maxlon="121.640266674"/>
<wpt lat="38.855549991" lon="-94.799016668">
<ele>325.049072</ele>
<name>GARMIN</name>
<cmt>GARMIN</cmt>
<desc>GARMIN</desc>
<sym>Flag</sym>
</wpt>
<wpt lat="50.982883293" lon="-1.463899976">
<ele>35.934692</ele>
<name>GRMEUR</name>
<cmt>GRMEUR</cmt>
<desc>GRMEUR</desc>
<sym>Flag</sym>
</wpt>
<wpt lat="25.061783362" lon="121.640266674">
<ele>38.097656</ele>
<name>GRMTWN</name>
<cmt>GRMTWN</cmt>
<desc>GRMTWN</desc>
<sym>Flag</sym>
</wpt>
</gpx>

注意:要运行 readGPS,您需要在 PATH 变量中安装和引用开源 GPSBabel 程序。

最佳答案

弗雷德,

安装 GPSBabel 并更新 PATH 变量后,您的代码片段运行良好。我有两个对象名称 test1.gpx_NA_NAtest2.gpx_NA_NA对 28 个变量进行三个观察。那正确吗?我认为文件名中的 NA 位是由于您如何定义 visit.id和我的测试文件名不符合该范式。

你有没有在 R 的新实例上试过这个?

FWIW,我可能会将所有这些文件读入一个列表对象。我发现处理一个列表对象比处理许多不同的对象更容易。例如,

files <- dir(pattern = "\\.gpx")
#Replace all space characters with a "_". Replace with the character of your choice.
lapply(files, function(x) file.rename(from = x, to = gsub("\\s+", "_", x)))

#Reread in files with better names:
files <- dir(pattern = "\\.gpx")
out <- lapply(files, function(x) readGPS(i = "gpx", f = x, type = "w"))
names(out) <- files

out现在是一个包含 2 的列表,其中每个对象都是一个 data.frame,带有它之前关联的文件的名称。使用来自 *apply 的东西家庭也有好处,留下一个干净的工作空间。使用 for 循环会导致 x , temp , 和 visit.id闲逛后记。您可以将它们包装成一个函数调用,但只需使用 lapply我想会更直接。

关于读取多个 .gpx 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6397523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com