• 判断该多边形是否与栅格有覆盖


    #region 判断该多边形是否与栅格有覆盖,并统计裁剪的栅格的平均值、最大值、最小值
    /// <summary>
    /// 判断该多边形是否与栅格有覆盖
    /// </summary>
    /// <param name="MyReflectRstLyr"></param>
    /// <param name="MyPolygon"></param>
    /// <returns></returns>
    private static bool GetCoverByPloygon(IRasterLayer MyReflectRstLyr, IPolygon MyPolygon)
    {
    //IExtractionOp pExtractionOp = new RasterExtractionOpClass();
    //IGeoDataset pGeoOutput = pExtractionOp.Polygon(pGeoDataset, pPolygone, binside);

    IRasterLayer pRasterLayer = MyReflectRstLyr as IRasterLayer;
    IRaster pRaster = pRasterLayer.Raster;
    IRasterProps pProps = pRaster as IRasterProps;
    object cellSizeProvider = pProps.MeanCellSize().X;
    IGeoDataset pInputDataset = pRaster as IGeoDataset;
    IExtractionOp pExtractionOp = new RasterExtractionOpClass();
    IRasterAnalysisEnvironment pRasterAnaEnvir = pExtractionOp as IRasterAnalysisEnvironment;
    pRasterAnaEnvir.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref cellSizeProvider);
    object extentProvider = MyPolygon.Envelope;
    object snapRasterData = Type.Missing;
    pRasterAnaEnvir.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue, ref extentProvider, ref snapRasterData);
    IGeoDataset pOutputDataset = pExtractionOp.Polygon(pInputDataset, MyPolygon as IPolygon, true);
    IRaster clipRaster; //裁切后得到的IRaster
    if (pOutputDataset is IRasterLayer)
    {
    IRasterLayer rasterLayer = pOutputDataset as IRasterLayer;
    clipRaster = rasterLayer.Raster;
    }
    else if (pOutputDataset is IRasterDataset)
    {
    IRasterDataset rasterDataset = pOutputDataset as IRasterDataset;
    clipRaster = rasterDataset.CreateDefaultRaster();
    }
    else if (pOutputDataset is IRaster)
    {
    clipRaster = pOutputDataset as IRaster;
    }
    else
    {
    return false;
    }

    //统计平均值
    IRasterBandCollection pRasterBandCol;
    pRasterBandCol = (IRasterBandCollection)clipRaster;

    int aa;
    aa = pRasterBandCol.Count;

    IRasterBand pRasterBand;
    pRasterBand = pRasterBandCol.Item(0);
    pRasterBand.ComputeStatsAndHist();

    IRasterStatistics pRasterStatistic;
    pRasterStatistic = pRasterBand.Statistics;
    double meanValue;
    double MaxValue;
    double MinValue;
    meanValue = pRasterStatistic.Mean;
    MaxValue = pRasterStatistic.Maximum;
    MinValue = pRasterStatistic.Minimum;

    if (meanValue >= 1.0)
    {
    return true;
    }
    else
    {
    return false;
    }
    }
    #endregion

  • 相关阅读:
    implementaion bottle session with beaker
    [梦]20050802
    网站更新部署20100912
    Cherokee不值得推荐,你还是可以看一看
    最简单方法远程调试Python多进程子程序
    nginx相关的问题
    本地配置host解析的问题
    base target问题,
    在asp.net中自动合并小图片并使用css sprite显示出来
    html编辑器
  • 原文地址:https://www.cnblogs.com/yuxuetaoxp/p/4641595.html
Copyright © 2020-2023  润新知