簡體   English   中英

產生隨機緯度

[英]Generate random lat lon

我需要它來對一些基於位置的Web服務進行壓力測試。 輸入是定義邊界矩形的4對經/緯度或定義多邊形的一組點。

是否有用於在地圖上生成隨機點的庫/算法? (Python的/ JAVA)

在Java中,您可以使用Math.random()

例如,如果要生成1到10之間的隨機數:

int randomNumGenerated = (int)(Math.Random()*10) + 1;

您可以將其應用於您要輕松解決的問題。

看一下這個問題,該問題涉及在任意4點凸多邊形內生成點。

4面多邊形內的隨機點

這篇關於球體點選取的文章比我能解釋的要好得多,為什么天真的在間隔[0,1)上生成2個隨機數的方法會導致點在球體表面的分布不均。 這可能與OP無關或無關緊要。

但是,OP應該關注的是,在地球表面隨機生成一組4個點可能需要進行一些棘手的編程。 考慮由點(經度/緯度,全部以度為(+5,90),(+5,-90),(-5,-90),(-5,90)定義的“多邊形”的情況。 (0,0)是在該多邊形內部還是在其外部? 那點(0,180)呢? 生成這樣的模棱兩可的多邊形非常容易-球的表面無法通過歐幾里得平面很好地建模。

我會采用完全不同的方法-隨機生成1個點,然后生成經度和緯度偏移。 這將為您在表面上提供一個准矩形的面片,並且您可以調整偏移量的生成以避免模糊的多邊形。 如果要生成非准矩形的多邊形,請生成一系列點和角度,這些點和角度在組合時將定義適合您需要的多邊形。

為什么不將緯度生成為-90至90之間的隨機數,而將經度生成為-180至180之間的另一個隨機數呢?

那你有一點。 然后,您可以生成多邊形所需的任意數量的點。

您可以使用以下方法在ab之間生成一個隨機數:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM