мне нужно пересечь 2 OGRGeometry. В моем коде я определяю OGRPolygon, который будет пересекаться с другими OGRGeometry.
Это мой ОГРПолигон:
OGRLinearRing ring;
OGRPolygon poly;
ring.addPoint(-300, 300);
ring.addPoint(300, 300);
ring.addPoint(-300, -300);
ring.addPoint(300, -300);
ring.closeRings();
poly.addRing(&ring);
И это код пересечения:
for (int i = 0; i < geo5.size(); i++)
{
qDebug() << geo5[i]->Intersect(&poly);
if (geo5[i]->Intersect(&poly)) {
qDebug() << "El tipo es "<< geo5[i]->Intersection(&poly);
OGRGeometry* newGeo = geo5[i]->Intersection(&poly);
}
}
newGeo всегда равно нулю, и компилятор выдает это:
Исключение, выброшенное в 0x00007FFE11593FB8 в ShapeViewer.exe:
Microsoft C ++ исключение: geos :: util :: TopologyException в памяти
местоположение 0x000000370A0FE5C0.
Может ли кто-нибудь помочь мне с этой проблемой, пожалуйста? Спасибо всем!
Определение кольца неверно
-300,300 [1] 300,300 [2]-300,-300 [3] 300,-300 [4]
есть точка пересечения между линией [2,3] и [4,1] после соединения [1] с [4] точками. Вы должны добавить [4] пункт перед добавлением [3].
Других решений пока нет …