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);
}
}
}