GDAL 获取多边形OGRPolygon的方法
来源:互联网 发布:域名解析软件的作用 编辑:程序博客网 时间:2024/06/06 06:49
GIS是一门很大的学问,就拿怎么在SHP文件中获得一个多边形来说,我看了很多的人的博客都是这样的:
OGRFeature *cityOutsideBuildingPoFeature;while ((cityOutsideBuildingPoFeature = mLayer->GetNextFeature()) != NULL){OGRGeometry *rdPoGeometry = cityOutsideBuildingPoFeature->GetGeometryRef();if (rdPoGeometry != NULL){OGRwkbGeometryType pGeoType = rdPoGeometry->getGeometryType();OGRPolygon *rdPolygon;if (pGeoType == wkbPolygon)//这里就是多边形判断{rdPolygon = (OGRPolygon*)rdPoGeometry->clone();}else if (pGeoType == wkbMultiPolygon) //这里就是带空洞多边形判断{OGRMultiPolygon * multiPolygon = (OGRMultiPolygon *)rdPoGeometry;multiPolygon->closeRings();OGRGeometry *FirstGeometry = NULL;FirstGeometry = multiPolygon->getGeometryRef(0);rdPolygon = (OGRPolygon *)FirstGeometry;}}OGRFeature::DestroyFeature(cityOutsideBuildingPoFeature);}我觉得在获得多边形外轮廓时,感觉有点多余了,最终获得的也只是多个多边形中的第一个多边形而已,这不可能达到需求,那怎么获得整个多边形的多轮廓呢,如下:
OGRFeature *cityOutsideBuildingPoFeature;while ((cityOutsideBuildingPoFeature = _mOCityBuildingLayerOper->mLayer->GetNextFeature()) != NULL){OGRGeometry *rdPoGeometry = cityOutsideBuildingPoFeature->GetGeometryRef();if (rdPoGeometry != NULL){OGRwkbGeometryType pGeoType = rdPoGeometry->getGeometryType();OGRPolygon *rdPolygon;if (pGeoType == wkbPolygon)//这里就是多边形判断{rdPolygon = (OGRPolygon*)rdPoGeometry->clone();}else if (pGeoType == wkbMultiPolygon) //这里就是带空洞多边形判断{OGRMultiPolygon * multiPolygon = (OGRMultiPolygon *)rdPoGeometry;int num = multiPolygon->getNumGeometries();rdPolygon = (OGRPolygon *)multiPolygon->getGeometryRef(0);for (int i = 1; i < num; i++){OGRPolygon *mOGRPolygon = (OGRPolygon *)multiPolygon->getGeometryRef(i);rdPolygon = (OGRPolygon *)rdPolygon->Union(mOGRPolygon);}}}OGRFeature::DestroyFeature(cityOutsideBuildingPoFeature);}由上代码可以看出,我们需要遍历wkbMultiPolygon,然后将所有多边形求并集,这样就可以获取到整个多边形的外轮廓了
阅读全文
0 0
- GDAL 获取多边形OGRPolygon的方法
- 基于GDAL的OGRPolygon网格化
- 获取多边形的重心
- 多边形的代码方法
- MapXtreme多边形有关的方法
- 使用GDAL/OGR读取多边形数据
- GDAL学习记录之复制矢量多边形
- 获取包围对象的多边形 approxPolyDP
- 使用GDAL获取HDF等数据集中的图像
- VS2005编译GDAL方法
- python调用gdal方法
- GDAL库安装方法
- 点在多边形内的检测方法
- 判断点在多边形内的方法
- halcon绘制多边形轮廓的方法
- Window环境下安装GDAL库的方法
- Window环境下安装GDAL库的方法
- Window环境下安装GDAL库的方法
- 汇编逻辑运算指令笔记
- IOS 设置view上的Button触摸冲突
- 物流项目总结
- PS一步改变照片的色彩
- docker 简单应用
- GDAL 获取多边形OGRPolygon的方法
- Junit-断言(Assert)使用方法
- 【linux命令】嵌入式linux截屏命令 gsnap
- 面向对象案例(以面向对象的方式开发简易计算器)
- 【Mybatis从0到1-012】多对多查询(resultMap)
- Spring配置问题
- 关于页面请求返回json数据问题
- springboot中aop(注解切面)应用
- C