GPX(GPS交换格式)是用于交换GPS数据的轻量级XML数据格式。资料来源:http://www.topografix.com/gpx.asp
是否有在 GPX 文件 trkpt 节点中嵌入心率数据的标准?
我正在构建一个处理 gpx 文件的应用程序,我想知道是否有在 节点内嵌入心率数据的标准。 GPX 规范没有提及这一点,但 eac...
我正在使用 gpxpy 从 gpx 文件中提取数据。数据示例: 我正在使用 gpxpy 从 gpx 文件中提取数据。数据示例: <?xml version="1.0" encoding="UTF-8"?> <gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" version="1.1" creator="xyz3"> <metadata> <name>Cubieres-St.Paul</name> <desc>Export from GpsPrune</desc> </metadata> <trk> ... </trk> </gpx> 代码如下: def gpxinfo(gpx): # gpx =: class gpxpy.gpx.GPX "extract from GPX-file" gpxname = "No gpxname" description = "No description" if gpx.name: gpxname = gpx.name if gpx.description: description = gpx.description return {'gpxname': gpxname, 'description': description} 现在,我想为其他缺少的 gpx 文件添加 <metadata>..</metadata> 部分。 对我来说,gpxpy 的问题是将“name”和“desc”标签插入 gpxpy 在解析文件时建立的内部数据结构中。 即使查看 gpxpy 源代码我也无法掌握。 我没有 gpxpy,但据我所知,这个模块使用 lxml 来解析 gpx xml。 gpx-文档. 我添加了 3 个函数来操作 gpx: from lxml import etree as et from io import BytesIO gpx_ = b"""\ <?xml version="1.0" encoding="UTF-8"?> <gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" version="1.1" creator="xyz3"> <wpt> wptType </wpt> <rte> rteType </rte> <trk> trkType </trk> <extensions> extensionsType </extensions> </gpx> """ def change_meta(root, namespaces, my_meta_data): """ Replace text for existing tags """ for k,v in my_meta_data.items(): try: t = root.find(f"./metadata/{k}", ns) t.text = v except: print(f"Tag {k} not found in gpx file") return root def extend_meta(root, namespaces, my_meta_data): """ Replace text and add additional tags in metadata """ ns = namespaces meta = root.find(".//metadata", ns) d = [] # Change existing nodes for elem in meta.iter(): for k,v in my_meta_data.items(): if k in elem.tag: elem.text = v d.append(elem.tag.split('}')[1]) # add missing nodes for k,v in my_meta_data.items(): if k not in d: t = et.Element(f"{{http://www.topografix.com/GPX/1/1}}{k}") t.text = v meta.append(t) return root def create_meta(root, namespaces, my_meta_data): """ Replace text and add additional tags in metadata """ ns = namespaces meta = et.Element('metadata') root.insert(0, meta) for k,v in my_meta_data.items(): t = et.Element(f"{{http://www.topografix.com/GPX/1/1}}{k}") t.text = v meta.append(t) return root def write_gpx(root, filename): et.indent(root, space=' ') et.dump(root) tree = et.ElementTree(root) tree.write(filename, xml_declaration=False) if __name__ == "__main__": file = BytesIO(gpx_) root = et.parse(file).getroot() #root = et.parse("landscape.gpx") ns = root.nsmap #print(root) #print(ns) # My new data tag-name : text meta_data = { "name" :"No gpxname", "desc": "No description", "author": "No author", "copyright": "No copyright", "link": "No link", "time": "No time", "keywords": "No keywords", "bounds": "No bounds", "extensions": "No extensions"} # Change metadata #new_gpx = change_meta(root, ns, meta_data) #et.dump(new_gpx) # Change and extend metadata #new1_gpx = extend_meta(root, ns, meta_data) # add metadata if missing meta_gpx = create_meta(root, ns, meta_data) # print and write the changed gpx write_gpx(meta_gpx, "newGpx.gpx") 输出(打印和文件): <gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" version="1.1" creator="xyz3"> <metadata> <name>No gpxname</name> <desc>No description</desc> <author>No author</author> <copyright>No copyright</copyright> <link>No link</link> <time>No time</time> <keywords>No keywords</keywords> <bounds>No bounds</bounds> <extensions>No extensions</extensions> </metadata> <wpt> wptType </wpt> <rte> rteType </rte> <trk> trkType </trk> <extensions> extensionsType </extensions> </gpx>
我正在尝试在矢量图层上插入 GPX 数据,并希望稍后读取标签内的属性。 这是我的 GPX 文件的一小段摘录: 我正在尝试在矢量图层上插入 GPX 数据,并希望稍后读取标签内的属性。 这是我的 GPX 文件的一小段摘录: <gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" creator="Catalog to GPX Transformer"> <wpt lat="49.5486899" lon="8.6643041"> <name>node_16257516</name> <extensions> <addr_city>Weinheim</addr_city> <addr_country>DE</addr_country> <addr_housenumber>31</addr_housenumber> <addr_postcode>69469</addr_postcode> <addr_street>Bergstraße</addr_street> <amenity>fast_food</amenity> <brand>McDonald's</brand> <brand_wikidata>Q38076</brand_wikidata> <brand_wikipedia>en:McDonald's</brand_wikipedia> <cuisine>burger</cuisine> <indoor_seating>yes</indoor_seating> <name>McDonald's</name> <opening_hours>PH,Su-Th 09:00-01:00, Fr,Sa 09:00-04:00</opening_hours> <outdoor_seating>yes</outdoor_seating> <smoking>no</smoking> <takeaway>yes</takeaway> <website>https://www.mcdonalds.de/</website> <wheelchair>limited</wheelchair> </extensions> </wpt> </gpx> 请注意,并非所有航点都具有相同的扩展名。有时可能会丢失一些。 我发现了一些关于可选 readExtensions() 回调函数的信息,该函数可以传递到 GPX 构造函数中,但在文档或原始 GitHub PR 中找不到关于 readExtensions 回调函数的足够信息。 我将如何实现 readExtensions 函数以及是否需要执行其他操作才能从该功能读取扩展? 对于您的数据,函数如 readExtensions: (feature, extensions) => { const children = extensions.children; for (let i = 0; i < children.length; ++i) { const element = children.item(i); feature.set(element.tagName, element.textContent); } } 可用于将扩展元素转换为功能属性。
我试图从 gpx 轨道获得速度、路线 我的轨迹点 236.5028532022-02-20T02:04:51Z 我试图从 gpx 赛道获得速度、路线 我的轨迹点 <trkpt lon="77.209995" lat="28.520444"><ele>236.502853</ele><time>2022-02-20T02:04:51Z</time><extensions><speed>0.788036</speed><course>209.456757</course><hAcc>6.222376</hAcc><vAcc>1.408607</vAcc></extensions></trkpt> with open('kaggle/input/workout-routes/route_2022-02-02_8.06pm.gpx', 'r') as gpx_file: gpx = gpxpy.parse(gpx_file) route_info = [] for track in gpx.tracks: for segment in track.segments: for ind, point in enumerate(segment.points): print(point.speed) route_info.append({ 'latitude': point.latitude, 'longitude': point.longitude, 'elevation': point.elevation, 'time': np.datetime64(point.time), 'course': point.course }) 点.速度=无 我试图通过这样的扩展来提高速度 point.extensions 并获得[] 我如何获得速度并在路线信息中实现 要使用 gpxpy 从 GPX 轨迹点中的扩展获取速度,您可以手动提取扩展数据。 具体方法如下 首先使用解析代码 with open('your_gpx_file.gpx', 'r') as gpx_file: gpx = gpxpy.parse(gpx_file) 然后使用 重复曲目和片段 for track in gpx.tracks: for segment in track.segments: for point in segment.points: # Process each point 然后从扩展中提取速度 speed = None course = None for extension in point.extensions: if extension.tag == 'speed': speed = float(extension.text) if extension.tag == 'course': course = float(extension.text) 然后将数据存储到列表中 route_info.append({ 'latitude': point.latitude, 'longitude': point.longitude, 'elevation': point.elevation, 'time': np.datetime64(point.time), 'speed': speed, 'course': course }) 它将为您提供包含 GPX 文件中每个轨迹点的纬度、经度、海拔、时间、速度和路线的字典列表。 它对我有用,也一定对你有用。 希望这有帮助:D 快乐编码!
替换 esp32 上 sd 卡文本 (gpx) 文件的最后一行
我正在尝试将 gpx 轨迹从 GPS 写入 ESP32 上的 SD 卡。由于我不太熟悉 c,所以我很难完成这项任务: 每次我向文件写入新的轨道段时,我都想...
使用Leaflet.js和Leaflet GPX绘制带阴影的GPX轨迹
我正在使用 Leaflet.js 和 Leaflet GPX 在地图上显示许多 GPX 轨迹。轨迹应该有白色阴影,以便它们在地图上更好地突出。为此,每个轨道都添加到...
我想将komoot生成的xml文件读取到DataFrame中。以下是 xml 文件的结构: 我想将 komoot 生成的 xml 文件读取到 DataFrame 中。这是 xml 文件的结构: <?xml version='1.0' encoding='UTF-8'?> <gpx version="1.1" creator="https://www.komoot.de" xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"> <metadata> <name>Title</name> <author> <link href="https://www.komoot.de"> <text>komoot</text> <type>text/html</type> </link> </author> </metadata> <trk> <name>Title</name> <trkseg> <trkpt lat="60.126749" lon="4.250254"> <ele>455.735013</ele> <time>2023-08-20T17:42:34.674Z</time> </trkpt> <trkpt lat="60.126580" lon="4.250247"> <ele>455.735013</ele> <time>2023-08-20T17:42:36.695Z</time> </trkpt> <trkpt lat="60.126484" lon="4.250240"> <ele>455.735013</ele> <time>2023-08-20T17:44:15.112Z</time> </trkpt> </trkseg> </trk> </gpx> 我尝试了这段代码: pd.read_xml('testfile.gpx',xpath='./gpx/trk/trkseg') 但不知怎的,我的xpath似乎有问题。也就是说,我明白了这个ValueError: ValueError: xpath does not return any nodes. Be sure row level nodes are in xpath. If document uses namespaces denoted with xmlns, be sure to define namespaces and use them in xpath. 我尝试了很多,但我选择的 xpath 都没有成功。 遵循 ValueError 指南,您需要将 namespace 传递给 read_xml : df = ( pd.read_xml( "testfile.gpx", xpath=".//doc:trkseg/doc:trkpt", namespaces={"doc": "http://www.topografix.com/GPX/1/1"} ) ) 输出: print(df) lat lon ele time 0 60.126749 4.250254 455.735013 2023-08-20T17:42:34.674Z 1 60.126580 4.250247 455.735013 2023-08-20T17:42:36.695Z 2 60.126484 4.250240 455.735013 2023-08-20T17:44:15.112Z
我正在尝试分析GPS收集数据的每个点的速度。我正在使用 gpxpy,并且我已经从 gpx fi 打印出一些内容,例如最大速度、开始和结束时间、移动时间等...
在“我的地图”中,导入 gpx 或 kml 文件时,“我的地图”显示发生错误。无法加载 GPS 轨迹 我想上传在法国科西嘉岛徒步旅行的 gpx 文件,它的名字是 « Mare I mare cent...
我对编码还很陌生,作为一个很好的项目,我想制作一个 gpx 到 stl 转换器。经过一些研究后,我得出的结论是,这一定是可能的。我为此使用reactJS
我正在尝试使用Java创建一个XML文件,它是GPS坐标(GPX)的集合。每次我从 Android 设备收到坐标(大约每秒 1 个)时,我都需要 appe...
在 PATH 变量中引用 GPSBabel 以在 R 中使用
我已经在这里阅读了这个问题和答案,在 R 中读取 GPX 文件时读取多个 .gpx 文件。在问题末尾,问题设置者指出“要运行 readGPS,您将需要开源 GPS...
我使用脚本将 gpx 轨迹直接加载到我的地图上,效果很好。 https://github.com/shramov/leaflet-plugins 脚本的核心是 var track = new L.GPX('fells_loop.gpx', { 异步:真,
如何将谷歌地图 GeoJSON 转换为 GPX,保留位置名称
我已通过外卖工具导出了我的谷歌地图兴趣点(保存的地点/位置)。我如何将其转换为 GPX,以便将其导入 OSMAnd? 我尝试使用 gpsbabel: GPSBA...
我想使用 Laravel 将 .gpx 文件上传到存储。我不想对它做任何事情,只是上传它。目前正在尝试仅上传到我的本地机器。 每当我尝试这样做时,我都会...
我想用DOM和Transformer写gpx文件 我的代码是这样的 try { val document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument() val trkpt = document....。
OpenLayers 3+。列出测量的公里数,并在地图上突出显示公里数。
你知道我怎么能做这样的事情吗?你有一些OpenLayers 3+中的示例代码吗?
我想通过纬度和经度点数组创建gpx文件。我的数组看起来像这样:const points = [[34.12877,-117.65464],[34.12878,-117.65391],....];我想变成...
我正在使用脚本来生成具有GPS数据... GPX文件的文件。现在,我正在搜索适用的MIME TYPE。 var alumnopath = DriveApp.getFoldersByName(foldername); var folderalumno = ...