美文网首页
OGRMultiPolygon使用begin()接口出错

OGRMultiPolygon使用begin()接口出错

作者: NullUser | 来源:发表于2022-10-27 14:13 被阅读0次

    根据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()接口出错

          本文链接:https://www.haomeiwen.com/subject/mifftdtx.html