OGRGeometry交点

问题描述 投票:0回答:1

我需要交叉2 OGRGeometry。在我的代码中,我正在定义一个与其他OGRGeometry交叉的OGRPolygon。

这是我的OGRPolygon:

    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总是为null,编译器抛出这个:

ShapeViewer.exe中的0x00007FFE11593FB8抛出异常:Microsoft C ++异常:geos :: util :: TopologyException在内存位置0x000000370A0FE5C0。

有人可以帮我解决这个问题吗?谢谢大家!

c++ ogr
1个回答
1
投票

戒指的定义无效

-300,300 [1]    300,300 [2]


-300,-300 [3]   300,-300 [4]

将[1]与[4]点连接后,[2,3]和[4,1]之间存在交点。你应该在添加[3]之前添加[4]点。

© www.soinside.com 2019 - 2024. All rights reserved.