GIS中複雜多邊形的處理(例如孤島、空心多邊形)

對於ArcGIS中的複雜多邊形處理起來有時候比較棘手,我們可以使用IPolygon4接口,遍歷IPolygon當中多有的外環和內環

下面給出代碼示例:

 public  void PolygonToRing(IPolygon4 polygon)
        {
            IGeometryBag exteriorRingGeometryBag = polygon.ExteriorRingBag;
            IGeometryCollection exteriorRingGeometryCollection = exteriorRingGeometryBag as IGeometryCollection;
            for (int i = 0; i < exteriorRingGeometryCollection.GeometryCount; i++)
            {
                List<IPoint> PointResult = new List<IPoint>();
                IGeometry exteriorRingGeometry = exteriorRingGeometryCollection.get_Geometry(i);
                IPointCollection exteriorRingPointCollection = exteriorRingGeometry as IPointCollection;
                ReadPoints(exteriorRingPointCollection,PointResult);
                CreateJson(PointResult);


                IGeometryBag interiorRingGeometryBag = polygon.get_InteriorRingBag(exteriorRingGeometry as IRing);
                IGeometryCollection interiorRingGeometryCollection = interiorRingGeometryBag as IGeometryCollection;
                for (int k = 0; k < interiorRingGeometryCollection.GeometryCount;k++ )
                {
                    IGeometry interiorRingGeometry = interiorRingGeometryCollection.get_Geometry(k);
                    IPointCollection interiorRingPointCollection = interiorRingGeometry as IPointCollection;
                    ReadPoints(interiorRingPointCollection, PointResult);
                    CreateJson(PointResult);
                }
            }
        }

        /// <summary>
        /// 獲取結果多邊形節點座標
        /// </summary>
        /// <param name="ptCol"節>點集合</param>
        private void ReadPoints(IPointCollection ptCol, List<IPoint> PointResult)
        {
            IPoint pnt;
            for (int i = 0; i < ptCol.PointCount; i++)
            {
                pnt = ptCol.get_Point(i);
                PointResult.Add(pnt);
            }
        }
ARCGIS複雜多邊形基礎知識講解
http://www.cnblogs.com/willwayer/archive/2010/09/13/1824721.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章