ポリゴンで自己交差を見つける必要があります。 私はブーストがその能力を持っていることを知っています。 しかし、交差点に関する情報を得るためにturn_infoを使用する方法を理解できません。セグメントがどのように交差しているかのように。 誰でも助けることができますか? ありがとうブースト/ポリゴンを使用してポリゴン内の自己交差を見つける方法
0
A
答えて
1
Boost Geometryで定義された概念は自己交差を許可しないため、正しくはできません。 (私は1.59だと思うので、新しい)
ただし、間接的にあなたがして、自己交差点に関するいくつかの情報を取得するために、検証機能を使用することができます。
std::string reason;
poly p;
bg::read_wkt("POLYGON((0 0, 0 4, 2 4, 2 2, 6 2, 6 6, 2 6, 2 4, 0 4, 0 8, 8 8, 8 0, 0 0))", expected);
bool ok = bg::is_valid(p, reason);
std::cout << "Expected: " << bg::dsv(p) << (ok?" valid":" invalid: '" + reason + "'") << "\n";
プリント:期待
:(((0 (0,4)、(2,4)、(2,2)、(6,2)、(6,6)、(2,6)、(2,4)、(0,4) )、(0,8)、(8,8)、(8,0)、(0、0)))無効: 'ジオメトリに無効な自己交差があります。自己交差点は(0、4)にあった。メソッド:t;操作:x/u;セグメントID {source、multi、ring、segment}:{0、-1、-1、0}/{0、-1、-1、7} '
1
これは自己交差点。情報を取得するための
namespace bg = boost::geometry;
using namespace std;
typedef bg::model::d2::point_xy<double> point_2d;
typedef bg::model::polygon<boost::geometry::model::d2::point_xy<double> > Polygon;
Polygon poly { { { 10, 10 }, { 20, 10 }, { 20, 5 }, { 25, 5 }, { 25, 7 }, { 30, 7 }, { 30, 3 }, { 25, 3 }, { 25, 5 }, { 20, 5 }, { 20, 0 }, { 10, 0 }, { 10, 10 } }};
typedef bg::point_type<Polygon>::type point_type;
typedef boost::geometry::detail::overlay::turn_info<point_type, boost::geometry::segment_ratio<double> > TurnInfoType;
bg::detail::no_rescale_policy robust_policy;
bg::detail::self_get_turn_points::no_interrupt_policy interrupt_policy;
std::vector<TurnInfoType> turns;
boost::geometry::self_turns<boost::geometry::detail::overlay::assign_null_policy>(poly.outer(), robust_policy, turns, interrupt_policy);
だけのようなものを使用します。私は突然、私は[:ブースト・ジオメトリタグ]を想定し実現
turns[i].operations[0].seg_id.segment_index
関連する問題
- 1. 自己交差ポリゴンを非自己交差ポリゴンに分割する
- 2. JSTSライブラリを使用してリーフレットポリゴンで自己交差を見つける
- 3. turf.js OpenLayers3からの自己交差ポリゴンの交差エラーDraw
- 4. 自己交差を使ってポリゴンを修復する方法は?
- 5. 交差ボックスから実線のポリゴンを見つけるアルゴリズム?
- 6. ポリゴンの自己交差のテストの数値精度
- 7. Rubyを使用してポリゴン内の座標を見つける
- 8. Javaで自己交差するポリゴンの面積を求めたい
- 9. Java:ポリゴンBと交差していないポリゴンAの領域を見つける
- 10. 自己交差ポリゴンを分割すると、多角形が返されます。
- 11. 交差点とETAを見つける
- 12. elasticsearchアグリゲーションを使用してバケットのユニオンまたは交差を見つける
- 13. DataTableのリスト内で交差するDataRowを見つける
- 14. 2つの光線の法線の交差を見つける
- 15. ポリゴンに自己交差があるかどうかを検出する方法は?
- 16. Turf.jsポリゴン、マルチポリゴン、ジオメトリコレクションを持つ交差バッファ
- 17. 入れ子になって交差していないポリゴン間の領域を見つけて表現する
- 18. C#ポリラインは自己交差です
- 19. ビットマップイメージ内のポリゴンを見つける
- 20. ポイントを交差するすべてのジオメトリを見つける
- 21. C#を使ってポリゴンの内側軸を見つける
- 22. ラインセグメントと交差するすべてのタイルを見つける
- 23. 4つのファイルの交差を見つける
- 24. ソースマップを使用して縮小誤差を見つける方法
- 25. GoogleマップAPI v3を使用してポリゴンとポリラインを交差させる
- 26. boost :: geometry :: union_は自己交差を生成します
- 27. Path2Dが自己交差するかどうかを調べる
- 28. 行が平行か、一致しているか、交差しているかを調べます。交差する場合、交差点を見つける
- 29. ブーストライブラリを使用して交点を見つける
- 30. 線の交点矩形 - 交点を見つける方法?
を。私は[tag:boost-polygon]に精通しているわけではないので、それが文脈であれば、私の答えは正確ではないかもしれません。 – sehe
こんにちは、response.iのおかげで、ポリゴン内の自己交差点を見つけることができます。私はそれを行うコードを見ています。私はちょっと覚えていない。私はturn_infoの使用があったと思う。しかし、私はそこに迷っています。 turn_infoを取得する方法を知っていれば、多分助けになるかもしれません。 –
私はBoost Geometryのメーリングリストの投稿を実際に見つけました。皮肉なことにAdam Wulkiewiczは、「私は他のメールであなたがすでにそれを理解しているのを見ました」と言っています。私は本当にここに、ここでは自己回答でさえ、いくつかのリンクを張るべき時だと思っています。それは本当に実用的なQ&Aです。そうであるように、あなたは意識的に、あなたがすでに物事を考え出した後、時間を無駄にしている人々を回転させる人々を意識的に危険にさらしています。 – sehe