应用缓冲区方法进行多边形Union
有时候我们需要将多个相邻的多边形合并成一个多边形,常规用法是使用union方法,将其合并,当待合并的多边形个数较多时,效率就会非常的低,这里我们可以使用计算缓冲区的方法进行处理,效率会提升很多。
待合并多边形
合并结果图
代码:
//蓝色多边形 char* szWKT_1 = "POLYGON ((113.885 22.6815, 113.9425 22.6585, 113.91 22.7, 113.885 22.6815))"; //橙色多边形 char* szWKT_2 = "POLYGON ((113.91 22.7, 113.9425 22.6585, 113.9675 22.689, 113.91 22.7))"; OGRGeometry* pGeom_1 = NULL; OGRGeometry* pGeom_2 = NULL; OGRGeometryFactory::createFromWkt(&szWKT_1, NULL, &pGeom_1); OGRGeometryFactory::createFromWkt(&szWKT_2, NULL, &pGeom_2); OGRMultiPolygon* pMultiPolygon = (OGRMultiPolygon*)OGRGeometryFactory::createGeometry(wkbMultiPolygon); pMultiPolygon->addGeometryDirectly(pGeom_1); pMultiPolygon->addGeometryDirectly(pGeom_2); //用Buffer替代Union,缓冲距离设置为0 //pUnion为紫色多边形 OGRGeometry* pUnion = pMultiPolygon->Buffer(0);