全国高分辨率土地利用数据服务 土地利用数据服务 土地覆盖数据服务 坡度数据服务 土壤侵蚀数据服务 全国各省市DEM数据服务 耕地资源空间分布数据服务 草地资源空间分布数据服务 林地资源空间分布数据服务 水域资源空间分布数据服务 建设用地空间分布数据服务 地形、地貌、土壤数据服务 分坡度耕地数据服务 全国大宗农作物种植范围空间分布数据服务
多种卫星遥感数据反演植被覆盖度数据服务 地表反照率数据服务 比辐射率数据服务 地表温度数据服务 地表蒸腾与蒸散数据服务 归一化植被指数数据服务 叶面积指数数据服务 净初级生产力数据服务 净生态系统生产力数据服务 生态系统总初级生产力数据服务 生态系统类型分布数据服务 土壤类型质地养分数据服务 生态系统空间分布数据服务 增强型植被指数数据服务
多年平均气温空间分布数据服务 多年平均降水量空间分布数据服务 湿润指数数据服务 大于0℃积温空间分布数据服务 光合有效辐射分量数据服务 显热/潜热信息数据服务 波文比信息数据服务 地表净辐射通量数据服务 光合有效辐射数据服务 温度带分区数据服务 山区小气候因子精细数据服务
全国夜间灯光指数数据服务 全国GDP公里格网数据服务 全国建筑物总面积公里格网数据服务 全国人口密度数据服务 全国县级医院分布数据服务 人口调查空间分布数据服务 收入统计空间分布数据服务 矿山面积统计及分布数据服务 载畜量及空间分布数据服务 农作物种植面积统计数据服务 农田分类面积统计数据服务 农作物长势遥感监测数据服务 医疗资源统计数据服务 教育资源统计数据服务 行政辖区信息数据服务
Landsat 8 高分二号 高分一号 SPOT-6卫星影像 法国Pleiades高分卫星 资源三号卫星 风云3号 中巴资源卫星 NOAA/AVHRR MODIS Landsat TM 环境小卫星 Landsat MSS 天绘一号卫星影像
通过前边对于具体的 Geometry 对象的介绍可知,除了 Point 对象之外,其他几何对象都是通过其他 几何对象集合构建而成。如 MultiPoint 对象是点的集合,Path 对象是 Segment 对象的集合,Polyline 对 象是 Path 对象的集合,Polygon 对象是 Ring 对象的集合,Multipatch 对象是 Triangle Strip 和 Trangle Fan, Trangle,Ring 对象的集合。
ArcGIS Engine 提供了 三 个主要的 几 何图形集 合 接口用于 对 几何对象 的 操作,分 别 是 IPointCollection,ISegmentCollection 和 IGeometryCollection,这些接口揭示出 ArcGIS Engine 的几 何模型的实质——它们是一种组合构成的模式,这种组合并不一定按照严格的层次结构组织。
在前面介绍一些几何对象的时候,也给大家演示了部分使用功能,这三个接口在程序开发中经常使 用到,接下来简单阐述以下这三个接口的使用方法。
IGeometryCollection 接口被 Polygon,Polyline, Multipoint, Multipatch, Trangle,T rangle Strip,Trangle Fan 和 GeometryBag 所实现。 IGeometryCollection 接口提供的方法可以让开发者对一个 几何对象的组成元素即子对象进行添加,改变和移除。例如:
组成 Polyline 对象的子对象是 Path 对象。
组成 Polygon 对象的子对象是 Ring 对象。 组成 Multipoint 对象的子对象是 Point 对象。
组成 MultiPatch 对象的子对象是 TrangleFan TrangleStrip,Triangle 或 Ring 对象。
组成 GeometryBag 对象的是任何类型的几何体对象,实际上 GeometryBag 是一个可以容纳任何类型 几何对象的容器。
IGeometryCollection 这个接口是具有相同类型的几何对象的集合,该接口的的 Geometry 属性可以 通过一个索引值返回一个组成该几何对象的某个子对象,而 GeometryCount 返回组成该几何对象的子对象 的数目。
IGeometryCollection 的 AddGeometry 和 AddGeometries 方法都用于向一个几何对象添加子对象,它 们的区别是前者一次只能添加一个几何对象,而后者可以一次添加一个几何对象数组。除此之外, AddGeometry 方法可以将子对象添加到几何的指定索引值的位置,而 AddGeometries 方法将子对象数组添 加到集合的最后。
在使用 AddGeometry 方法添加子对象到 Polygon 对象的过程中,如果子对象即 Ring 出现覆盖现象, 那么多 边形 就 没有封 闭或 出 现了包 含关 系 ,那么 这个 Polygon 就不 是简单 Polygon ,因 此通 过 IGometryCollection 来创建一个 Polygon 时,需要使用 ITopologicalOperator 的 Simplify 方法保证其有 效性。
IGeometryCollection接口
通过 IGeometryCollection 创建一个 Polygon 对象的代码片段如下:
private IPolygon ConstructorPolygon (List <IRing> pRingList)
{
try
{
IGeometryCollection pGCollection = new PolygonClass ();
object o = Type.Missing;
for (int i = 0; i < pRingList.Count; i++)
{
//通过IGeometryCollection接口的AddGeometry方法向Polygon对象中添加Ring子对象
pGCollection.AddGeometry (pRingList[i], ref o, ref o);
}
//QI至ITopologicalOperator
ITopologicalOperator pTopological = pGCollection as ITopologicalOperator;
//执行Simplify操作 pTopological.Simplify();
IPolygon pPolygon = pGCollection as IPolygon;
//返回Polygon对象 return pPolygon;
} catch (Exception Err)
{
return null;
}
}
private IPolygon MergePolygons (IPolygon firstPolygon, IPolygon SecondPolygon)
{
try
{
//创建一个Polygon对象
IGeometryCollection pGCollection1 = new PolygonClass ();
IGeometryCollection pGCollection2 = firstPolygon as
IGeometryCollection;
IGeometryCollection pGCollection3 = SecondPolygon as IGeometryCollection;
//添加firstPolygon
pGCollection1.AddGeometryCollection(pGCollection2);
//添加SecondPolygon
pGCollection1.AddGeometryCollection(pGCollection3);
//QI至ITopologicalOperator
ITopologicalOperator pTopological = pGCollection1 as ITopologicalOperator;
//执行Simplify操作
pTopological.Simplify();
IPolygon pPolygon = pGCollection1 as IPolygon;
//返回Polygon对象
return pPolygon;
} catch (Exception Err)
{
return null;
}
}
未完待续