Я пытаюсь разработать (используя C ++ — MSVS 12.0) функцию, которая определяет, какие пиксели (из растрового изображения) имеют центр внутри многоугольника (ранее заполненного с помощью шейп-файла). Я использую GDAL 1.11.0 (только что установил, используя devinstall) для сборки из исходного кода и использую опцию INCLUDE_OGR_FRMTS = YES. Я могу использовать GDAL и большинство функций OGR без проблем. Тем не менее, когда я использую следующий код:
if (polygon->Contains(tmpPoint))
Я получаю сообщение об ошибке: ОШИБКА 6: Поддержка GEOS не включена
Кто-нибудь знает, как решить эту проблему?
Я использую:
#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))
Заранее спасибо!
мегабайт
использование GDALRasterizeLayers записать изображение многоугольника на растр. Таким образом, вы найдете все пиксели, которые попадают в многоугольник, или нет. По умолчанию прожиг пикселя происходит только в том случае, если центр пересекает многоугольник.
Если исходный слой имеет несколько полигонов, вам может потребоваться различить их, установив фильтр атрибутов или используя поля идентификатора сгоревшего атрибута (хотя это не будет работать, если полигоны перекрываются).