OGRMultiPolygon使用begin()接口出错

2022-10-27  本文已影响0人  NullUser

根据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()
上一篇下一篇

猜你喜欢

热点阅读