ArcEngine 反距离权重插值法计算简单地面高程

介绍了一种基于鼠标位置的简单高程插值算法,该算法通过搜索一定半径内的高程点并采用反距离权重插值法计算当前位置的高程值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手上有一张测绘的高程点的矢量图,需要做一个简单的高程插值算法,在鼠标移动是根据其周边的点的高程计算出当前的高程值,

不想做的太复杂,基本思路是按一定的半径搜索高程点,根据每一个高程点的距离远近进行加权平均,计算出高程值,

精确一点,就是使用反距离权重插值法,距离越远的高程点,影响度越低,如下图:

在ArcEngine中实现,以鼠标点为中心搜索 指定半径的图元,使用如下方法:

/// <summary> /// 搜寻高程点 /// </summary> /// <param name="elevationLayer">高程图层</param> /// <param name="currentPosition">当前鼠标位置</param> /// <param name="searchRadius">搜寻半径</param> /// <returns></returns> private IFeatureCache SearchPoint(ILayer elevationLayer, IPoint currentPosition, int searchRadius) { IFeatureLayer ftrLyr = elevationLayer as IFeatureLayer; IFeatureCache m_featureCache = new ESRI.ArcGIS.Carto.FeatureCacheClass(); m_featureCache.Initialize(currentPosition, searchRadius); m_featureCache.AddFeatures(ftrLyr.FeatureClass); return m_featureCache; }

然后遍历图元,使用IFeature的get_value方法获取图元的高程值字段内容,按算法计算一下,就出来了,凑合可以用了,至少比直接平均要来的好一点,使用的搜索半径默认为90M,这个是参考了国际DEM的精度,以及地图高程点的疏密程度来设置的,可根据具体情况设置。

参考资料:《地理信息系统算法基础》科学出版社 2006 p166

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值