zoukankan      html  css  js  c++  java
  • AE开发实现GP工具IDW

    IDW——空间插值

      

      IDW(Inverse Distance Weighted)是一种常用而简便的空间插值方法,它以插值点与样本点间的距离为权重进行加权平均,离插值点越近的样本点赋予的权重越大。 设平面上分布一系列离散点,已知其坐标和值为XiYi, Zi i =12n)通过距离加权值求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, 2, 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 = 2;
    
                   
    
                    pIDW.cell_size = cellsize;
    
    IGeoProcessorResult results = (IGeoProcessorResult)gp.Execute(pIDW, null);
    
     
    
    rl.CreateFromFilePath(idwpath);
  • 相关阅读:
    质量属性--信息技术手册
    蓝桥杯赛前整理
    感悟:荔枝架构实践与演进历程
    以《淘宝网》为例,描绘质量属性的六个常见属性场景
    感悟:淘宝架构演进背后——零售业务中台架构设计探讨及实践
    为什么要考研???
    寒假学习笔记03
    寒假学习笔记02
    寒假学习笔记01
    数据清洗与数据处理
  • 原文地址:https://www.cnblogs.com/jhlong/p/5394508.html
Copyright © 2011-2022 走看看