【问题标题】:convert pandas DataFrame or list of longitude and latitudes to a gpx file in python将pandas DataFrame或经纬度列表转换为python中的gpx文件
【发布时间】:2020-03-04 20:56:57
【问题描述】:

我在 pandas DataFrame 中有经度和纬度值,但我想将其转换为 gpx 文件,以便稍后在谷歌地图中对其进行可视化。我怎么能用 python 做到这一点?我查看了 gpxpy 库,但示例显示了如何加载或读取 gpx 文件,而我想做相反的事情。我想读取一个 csv 文件并将其转换为 gpx 文件或直接从 pandas Dataframe 转换。

【问题讨论】:

标签: python pandas gps gpx


【解决方案1】:

这个怎么样:(改编自https://pypi.org/project/gpxpy/的创建文件部分)

# import pandas as pd
# import numpy as np

# df = pd.DataFrame(90*np.random.random((5, 2)))

# print(df)

import gpxpy
import gpxpy.gpx

gpx = gpxpy.gpx.GPX()

# Create first track in our GPX:
gpx_track = gpxpy.gpx.GPXTrack()
gpx.tracks.append(gpx_track)

# Create first segment in our GPX track:
gpx_segment = gpxpy.gpx.GPXTrackSegment()
gpx_track.segments.append(gpx_segment)

# Create points:
for idx in df.index:
    gpx_segment.points.append(gpxpy.gpx.GPXTrackPoint(df.loc[idx, 0], df.loc[idx, 1]))

# print(gpx.to_xml())

with open('output.gpx', 'w') as f:
    f.write(gpx.to_xml())

以上代码示例数据:

数据框:

#            0          1
# 0  76.297096  86.421851
# 1  26.041973   5.265947
# 2  24.292204  37.074964
# 3   2.033896  19.136688
# 4  13.527561  25.136911

XML 数据:

# <?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="gpx.py -- https://github.com/tkrajina/gpxpy">
#   <trk>
#     <trkseg>
#       <trkpt lat="76.29709588485436" lon="86.42185081600744">
#       </trkpt>
#       <trkpt lat="26.041973450515652" lon="5.2659474962495985">
#       </trkpt>
#       <trkpt lat="24.292204051893012" lon="37.07496383039659">
#       </trkpt>
#       <trkpt lat="2.033895516776183" lon="19.1366881465948">      </trkpt>
#       <trkpt lat="13.527560800715804" lon="25.136910635806306">
#       </trkpt>
#     </trkseg>
#   </trk>
# </gpx>

【讨论】:

  • 谢谢你,只是在打开文件的时候做个小更正,你忘了写 open 函数 ;)
【解决方案2】:

请参考:https://pypi.org/project/gpxpy/

我猜你需要这个包来完成你的任务。然后您可以使用他们提供的示例:

import gpxpy
import gpxpy.gpx

with open("outfile.gpx", "w") as f:
    f.write( gpx.to_xml())

将 pandas df 转换为 xml 如下所述: How do convert a pandas/dataframe to XML?

【讨论】:

  • 我没有 .gpx 文件可以打开它!!
  • 这将创建一个名为"outfile.gpx" 的文件并写入它。
  • 是的,但是将哪些内容写入该文件?问题是关于如何将一些纬度/经度数据(从熊猫数据框或 csv 文件)转换 到 gpx 文件。读起来好像他们没有将数据打包到 gpx 对象中,只需要转换为 XML 并保存。
  • @SpghttCd 你是对的。在df 中具有正确格式后,我只专注于写入文件。
猜你喜欢
  • 2023-03-20
  • 2018-03-11
  • 2022-01-23
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多