插入不均匀的表面

时间:2017-03-26 00:49:08

标签: python scipy interpolation

我试图插入不均匀的表面。由于不均匀,我的意思是输入表面在数据中有很大的间隙。我试图找出一种方法来读取这些数据,并忽略数据丢失的区域,只是插入有数据的区域。

以下是我所谈论的数据示例:

This is a snippet of a bathymetric surface I am working with

这是我正在使用的测深表面的片段。我为表面中的每个点输出x,y和z值的数据。正如您所知,在插值过程中我想忽略的数据缺失很大。

我使用np.genfromtxt读取数据,并生成三个包含x,y和z值的数组。问题是数据是交错格式,因此数据不包含空值或NoData值。

这是我当前的插值方法,我使用scipy griddata包进行插值:

x, y = np.mgrid[x1:xn:complex(numx+1,0), y1:yn:complex(numy+1,0)]
points = (easting,northing)
surface = griddata(points,depth,(x, y),fill_value='nan')

此处numx,numy值只是曲面中的最大x和y点,easting, northing是从数据中读取的x,y点。当我运行插值时,我会得到类似的结果:

enter image description here

你可以看到插值几乎使纳米填充正确。阵列的外侧部分是正确的,但它仍然试图在表面中间插入大间隙。效率并不是我现在的重要因素,但有一种很好的方法可以对表面进行插值,以便更好地“尊重”原始表面吗?所以它不会尝试插入没有值的区域或某种方式来填充没有nans值的区域?

0 个答案:

没有答案