使用scipy的SmoothSphereBivariateSpline进行插值

时间:2014-02-19 09:25:52

标签: python numpy scipy interpolation

我想使用scipy.interpolate.SmoothSphereBivariateSpline  在地图上插入温度(我不熟悉数据插值,所以这可能不是一个好选择,但我想试一试)。

这就是我所做的:

  • 从tsv文件加载数据,如下所示:
  

纬度经度温度城市

     

30.22 120.14 39 2caves

     

30.26 120.13 39 3caves

     

30.23 120.13 39 Anlong

     

33.48 108.5 30安达

     

37.2 100.74 15 Anan

     

...

  • 进入熊猫

    data = pandas.read_table('temp.tsv')
    
  • 从lat,lon获取弧度:

    theta = numpy.array(data.latitude) / 180 * numpy.pi # the lat, lon domain is safe here so
    phi = numpy.array(data.longitude) / 180 * numpy.pi  # I won't adjust for the output range
    temp = numpy.array(data.temperature)
    
  • 将它们送入scipy:

    lut = SmoothSphereBivariateSpline(theta, phi, temps)
    

然后该函数抛出一个ValueError:

  

ValueError异常:   所需的存储空间超出了可用的存储空间:nxest   或者最小,或者太小。   加权最小二乘样条对应于当前的集合   节。

我尝试用不同的值调整s参数,从1,2,3到7000,8000,它只是保持太小。我该怎么做才能使插值工作?

1 个答案:

答案 0 :(得分:0)

只是为了记录:在the documentation之后有一个平滑参数45-59/1 9 * * 1-5 /path/to/script */1 10-16 * * 1-5 /path/to/script 可供选择;默认值为 s,但有时按照文档中的建议手动选择它很重要。