您的位置:首页 > 编程语言 > C语言/C++

C++ ArcGis 遍历polygon 的每个点。

2016-03-09 15:39 453 查看
C++ ArcGis 遍历polygon 的每个点。

代码实现:

IPolygon4Ptr ipPolygon(ipGeom);

IGeometryBagPtr exteriorRingGeometryBag = ipPolygon->GetExteriorRingBag();

IGeometryCollectionPtr exteriorRingGeometryCollection(exteriorRingGeometryBag);

// 取几何图形的个数

long lRegionCount = exteriorRingGeometryCollection->GetGeometryCount();

for (int i = 0; i < lRegionCount; i++)

{

IGeometryPtr exteriorRingGeometry = exteriorRingGeometryCollection->GetGeometry( i );

// 取外环的点

IPointCollectionPtr exteriorRingPointCollection( exteriorRingGeometry );

long lPointCount = exteriorRingPointCollection->GetPointCount();

for( int j = 0; j < lPointCount; j++ )

{

IPointPtr ipPoint = exteriorRingPointCollection->GetPoint( j );

}

// 取内环的点

IRingPtr ipRing( exteriorRingGeometry );

IGeometryBagPtr interiorRingGeometryBag = ipPolygon->GetInteriorRingBag( ipRing );

IGeometryCollectionPtr interiorRingGeometryCollection = ( IGeometryCollectionPtr )interiorRingGeometryBag;

long lInteriorCount = interiorRingGeometryCollection->GetGeometryCount();

for (int k = 0; k < lInteriorCount; k++)

{

IGeometryPtr interiorRingGeometry = interiorRingGeometryCollection->GetGeometry(k);

IPointCollectionPtr interiorRingPointCollection( interiorRingGeometry);

long lInteriorPointCount = interiorRingPointCollection->GetPointCount();

for (int m = 0; m < lInteriorPointCount; m++)

{

IPointPtr ipPoint = interiorRingPointCollection->GetPoint(m);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: