[英]Generate random lat lon
我需要它來對一些基於位置的Web服務進行壓力測試。 輸入是定義邊界矩形的4對經/緯度或定義多邊形的一組點。
是否有用於在地圖上生成隨機點的庫/算法? (Python的/ JAVA)
在Java中,您可以使用Math.random()
例如,如果要生成1到10之間的隨機數:
int randomNumGenerated = (int)(Math.Random()*10) + 1;
您可以將其應用於您要輕松解決的問題。
看一下這個問題,該問題涉及在任意4點凸多邊形內生成點。
這篇關於球體點選取的文章比我能解釋的要好得多,為什么天真的在間隔[0,1)上生成2個隨機數的方法會導致點在球體表面的分布不均。 這可能與OP無關或無關緊要。
但是,OP應該關注的是,在地球表面隨機生成一組4個點可能需要進行一些棘手的編程。 考慮由點(經度/緯度,全部以度為(+5,90),(+5,-90),(-5,-90),(-5,90)
定義的“多邊形”的情況。 點(0,0)
是在該多邊形內部還是在其外部? 那點(0,180)
呢? 生成這樣的模棱兩可的多邊形非常容易-球的表面無法通過歐幾里得平面很好地建模。
我會采用完全不同的方法-隨機生成1個點,然后生成經度和緯度偏移。 這將為您在表面上提供一個准矩形的面片,並且您可以調整偏移量的生成以避免模糊的多邊形。 如果要生成非准矩形的多邊形,請生成一系列點和角度,這些點和角度在組合時將定義適合您需要的多邊形。
為什么不將緯度生成為-90至90之間的隨機數,而將經度生成為-180至180之間的另一個隨機數呢?
那你有一點。 然后,您可以生成多邊形所需的任意數量的點。
您可以使用以下方法在a
和b
之間生成一個隨機數:
rnum = a + rnd() * (b-a); // where rnd() gives a number from 0 to 1
簡單:在地圖的邊界矩形內,為每個點生成兩個隨機數,一個用於緯度,一個用於經度。
雙經度= 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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.