IDW
# gma.smc.Interpolate.IDW(Points, Values, Boundary = None, Resolution = None, Power = 2, SearchRadius = 12, InProjection = 'WGS84')1.1.0 +
功能: 【反距离权重法插值】。使用反距离加权法(IDW)将点插值成二维数组。
参数:
Points:list||tuple||array
。插值点 X(经度),Y(纬度)坐标。至少有 4 个坐标点。
示例
Points = [(122.52, 52.97), (124.72, 52.35), (124.4 , 51.67), (126.63, 51.73)]
Values:array
。坐标点对应的数据值,与 Points 数量相同。
可选参数:
Boundary = tuple
。插值结果的四至边界,分别为最小经度(左)、最小纬度(下)、最大经度(右)、最大纬度(上)。默认(None)从输入坐标点提取范围。
Resolution = float
。插值结果的分辨率。默认(None)为 Boundary 经度、纬度差最小值的十分之一。
Power = float
。距离指数(幂)。用来控制插值周围点的显著性,默认为 2。
SearchRadius = int
。搜索范围。指定要用于执行插值的最邻近输入采样点数量,默认为 12 个点。
InProjection = str
。输入坐标点的坐标系。默认为 WGS84(EPSG:4326)。
返回: 类型:namedtuple
。包含数据(Data)和仿射变换(Transform)。
参考文献:
[1] Philip, G. M., and D. F. Watson. A Precise Method for Determining Contoured Surfaces. Australian Petroleum Exploration Association Journal 22: 205–212. 1982.
[2] Watson, D. F., and G. M. Philip. A Refinement of Inverse Distance Weighted Interpolation. Geoprocessing 2:315–327. 1985.
示例 (下载 示例数据):
from gma import smc, io
ELSXLayer = io.ReadVector("Interpolate.xlsx")
Data = ELSXLayer.ToDataFrame()
Points = Data.loc[:, ['经度','纬度']].values
Values = Data.loc[:, ['值']].values
# 插值
IDWD = smc.Interpolate.IDW(Points, Values, Resolution = 0.05)
2
3
4
5
6
7
8
9
10
与 ArcGIS IDW 插值结果(重分类后)对比: