Hi, I found that the I use intersects the result shows that the first coordinates is not used.Here is a sample that I did using two same geometries that shows the issue.I tested similar code in Java using JTS and I don't have this issue.
// SIMPLE SIMULATION OF THE PROBLEM USING INTERSECTION using GEOS 3.9.1 geos::geom::GeometryFactory::Ptr Factory= geos::geom::GeometryFactory::create(); geos::geom::CoordinateSequence::Ptr coord_seq = Factory->getCoordinateSequenceFactory()->create((size_t)5, (size_t)0); coord_seq->setAt(geos::geom::Coordinate(-180, 85.0), 0); coord_seq->setAt(geos::geom::Coordinate(180, 85.0), 1); coord_seq->setAt(geos::geom::Coordinate(180, -85.0), 2); coord_seq->setAt(geos::geom::Coordinate(-180, -85.0), 3); coord_seq->setAt(geos::geom::Coordinate(-180, 85.0), 4); geos::geom::LinearRing * shell_test = Factory->createLinearRing(coord_seq.release()); geos::geom::Geometry::Ptr geom = std::unique_ptr<geos::geom::Geometry>(Factory->createPolygon(shell_test, NULL)); const geos::geom::Geometry::Ptr other = geom->clone(); for (size_t i = 0; i<geom->getNumPoints(); i++) printf( "geom %d [x=%f,y=%f]\n", i+1, geom->getCoordinates()->getX(i), geom->getCoordinates()->getY(i)); if (geom->intersects(other.get())) { std::cout << "GEOMETRIES INTERSECTS !!!!!"<< std::endl; const geos::geom::Geometry::Ptr geom_intersected = geom->intersection(other.get()); for (size_t i = 0; i<geom_intersected->getNumPoints(); i++) printf( "geom_intersected %d [x=%f,y=%f]\n", i+1, geom_intersected->getCoordinates()->getX(i), geom_intersected->getCoordinates()->getY(i)); if (geom->compareTo(geom_intersected.get())) std::cout << "GEOMETRIES AFTER INTERSECTION ARE NOT THE SAME !!!!!"<< std::endl; } /* geom 1 [x=-150.000000,y=22.000000] geom 2 [x=150.000000,y=22.000000] geom 3 [x=150.000000,y=-22.000000] geom 4 [x=-150.000000,y=-22.000000] geom 5 [x=-150.000000,y=22.000000] // it should start with -150 geom_intersected 1 [x=150.000000,y=22.000000] geom_intersected 2 [x=150.000000,y=-22.000000] geom_intersected 3 [x=-150.000000,y=-22.000000] geom_intersected 4 [x=-150.000000,y=22.000000] geom_intersected 5 [x=150.000000,y=22.000000] */ Thanks
_______________________________________________ geos-devel mailing list geos-devel@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/geos-devel