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

#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

时间: 2024-10-10 02:24:47

判断该多边形是否与栅格有覆盖的相关文章

(hdu 7.1.1)Shape of HDU(判断一个多边形是否是凸多边形)

题目: Shape of HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 159 Accepted Submission(s): 97   Problem Description 话说上回讲到海东集团推选老总的事情,最终的结果是XHD以微弱优势当选,从此以后,"徐队"的称呼逐渐被"徐总"所取代,海东集团(

如何判断封闭多边形是顺时针还是逆时针?

方法一:Green公式 Green公式揭示了平面区域的二重积分和封闭曲线上的线积分的关系. 其中L+表示沿着封闭区域的边界曲线正向. 并且由Green公式的推导过程我们知道: 这里若L=-y,可以保证(1)式子在区域中恒正,且等于封闭区域面积. 同理,M=x,也可以保证(2)式子在区域中恒正,且等于封闭区域面积. 所以我们只需沿着多边形的边求曲线积分,若积分为正,则是沿着边界曲线正方向(逆时针),反之为顺时针,且所得绝对值为多边形面积. NOTE:边界曲线的正向即沿着边界曲线,单连通区域总在边界

判断一个多边形是顺时针还是逆时针的方法

1.关于如何判定多边形是顺时针还是逆时针对于凸多边形而言,只需对某一个点计算叉积 = ((xi - xi-1),(yi - yi-1)) x ((xi+1 - xi),(yi+1 - yi)) = (xi - xi-1) * (yi+1 - yi) - (yi - yi-1) * (xi+1 - xi) 如果上式的值为正,逆时针:为负则是顺时针. 而对于一般的简单多边形,则需对于多边形的每一个点计算上述值,如果正值比较多,是逆时针:负值较多则为顺时针. 2.还有一种说明是取多边形的极点值,多边形

ArcGIS 按多边形区域统计栅格影像的一些信息

在使用ArcGIS对栅格影像进行分析时,难免要进行一些统计类的分析.如统计框选区域的像素的个数,面积.均值等内容. 下面给出使用“Spatial Analyst Tools -- > Zonal --> Zonal Statistics as Table ” 进行操作的例子,以便让GIS开发者有一个开发的思路. 以下为图示的操作过程,不再赘述,亲们只懂得大意就好.不明白的地方请留言.

简单多边形~判断此多边形是顺时针还是逆时针。

链接:https://www.nowcoder.com/acm/contest/110/B来源:牛客网 题目描述 为了让所有选手都感到开心,Nowcoder练习赛总会包含一些非常基本的问题. 比如说: 按顺时针或逆时针方向给你一个简单的多边形的顶点坐标,请回答此多边形是顺时针还是逆时针. 输入描述: 输入包含N + 1行.第一行包含一个整数N,表示简单多边形的顶点数.在下面的N行中,第i行包含两个整数x i ,y i ,表示简单多边形中的第i个顶点的坐标. 输出描述: 如果简单多边形按顺时针顺序

poj1584——判断凸包,判断点是否在多边形内

poj1584——判断凸包,判断点是否在多边形内 A Round Peg in a Ground Hole Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5441   Accepted: 1729 Description The DIY Furniture company specializes in assemble-it-yourself furniture kits. Typically, the pieces o

Codeforces Round #587 (Div. 3) C题 【判断两个矩形是否完全覆盖一个矩形问题】 {补题 [差点上分系列]}

C. White Sheet There is a white sheet of paper lying on a rectangle table. The sheet is a rectangle with its sides parallel to the sides of the table. If you will take a look from above and assume that the bottom left corner of the table has coordina

MySQL 覆盖索引

通常大家都会根据查询的WHERE 条件来穿件合适的索引,不过这只是索引优化的一个方面.设计优秀的索引应该考虑到整个查询,而不单单是WHERE 条件部分.索引确实是一种查找数据的高效方式,但是MySQL也可以使用索引来直接获取列的数据,这样就不再需要读取数据行.如果索引的叶子节点已经包含要查询的数据,那么还有什么必要再返回表查询呢?如果一个索引包含(或者覆盖)所有需要查询的字段的值,我们就称之为“覆盖索引”. 覆盖索引是非常有用的工具,能够极大的提高性能.考虑一下如果查询只需要索引而无需返回表,会

unity多边形uv贴图

以前我写过一篇文章,不规则图形uv贴图的,(http://blog.csdn.net/itolfn/article/details/17240131)当时用的三角剖分的算法,但是那个算法有所不完整,有一条这么规定的:最优性:任意两个相邻三角形形成的凸四边形的对角线如果可以互换的话,那么两个三角形六个内角中最小的角度不会变大.就是取四变形的最大化三角形内角去连接对角线,分组两个三角形,但是有时候不是自己想要的那一个图形,如图: 三角剖分算法会算出ABC和ACD这两个三角形,但是我们需要ABD和BC