zoukankan      html  css  js  c++  java
  • 判断该多边形是否与栅格有覆盖

    #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

  • 相关阅读:
    PMP考试结束了,期待结果中。。。
    Windows Server 2008安装及配置Terminal Server
    CMMI分段式级别的易理解版本
    c# RoundUp函数
    管理学中的知名定律之阿尔布莱特法则
    Risk Categories
    如何躲开“责任”的逆袭
    一次失败的聚会
    【老孙随笔】属相影响你的职业前途吗?
    项目经理的超越(三)人际优先,做事上的超越
  • 原文地址:https://www.cnblogs.com/yuxuetaoxp/p/4641595.html
Copyright © 2011-2022 走看看