2013-07-21 3 views
3

Я пытаюсь создать непрерывный путь, основанный на входных координатах GPS в lat/long. Есть ли библиотека python, которая сделает это? Конечной целью является оптимизация, поэтому мне нужно, чтобы путь был постоянно дифференцируемым для определения градиента.Создать путь (сплайн) из GPS-координат

Я использую GDAL, но, похоже, у меня нет всей необходимой функциональности.

ответ

2

Это требует пакета scipy.interpolate. Эта страница на Interpolation in the SciPY Cookbook показывает, как использовать функции splprep для определения сплайн-узлов и splev, чтобы построить результирующую кривую на шумных данных в плоскости.

Пример поваренной (немного сокращен):

from numpy import arange, cos, linspace, pi, sin, random 
from scipy.interpolate import splprep, splev 

# make ascending spiral in 3-space 
t=linspace(0,1.75*2*pi,100) 

x = sin(t) 
y = cos(t) 
z = t 

# add noise 
x+= random.normal(scale=0.1, size=x.shape) 
y+= random.normal(scale=0.1, size=y.shape) 
z+= random.normal(scale=0.1, size=z.shape) 

# spline parameters 
s=3.0 # smoothness parameter 
k=2 # spline order 
nest=-1 # estimate of number of knots needed (-1 = maximal) 

# find the knot points 
tckp,u = splprep([x,y,z],s=s,k=k,nest=-1) 

# evaluate spline, including interpolated points 
xnew,ynew,znew = splev(linspace(0,1,400),tckp) 

import pylab 
pylab.subplot(1,1,1) 
data,=pylab.plot(x,y,'bo-',label='data') 
fit,=pylab.plot(xnew,ynew,'r-',label='fit') 
pylab.legend() 
Смежные вопросы