私は GEOS ライブラリを使用してPolygon
おり、穴のある を作成しようとしています。ドキュメントに従って、LinearRing
外側の「シェル」を表す a とstd::vector<Geometry*>
、シェルの穴を表すa を渡す必要があります。最初のパラメータは簡単ですが、2 番目のパラメータが問題です。Polygon
は、2 番目のパラメーターの要素をLineString
s にする必要があります (LineString
は のサブクラスですGeometry
)。LineString
それ以外の場合、穴には s が必要であるという例外がスローされます。LineString
s をにキャストするGeometry
と、例外がスローされます。キャストしないと、ある型のポインターを別の型のポインターにキャストできないというコンパイル エラーが発生します。ここで何をすべきかわかりません。
エラーを示す短いコード サンプルを次に示します。
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);
助言がありますか?