OGRMultiPolygon使用begin()接口出错

根据GDAL接口文档中对OGRMultiPolygond::begin的描述,其返回迭代器的开始,故认为可以通过该迭代器遍历到所有的Polygon。

OGRMultiPolygon::begin()

于是使用以下代码遍历Polygon,并获取该polygon的外环。运行中程序报错闪退。

                OGRPolygon **papoPolygon = multiPolygon->begin();
                while (*papoPolygon)
                {
                    OGRPolygon* polygon = *papoPolygon;
                    polygon->getExteriorRing();
                    papoPolygon++;
                }

继续查看接口后,发现父类有接口getNumGeometries(),于是换种方法遍历Polygon获取外环,程序正常运行。

                for (int i = 0; i < multiPolygon->getNumGeometries(); i++)
                {
                    OGRPolygon* polygon = (OGRPolygon*)(multiPolygon->getGeometryRef(i));
                    polygon->getExteriorRing();
                }

继续往父类查看对begin()接口的描述,其返回sub-geometry的迭代器,这个sub-geometry如何理解?


OGRGeometryCollection::begin()

你可能感兴趣的:(OGRMultiPolygon使用begin()接口出错)