1

i need intersect 2 OGRGeometry. In my code, i'm defining a OGRPolygon that will be intersected with other OGRGeometry.

This my 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);

And this is the Intersection code:

 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 always is null, and compiler throw this:

Exception thrown at 0x00007FFE11593FB8 in ShapeViewer.exe: Microsoft C++ exception: geos::util::TopologyException at memory location 0x000000370A0FE5C0.

Could some one help me with this problem please? Thanks all!

Zharios
  • 183
  • 1
  • 18

1 Answers1

3

Definition of ring is invalid

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


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

there is intersection point between line [2,3] and [4,1] after connecting [1] with [4] points. You should add [4] point before adding [3].

rafix07
  • 20,001
  • 3
  • 20
  • 33