使用OGR判断像素中心是否在多边形内时出错

Error using OGR to figure out if a pixel center is inside a polygon

本文关键字:多边形 出错 是否 OGR 判断 像素 使用      更新时间:2023-10-16

我正在尝试开发(使用c++ - MSVS 12.0)一个函数,该函数发现哪些像素(来自光栅图像)在多边形(以前使用shapefile填充)内具有其中心。我使用GDAL 1.11.0(刚刚安装,使用devinstall)从源代码构建,并使用选项INCLUDE_OGR_FRMTS=YES。我可以毫无问题地使用GDAL和大多数OGR函数。但是,当我使用以下代码时:

if (polygon->Contains(tmpPoint))

我收到错误信息: error 6: GEOS support not enabled

有人知道怎么解决这个问题吗?

我用:

#include "ogrsf_frmts.h"

和我的函数声明:

void FindPixels(GDALDataset *image, OGRLayer *poLayer, OGRPolygon *polygon)

我的部分代码是:

OGRPoint *tmpPoint = NULL

OGRSpatialReference *spatialReference = NULL;

spatialReference = polygon->getSpatialReference();

tmpPoint = new OGRPoint();

tmpPoint->assignSpatialReference(spatialReference);

循环开始:

tmpPoint->setX(imgTLX + (j * imgRes) + imgResHalf);

tmpPoint->setY(imgTLY - (i * imgRes) - imgResHalf);

if (polygon->Contains(tmpPoint))

提前感谢!

MB

使用GDALRasterizeLayers将多边形图像刻录到栅格上。这样你就可以找到所有的像素落入多边形,或者不落入多边形。默认值是只在中心与多边形相交时烧掉像素。

如果源层有多个多边形,您可能需要通过设置属性过滤器或使用烧掉的属性ID字段来区分它们(尽管如果多边形重叠,这将不起作用)