GEOS 라이브러리를 사용하고 있는데 구멍이있는 Polygon
을 만들려고합니다. documentation에 따르면, 외부 "쉘"을 나타내는 LinearRing
과 쉘의 구멍을 나타내는 std::vector<Geometry*>
을 전달해야합니다. 첫 번째 매개 변수는 쉽지만 두 번째 매개 변수는 문제가됩니다. Polygon
은 두 번째 매개 변수의 요소가 LineString
s (LineString
은 Geometry
의 하위 클래스 임)가되도록합니다. 그렇지 않으면 구멍에 LineString
이 필요하다는 예외가 발생합니다. 방금 LineString
을 Geometry
으로 전송하면 예외가 발생합니다. 만약 내가 그것을 캐스팅하지 않으면 컴파일 에러가 발생한다. 한 타입의 포인터는 다른 타입의 포인터로 캐스트 될 수 없다. 나는 여기서 무엇을해야 할지를 알 수 없다.구멍이있는 다각형을 만드는 방법 GEOS 라이브러리
geos::geom::CoordinateSequence* temp = factory->getCoordinateSequenceFactory()->create((std::size_t) 0, 0);
temp->add(geos::geom::Coordinate(0, 0));
temp->add(geos::geom::Coordinate(100, 0));
temp->add(geos::geom::Coordinate(100, 100));
temp->add(geos::geom::Coordinate(0, 100));
temp->add(geos::geom::Coordinate(0, 0));
geos::geom::LinearRing *shell=factory->createLinearRing(temp);
temp = factory->getCoordinateSequenceFactory()->create((std::size_t) 0, 0);
temp->add(geos::geom::Coordinate(1, 1));
temp->add(geos::geom::Coordinate(10, 1));
temp->add(geos::geom::Coordinate(10, 10));
temp->add(geos::geom::Coordinate(1, 10));
temp->add(geos::geom::Coordinate(1, 1));
geos::geom::LinearRing *hole=factory->createLinearRing(temp);
holes->push_back((geos::geom::Geometry*) hole);
factory->createPolygon(shell,holes);
어떤 제안 :
다음 오류를 보여 간단한 코드 샘플입니까?