gpt4 book ai didi

Python、numpy、scipy : How to exclude a location error from GPS coordinates?(平均经度、纬度)

转载 作者:行者123 更新时间:2023-11-28 20:49:31 25 4
gpt4 key购买 nike

我使用 Python:

我有 2 个 GPS 点阵列 - lon 和 lat(超过 500 000 个点)。

我有 1 个日期时间数组。

lon = numpy.array(lon)
lat = numpy.array(lat)
dt = numpy.array(dt)

我有位置错误(GPS 传感器错误)。例如 15 米。

GPS_sensor_error = 0.015    

我需要从坐标中排除 GPS_sensor_error,因为轨道上没有星号。

enter image description here

(我不画坐标相同的点)

enter image description here

我怎么做到的?

现在:

  1. 我计算点之间的距离。

  2. 我找到最小距离,如果它小于 GPS_sensor_error,那么我平均经度、纬度。

  3. 重复 1。

  4. 重复 2。

  5. 重复直到所有距离都不会超过 GPS_sensor_error

更新:

     lon = numpy.array()
lat = numpy.array()

flag = True
while flag:
lon1 = lon[:-1]
lon2 = lon[1:]
lat1 = lat[:-1]
lat2 = lat[1:]

'''distance'''
x = (lon2 - lon1)
y = (lat2 - lat1)
d = numpy.sqrt(x * x + y * y)

min = numpy.min(d)
if min < GPS_sensor_error:
j = numpy.where(d == min)[0][0]

lon[j] = (lon[j] + lon[j + 1]) / 2
lat[j] = (lat[j] + lat[j + 1]) / 2

lon = numpy.delete(lon, j + 1)
lat = numpy.delete(lat, j + 1)

else:
flag = False

绕过所有点在纯 python 上工作很长时间......请教一下,如何使用scipy、numpy实现?


感谢

附言scipy、numpy 中可能已经有 GPS 过滤器了吗?

最佳答案

从数据科学的角度来看,您的做法是不正确的。您不能仅使用平均误差距离作为截止值并认为您的数据会更正确。您正在比较的两个点可能有大于或小于 15 m 的误差,它们可以相互移动或相互远离。如果您没有另一个确切的数据集,则无法判断什么是正确的点。你不能让这个数据集更精确。

但是我认为您的目标是简化您的数据集,而不是使其更准确。为此,您可以使用 Douglas–Peucker algorithm .我建议您将数据加载到 Postgis 中启用数据库(Postgresql + postgis)然后使用simplify功能。这将需要一些数据库设置时间,但它会大大加快你的速度。但是,如果你想在纯 python 中使用它,那么 SO question有一个非常好的片段。

顺便说一句。如果您正在使用 lat,lon 进行距离计算,请不要使用 Pythagoras。它无效,因为 lat,lon 不是欧几里得。使用 haversine算法。

关于Python、numpy、scipy : How to exclude a location error from GPS coordinates?(平均经度、纬度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14253067/

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