我有大约 100 个 GPS 坐标列表,我想画出每个列表所构成的线。
使用散点图绘制的列表之一,看起来有点像这样:
显然那里有一条线;
我尝试了几种方法来对 GPS 位置进行排序并绘制它们:
lats = []
lngs = []
with open(filename) as f:
for line in f:
lat, lng = line.split("\t")
lats.append(float(lat))
lngs.append(float(lng))
def sort_positions(position):
return position[0]+position[1]
positions= zip(lngs, lats)
positions = sorted(poss, key=sort_positions)
for i, positionin enumerate(positions):
lng, lat = position
#plt.scatter(lng, lat)
try:
n_lng, n_lat = positions[i+1]
plt.plot((lng, n_lng),(lat, n_lat), "b")
except IndexError:
pass
plt.show()
按经度排序
def sort_positions(position):
return position[0]
按纬度排序
def sort_positions(position):
return position[1]
通过求和排序
def sort_positions(position):
return position[0]+position[1]
如果线在其中一个轴(纬度/经度)上大部分是直的,则绘制得很好(仍然显示一些小凹凸)
这是绘制良好的列表之一,按纬度排序。
我只在两点之间的距离小于 200~500 米时绘制,但由于缺少一些数据,我最终在线上出现了漏洞。
也许我做错了。有谁知道如何正确绘制这条线?
EDIT:
作为回应rth
answer:
蓝线是用他在这道题中的方法,红线是用他在这道题中的方法其他答案 https://stackoverflow.com/questions/31464345/fitting-a-closed-curve-to-points/31466013#31466013.
忽略了红色正在闭合循环的事实。
两者都有一些限制,首先,红色的不能处理太多的点,我不得不为两者使用 1/90 的点,蓝色的当点过于聚集时会产生一些奇怪的急转弯(图像中的黑点),而红色的那些地方有一些奇怪的曲线。