ポリゴンのブーストポイントが誤った結果をもたらしますか?

ミハイブジャンカ

私は次のユニットテストを行っていますが、両方のチェックが失敗しています

BOOST_AUTO_TEST_CASE(test_point_in_polygon)
{
    typedef boost::geometry::model::d2::point_xy<double> point_type;
    boost::geometry::model::polygon<point_type> poly;
    boost::geometry::read_wkt("POLYGON((-57.0635 -3.58045, -57.8088 -4.75336, -56.7036 -7.65533, -56.4646 -9.08261, -55.219 -9.42072, -54.6047 -9.54237, -53.868 -9.22164, -52.4139 -8.58345, -49.4691 -6.94159, -49.2295 -6.87687, -47.1079 -6.18013, -45.9159 -5.91411, -43.7897 -5.89581, -42.285 -5.95883, -40.1693 -6.38999, -38.1374 -6.87424, -35.7062 -7.67065, -34.6193 -8.40713, -34.1769 -8.74957, -31.785 -9.31504, -30.574 -9.70903, -26.909 -10.5865, -24.9817 -11.268, -22.6134 -12.2833, -21.0927 -13.3427, -20.006 -13.7029, -16.8407 -15.2466, -13.2203 -16.816, -11.3922 -17.4133, -10.7577 -17.6366, -8.54581 -18.2736, -7.18058 -18.6037, -4.86031 -19.0997, -4.25834 -19.3046, -3.39545 -19.3122, -0.985195 -19.7047, -0.340967 -19.9409, 0.75209 -19.8968, 3.30498 -20.3562, 6.82228 -20.6405, 10.4384 -20.5995, 13.8557 -20.2595, 14.7523 -20.1371, 18.3468 -19.4284, 18.9915 -19.4505, 22.5377 -18.5053, 23.2192 -18.4658, 26.4885 -17.3378, 27.2915 -17.2273, 30.5962 -15.8816, 32.7278 -14.6911, 33.8878 -14.1893, 36.2752 -12.7482, 38.5306 -11.1893, 40.8465 -9.28305, 41.1732 -9.05935, 43.372 -7.07535, 45.2436 -5.2073, 46.9925 -3.21699, 48.616 -1.35438, 50.628 0.592424, 52.158 1.37445, 53.1148 2.07603, 50.9152 5.07491, 50.3177 6.38521, 49.9412 7.3891, 48.8311 9.29466, 47.7653 12.692, 45.6416 16.3693, 43.7106 17.9319, 41.4998 17.9314, 37.4335 19.4761, 34.3477 18.4887, 32.1299 18.0676, 29.2684 18.0666, 26.5269 15.0811, 19.7706 14.5304, 15.8916 12.9664, 14.8124 12.5622, 12.783 10.0368, 12.4488 9.65713, 11.1008 7.47097, 8.9187 5.4486, 5.63935 1.10272, -6.34225 4.45488, -8.60563 7.7494, -16.2454 11.2148, -23.399 18.8388, -25.8497 20.2781, -28.8931 22.7068, -31.4379 22.8942, -32.5636 21.9563, -35.2968 20.2469, -37.3132 19.0133, -37.9703 18.2828, -40.4433 15.553, -40.9543 14.1728, -42.8783 10.3486, -46.3297 7.28714, -48.959 5.88183, -52.1939 2.65934, -54.8196 -0.896786))", poly);

    point_type point (-57.8088, -1.5755);
    BOOST_CHECK_EQUAL(boost::geometry::within(point, poly), false);

    point = point_type(-100, -2);
    BOOST_CHECK_EQUAL(boost::geometry::within(point, poly), false);

}

データは次のようになります。 ここに画像の説明を入力してください

ドキュメント(http://www.boost.org/doc/libs/1_61_0/libs/geometry/doc/html/geometry/reference/algorithms/within/within_2.htmlと同じように使用しています

図のように、両方の点がポリゴンの外側にあることは明らかです。私は何か間違ったことをしていますか、それともブーストのバグを見つけましたか?

llonesmiz

この問題は、使用するポリゴンタイプと、提供するポリゴンデータの不一致が原因で発生します。を使用boost::geometry::model::polygon<point_type>してpoint_type、ポイントタイプとして時計回りの方向を持ち、閉じているポリゴンや、デフォルトのテンプレートパラメータで構成されているその他のいくつかのポリゴンを作成します。あなたが提供するデータでは、最初のポイントは最後のポイントと等しくありません(これはclosedこの文脈での定義です)。あなたは、どちらかのことができます(あなたのポリゴンが閉じられない作るpolygon<point_type,true,false>か、あなたの最初と最後の点は、(最後の最初のポイントをコピーして)同じであることを確認してください

編集:別の(おそらくより良い)アプローチはboost::geometry::correct(poly);、この(非常に興味深い)回答に示されているように、他に何も変更する必要なしに使用することです

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Ruby-ステートメント内の誤った改行はまだ結果をもたらしますか?

分類Dev

C#のJsonデシリアライザーがJsonリクエストレスポンスから誤った値を返しています

分類Dev

Netbeansでの誤ったインポートを防止します

分類Dev

タイムスタンプは誤った結果をもたらします

分類Dev

リンクリストから最初のノードを削除した後の誤った結果

分類Dev

ポッドのインストールは、間違った仕様のリポジトリからポッドをインストールします

分類Dev

メインレポートクエリに複数の結果セットがあり、パラメータとしてサブレポート入力がPDFを生成できなかった場合はどうなりますか?

分類Dev

特定のポリゴン内にあるポイントに基づいてポリゴンテーブルをポイントテーブルに結合するときにエラーが発生しました

分類Dev

ネストされたSpatialPolygonsDataFrameから親ポリゴンを抽出するか、親ポリゴンから「ディゾルブ」ホールを作成します

分類Dev

ブーストジオメトリによってポリゴン(リング)からポリゴン(リング)の一部を切り取ります

分類Dev

uniq --countコマンドは誤った結果をもたらしますか?

分類Dev

uniq --countコマンドは誤った結果をもたらしますか?

分類Dev

このSzudzikエレガントペアリングが誤った結果をもたらすのはなぜですか?

分類Dev

st_distance( '北極からのポリゴン'、 'イタリアのポイント')が結果として '0'を返すのはなぜですか?

分類Dev

USBシリアルポートプログラミングは「悲惨な」結果をもたらします

分類Dev

GDB pythonインターフェースでwxのインポートに失敗しました、R6034:アプリケーションがCランタイムライブラリを誤ってロードしようとしました

分類Dev

ubuntuリポジトリからリポジトリからではなかったパッケージを再インストールします

分類Dev

ubuntuリポジトリからリポジトリからではなかったパッケージを再インストールします

分類Dev

このポストインクリメントステートメントは、未定義の動作をもたらしますか?

分類Dev

ポイントが2Dポリゴンの内側にあるかどうかを検出するためのベストプラクティス(ポリゴンの頂点はテーブル上にあります)

分類Dev

誤って2つのバージョンのswi-prologをインストールしました。修正するにはサポートが必要です。

分類Dev

誤って2つのバージョンのswi-prologをインストールしました。修正するにはサポートが必要です。

分類Dev

非同期関数からの結果を別のjsファイルにエクスポートし、結果を別のJavaScriptにインポートします

分類Dev

eslintの誤ったインポートが原因で、Herokuアプリがクラッシュしました

分類Dev

if elseステートメントが誤った結果を返すのはなぜですか?

分類Dev

動的に作成されたコンポーネントからのイベントをリッスンします

分類Dev

memcpyのポインタ演算は奇妙な結果をもたらします

分類Dev

K-MeansアルゴリズムがクラスタリングCを更新して、Cに少なくとも1つのポイントがあったとしても、1つのクラスターが空になることを示しますか?

分類Dev

ポリゴンのバッファリングにブーストジオメトリを使用した場合の結果が悪い、または正しくない

Related 関連記事

  1. 1

    Ruby-ステートメント内の誤った改行はまだ結果をもたらしますか?

  2. 2

    C#のJsonデシリアライザーがJsonリクエストレスポンスから誤った値を返しています

  3. 3

    Netbeansでの誤ったインポートを防止します

  4. 4

    タイムスタンプは誤った結果をもたらします

  5. 5

    リンクリストから最初のノードを削除した後の誤った結果

  6. 6

    ポッドのインストールは、間違った仕様のリポジトリからポッドをインストールします

  7. 7

    メインレポートクエリに複数の結果セットがあり、パラメータとしてサブレポート入力がPDFを生成できなかった場合はどうなりますか?

  8. 8

    特定のポリゴン内にあるポイントに基づいてポリゴンテーブルをポイントテーブルに結合するときにエラーが発生しました

  9. 9

    ネストされたSpatialPolygonsDataFrameから親ポリゴンを抽出するか、親ポリゴンから「ディゾルブ」ホールを作成します

  10. 10

    ブーストジオメトリによってポリゴン(リング)からポリゴン(リング)の一部を切り取ります

  11. 11

    uniq --countコマンドは誤った結果をもたらしますか?

  12. 12

    uniq --countコマンドは誤った結果をもたらしますか?

  13. 13

    このSzudzikエレガントペアリングが誤った結果をもたらすのはなぜですか?

  14. 14

    st_distance( '北極からのポリゴン'、 'イタリアのポイント')が結果として '0'を返すのはなぜですか?

  15. 15

    USBシリアルポートプログラミングは「悲惨な」結果をもたらします

  16. 16

    GDB pythonインターフェースでwxのインポートに失敗しました、R6034:アプリケーションがCランタイムライブラリを誤ってロードしようとしました

  17. 17

    ubuntuリポジトリからリポジトリからではなかったパッケージを再インストールします

  18. 18

    ubuntuリポジトリからリポジトリからではなかったパッケージを再インストールします

  19. 19

    このポストインクリメントステートメントは、未定義の動作をもたらしますか?

  20. 20

    ポイントが2Dポリゴンの内側にあるかどうかを検出するためのベストプラクティス(ポリゴンの頂点はテーブル上にあります)

  21. 21

    誤って2つのバージョンのswi-prologをインストールしました。修正するにはサポートが必要です。

  22. 22

    誤って2つのバージョンのswi-prologをインストールしました。修正するにはサポートが必要です。

  23. 23

    非同期関数からの結果を別のjsファイルにエクスポートし、結果を別のJavaScriptにインポートします

  24. 24

    eslintの誤ったインポートが原因で、Herokuアプリがクラッシュしました

  25. 25

    if elseステートメントが誤った結果を返すのはなぜですか?

  26. 26

    動的に作成されたコンポーネントからのイベントをリッスンします

  27. 27

    memcpyのポインタ演算は奇妙な結果をもたらします

  28. 28

    K-MeansアルゴリズムがクラスタリングCを更新して、Cに少なくとも1つのポイントがあったとしても、1つのクラスターが空になることを示しますか?

  29. 29

    ポリゴンのバッファリングにブーストジオメトリを使用した場合の結果が悪い、または正しくない

ホットタグ

アーカイブ