位置情報ベースのWebサービスのストレステストに必要です。入力は、境界矩形を定義する4組のlat / lon、またはポリゴンを定義するポイントのセットです。
マップ上にランダムなポイントを生成するためのライブラリ/アルゴリズムはありますか?(Python / java)
位置情報ベースのWebサービスのストレステストに必要です。入力は、境界矩形を定義する4組のlat / lon、またはポリゴンを定義するポイントのセットです。
マップ上にランダムなポイントを生成するためのライブラリ/アルゴリズムはありますか?(Python / java)
Javaでは、Math.random()を使用できます
たとえば、1〜10の乱数を生成する場合:
int randomNumGenerated = (int)(Math.Random()*10) + 1;
これは、解決しようとしている問題に簡単に適用できます。
球のポイントピッキングに関するこの記事では、区間[0,1)で2つの乱数を生成するという単純なアプローチが、球の表面全体でのポイントの分散が不十分になる理由を、私が説明するよりもはるかによく説明しています。それはOPの懸念であるかもしれませんし、そうでないかもしれません。
ただし、地球の表面に4つのポイントのセットをランダムに生成するには、トリッキーなプログラミングが必要になる可能性があることをOPが懸念する必要があります。ポイント(緯度/経度、すべて度単位)で定義される「ポリゴン」の場合を考えてみ(+5,90),(+5,-90),(-5,-90),(-5,90)
ます。ポイント(0,0)
はこのポリゴンの内側にありますか、それとも外側にありますか?ポイントは(0,180)
どうですか?このようなあいまいなポリゴンを生成するのは非常に簡単です。球の表面は、ユークリッド平面によって適切にモデル化されていません。
私は完全に異なるアプローチを取ります-ランダムに1ポイントを生成し、次に緯度と経度のオフセットを生成します。これにより、サーフェスに準長方形のパッチが提供され、オフセットの生成を調整して、あいまいなポリゴンを回避できます。準長方形ではないポリゴンを生成する場合は、一連のポイントと角度を生成します。これらを組み合わせると、ニーズに合ったポリゴンが定義されます。
任意の4点凸多角形内に点を生成することを扱うこの質問を見てください。
緯度を-90〜90の乱数として生成し、経度を-180〜180の別の乱数として生成しないのはなぜですか?
次に、ポイントがあります。その後、Yoは、ポリゴンを作成するために必要な数のポイントを生成できます。
次のようなものの間で、とa
の間で乱数を生成できます。b
rnum = a + rnd() * (b-a); // where rnd() gives a number from 0 to 1
シンプル:各ポイントについて、マップの外接する長方形の内側に、緯度用と経度用の2つの乱数を生成します。
二重経度=Math.random()* Math.PI * 2;
または使用する
public static LatLng random(Random r) {
return new LatLng((r.nextDouble() * -180.0) + 90.0,
(r.nextDouble() * -360.0) + 180.0);
}