使用XML包将TCX导入R中
发布时间:2020-12-16 05:35:14 所属栏目:百科 来源:网络整理
导读:我正在尝试使用 XML包将GPS运行数据从TCX文件导入到R中.这是我的数据的一小部分样本(只有3个跟踪点,而不是~900) ?xml version="1.0" encoding="UTF-8"?TrainingCenterDatabase xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/20
我正在尝试使用
XML包将GPS运行数据从TCX文件导入到R中.这是我的数据的一小部分样本(只有3个跟踪点,而不是~900)
<?xml version="1.0" encoding="UTF-8"?> <TrainingCenterDatabase xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2"> <Activities> <Activity Sport="Running"> <Id>2011-10-30T16:05:48Z</Id> <Lap StartTime="2011-10-30T16:05:48Z"> <TotalTimeSeconds>3855.99</TotalTimeSeconds> <DistanceMeters>12498.8115</DistanceMeters> <MaximumSpeed>4.45662498</MaximumSpeed> <Calories>1011</Calories> <Intensity>Active</Intensity> <TriggerMethod>Manual</TriggerMethod> <Track> <Trackpoint> <Time>2011-10-30T16:05:48Z</Time> <Position> <LatitudeDegrees>52.33613318</LatitudeDegrees> <LongitudeDegrees>-1.58814317</LongitudeDegrees> </Position> <AltitudeMeters>77.5234375</AltitudeMeters> <DistanceMeters>0.00000000</DistanceMeters> </Trackpoint> <Trackpoint> <Time>2011-10-30T16:05:49Z</Time> <Position> <LatitudeDegrees>52.33614810</LatitudeDegrees> <LongitudeDegrees>-1.58814283</LongitudeDegrees> </Position> <AltitudeMeters>77.5234375</AltitudeMeters> <DistanceMeters>1.77584004</DistanceMeters> </Trackpoint> <Trackpoint> <Time>2011-10-30T16:05:54Z</Time> <Position> <LatitudeDegrees>52.33627098</LatitudeDegrees> <LongitudeDegrees>-1.58818323</LongitudeDegrees> </Position> <AltitudeMeters>76.0814209</AltitudeMeters> <DistanceMeters>15.7694969</DistanceMeters> </Trackpoint> </Track> </Lap> </Activity> </Activities> </TrainingCenterDatabase> 而我正在尝试使用跟踪点读取 doc = xmlParse("filetest.tcx") xmlToDataFrame(nodes = getNodeSet(doc,"//Trackpoint")) 但是这会失败,结果是一个空的数据框.但是我发现如果我删除 xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2" 从文件开头的TrainingCenterDatabase标记开始,此导入按预期正确运行. IE浏览器.使用以下数据: <?xml version="1.0" encoding="UTF-8"?> <TrainingCenterDatabase> <Activities> <Activity Sport="Running"> <Id>2011-10-30T16:05:48Z</Id> <Lap StartTime="2011-10-30T16:05:48Z"> <TotalTimeSeconds>3855.99</TotalTimeSeconds> <DistanceMeters>12498.8115</DistanceMeters> <MaximumSpeed>4.45662498</MaximumSpeed> <Calories>1011</Calories> <Intensity>Active</Intensity> <TriggerMethod>Manual</TriggerMethod> <Track> <Trackpoint> <Time>2011-10-30T16:05:48Z</Time> <Position> <LatitudeDegrees>52.33613318</LatitudeDegrees> <LongitudeDegrees>-1.58814317</LongitudeDegrees> </Position> <AltitudeMeters>77.5234375</AltitudeMeters> <DistanceMeters>0.00000000</DistanceMeters> </Trackpoint> <Trackpoint> <Time>2011-10-30T16:05:49Z</Time> <Position> <LatitudeDegrees>52.33614810</LatitudeDegrees> <LongitudeDegrees>-1.58814283</LongitudeDegrees> </Position> <AltitudeMeters>77.5234375</AltitudeMeters> <DistanceMeters>1.77584004</DistanceMeters> </Trackpoint> <Trackpoint> <Time>2011-10-30T16:05:54Z</Time> <Position> <LatitudeDegrees>52.33627098</LatitudeDegrees> <LongitudeDegrees>-1.58818323</LongitudeDegrees> </Position> <AltitudeMeters>76.0814209</AltitudeMeters> <DistanceMeters>15.7694969</DistanceMeters> </Trackpoint> </Track> </Lap> </Activity> </Activities> </TrainingCenterDatabase> 我得到了我想要的数据帧:(除了位置没有分成lat和long,但我预计我应该能够处理它,除非有人可以建议一种更简单的方法直接使用XPath吗?) > xmlToDataFrame(nodes = getNodeSet(doc,"//Trackpoint")) Time Position AltitudeMeters DistanceMeters 1 2011-10-30T16:05:48Z 52.33613318-1.58814317 77.5234375 0.00000000 2 2011-10-30T16:05:49Z 52.33614810-1.58814283 77.5234375 1.77584004 3 2011-10-30T16:05:54Z 52.33627098-1.58818323 76.0814209 15.7694969 显然,我不想手动从我要导入的任何文件中删除它.是否有一些我做错了(或许有XPath?)这是阻止它工作,还是有解决方法从XML数据中删除该部分? 非常感谢
这是名称空间问题.就这样做吧
xmlToDataFrame(nodes <- getNodeSet(doc,"//ns:Trackpoint","ns")) 要直接获得按纬度和经度划分的位置,您可以执行以下操作 nodes <- getNodeSet(doc,"ns") mydf <- plyr::ldply(nodes,as.data.frame(xmlToList)) setNames(mydf,c('time','lat','long','alt','distance')) 它给 time lat long alt distance 1 2011-10-30T16:05:48Z 52.33613318 -1.58814317 77.5234375 0.00000000 2 2011-10-30T16:05:49Z 52.33614810 -1.58814283 77.5234375 1.77584004 3 2011-10-30T16:05:54Z 52.33627098 -1.58818323 76.0814209 15.7694969 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ruby-on-rails – 我将事故捆绑更新到Rails 4.0,如何撤消?
- 正则表达式语法
- Swift - UISwitch
- ruby-on-rails-3 – 使用Wicked_PDF(wkhtmltopdf)在PDF中嵌
- ruby-on-rails-3 – Rails 3和will_paginate – 优雅的方式
- c# – 如何在异步方法中启动期待已久的后台任务?
- c# – .Net Gridview在鼠标悬停后恢复交替颜色
- 数据存储File SharedPreference Sqlite
- algorithm – 使用LRS数组增强的因子oracle查找多个字符串的
- Flex3与BlazeDS HelloWorld 详解