OGRMultiPolygon使用begin()接口出错
2022-10-27 本文已影响0人
NullUser
根据GDAL接口文档中对OGRMultiPolygond::begin
的描述,其返回迭代器的开始,故认为可以通过该迭代器遍历到所有的Polygon。
于是使用以下代码遍历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()