IDW——空间插值

  IDW(Inverse Distance Weighted)是一种常用而简便的空间插值方法,它以插值点与样本点间的距离为权重进行加权平均,离插值点越近的样本点赋予的权重越大。 设平面上分布一系列离散点,已知其坐标和值为Xi,Yi, Zi (i =1,2,…,n)通过距离加权值求z 点值,则z值见右上图公式。  IDW通过对邻近区域的每个采样点值平均运算获得内插单元。这一方法要求离散点均匀分布,并且密度程度足以满足在分析中反映局部表面变化。  IDW在ArcGIS里具体实现过程:  1)单击Spatial Analyst 下拉箭头,单击Interpolate to Raster,在一级菜单中单击Inverse Distance Weighted命令,打开IDW对话框。  2)单击Input points下拉箭头,选择参加内插计算的点数据集。  3)单击Z value field下拉箭头, 选择参加内插计算的字段名称。  4)在Power文本框中输入的IDW幂值。  5)单击Search radius type下拉箭头,选择搜索半径类型。  6)用Use barriers polylines选择河流、湖泊、水库等中断线文件,限制插值计算。  7)用Output cell size控制输出结果的栅格大小。  8)用Output raster文本框输入结果文件名称。

不直接调用GP:

IRasterLayer rl = new RasterLayerClass();

double cellsize = 0.001; ////设置越小效率越低

IGeoDataset fdataset = pFeaclsSHP as IGeoDataset; ////IDW的范围图层,图层图形外面的不处理

                IDistanceOp2 distance = new RasterDistanceOpClass();

                IInterpolationOp pInterpolationOp = new RasterInterpolationOpClass();

                IRasterAnalysisEnvironment envir = pInterpolationOp as IRasterAnalysisEnvironment;

                object extent = (object)fdataset.Extent;

                object missing = System.Reflection.Missing.Value;

                envir.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue, ref extent, ref missing);

                object cell = (System.Object)cellsize;

                envir.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref cell);

                envir.Mask = fdataset;

                object barrier = System.Reflection.Missing.Value;

                IFeatureClassDescriptor pFCDescriptor;

                pFCDescriptor = new FeatureClassDescriptorClass();

                pFCDescriptor.Create(feacls, null, "Z");   ////feacls是点图层,Z是点图层的Z字段

                IGeoDataset rasDataset = pInterpolationOp.IDW(pFCDescriptor as IGeoDataset, , pRadius, ref barrier);

                rl.CreateFromRaster(rasDataset as IRaster);

调用GP:

发现调用GP时无法实现按照指定的图形形状裁剪,并且需要设置一个临时路径,此路径不能已存在,否则不处理,所以不推荐。

IRasterLayer rl = new RasterLayerClass();

string idwpath = Application.StartupPath + "\\IDW";

                ESRI.ArcGIS.Geoprocessor.Geoprocessor gp = new ESRI.ArcGIS.Geoprocessor.Geoprocessor();

                ESRI.ArcGIS.SpatialAnalystTools.Idw pIDW = new ESRI.ArcGIS.SpatialAnalystTools.Idw(pFeaLyr, "Z", idwpath);

                pIDW.in_barrier_polyline_features = pFeaLyrShp;

                pIDW.power = ;

                pIDW.cell_size = cellsize;

IGeoProcessorResult results = (IGeoProcessorResult)gp.Execute(pIDW, null);

rl.CreateFromFilePath(idwpath);

AE开发实现GP工具IDW的更多相关文章

  1. AE开发中栅格图层实现分级渲染

    GP工具IDW执行后,生成的栅格图层是黑白二色,需要手动进行分级渲染,似乎不是所有栅格图层都可以进行分级渲染,注意异常处理.注意ARCMAP中是有颜色的,无需自己处理. IRasterClassify ...

  2. ArcGIS Engine开发中利用GP工具时常出现的错误

    在用GP工具的时候常常会碰到这个错误: 调用 GP 对 COM 组件的调用返回了错误 HRESULT E_FAIL 解决方案: 这种情况一般有两种可能. 1.AE程序的license的级别不够. 2. ...

  3. 利用C#与AE调用GP工具

    转自原文 利用C#与AE调用GP工具 第一,首先要明确自己需要调用arctoolbox里面的什么工具,实现什么样的功能. 第三,编写command或tool工具,编写自己要的功能工具. 1)首先创建一 ...

  4. AE调用GP工具的方法(转)

    第一,首先要明确自己需要调用arctoolbox里面的什么工具,实现什么样的功能. 第二,按照需求看看在arctoolbox工具中是怎么实现功能的,然后确定需要的数据源. 第三,编写command或t ...

  5. 利用AE编写切图工具的一些探讨

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 这周利用晚上在家时间研究了下如何使用AE来开发切图工具.最初 ...

  6. AE开发使用内存图层

    AE开发中,有时需要从磁盘中读取一些文件信息如坐标点转为图层并进行分析,此过程并不需要坐标点入库之类的操作,就可以创建一个内存图层解决问题.创建内存图层需要用到InMemoryWorkspaceFac ...

  7. AE开发概念辨析

    樱木 原文 AE开发之概念辨析2,AE开发涉及相关概念,AE开发相关概念 1 AE中的类库 AE总共包括了21个子库,分别是SYSTEM,SYSTEMUI,GEOMETRY,DISPLAY,SERVE ...

  8. c# 调用ArcEngine的GP工具

    转自原文c# 调用ArcEngine的GP工具,AE调用GP工具 IAoInitialize m_AoInitialize = new AoInitializeClass(); esriLicense ...

  9. AE开发能否实现TOC Control里添加多个Data Frame

    问题: 在ArcMap中,菜单Insert下Data Frame,可以在TOC中增加Data Frame,在MapControl或者PageLayoutControl下都可以正常显示多个Data Fr ...

随机推荐

  1. JavaScript 易错知识点整理

    本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES ...

  2. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path解决方案

    0.环境: win7系统,Tomcat9配置无误. 1.错误: 项目中某一.jps页面忽然出现错误,鼠标点上去为:The superclass "javax.servlet.http.Htt ...

  3. C++基础——模拟事务 (2)Composite模式

    =================================版权声明================================= 版权声明:原创文章 禁止转载  请通过右侧公告中的“联系邮 ...

  4. Android开发究竟用什么工具,Eclipse||AS

    所谓公欲善其事必先利器,那就让我们来看一下android的开发工具吧,安卓的开发工具有Eclipse和Android Studio,另外还有IntelliJ IDEA,可能很多人并不知道. 首先看一下 ...

  5. ubuntu 下安装 texlive 并设置 ctex 中文套装

    1 安装 texlive2013 1.1 下载 texlive2013 下载地址:http://ftp.ctex.org/mirrors/CTAN/systems/texlive/Images/tex ...

  6. WPF系列 自定控件

    引言 WPF中微软提供了一些基本的控件,但是工作中这些基础的控件往往不能满足我们的需求,这个时候我们就需要根据实际的需求去开发自己的控件,但要注意不是所有功能不满足的情况都需要通过自定义控件来实现.实 ...

  7. C++11 之 并发编程 (一)

    未来芯片制造,如果突破不了 5nm 极限,则 CPU 性能的提升,可能会依赖于三维集成技术,将多个 CPU 核集成在一起,使得多核系统越来越普遍. 以前的 C++ 多线程,一是受限于平台,多借助于封装 ...

  8. NOIP2008双栈排序[二分图染色|栈|DP]

    题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果栈S1 ...

  9. NYOJ 734

    奇数阶魔方 描述 一个 n 阶方阵的元素是1,2,...,n^2,它的每行,每列和2条对角线上元素的和相等,这样的方阵叫魔方.n为奇数时我们有1种构造方法,叫做“右上方” ,例如下面给出n=3,5,7 ...

  10. CSS实现进度条和订单进度条

    最近半个月为了期末考试,可要了学渣我半瓶血啊!今天本该好好复习的,可是状态不好,就随便找点乐子玩一玩,于是乎就想起之前面试时面试官给的一道题(见标题),那就弄点简单的小玩意给自己洗洗脑咯. 简单地效果 ...