我有兩個GPS位置。對於每個我創建一個不同範圍的邊界框。 每個邊界框都有最小/最大緯度和最小/最大經度。檢測兩個GPS座標邊界框重疊
需要實現一種方法來檢測這兩個框是否重疊(不要介意重疊範圍..只有真/假)。此外,這種方法將被集成在一個長循環中,所以我正在尋找最有效的方法來做到這一點。
注意:當說重疊時,我的意思是 - 「地圖上至少有一個包含在兩個邊界框中的單個點」。
任何想法?
我有兩個GPS位置。對於每個我創建一個不同範圍的邊界框。 每個邊界框都有最小/最大緯度和最小/最大經度。檢測兩個GPS座標邊界框重疊
需要實現一種方法來檢測這兩個框是否重疊(不要介意重疊範圍..只有真/假)。此外,這種方法將被集成在一個長循環中,所以我正在尋找最有效的方法來做到這一點。
注意:當說重疊時,我的意思是 - 「地圖上至少有一個包含在兩個邊界框中的單個點」。
任何想法?
檢查一個矩形的其中一個角是否在另一個矩形內就足夠了。這是這兩個抱真:
這個檢查應該沒有時間去做,所以效率不是問題。而且,參數的順序是不相關的。
我面臨同樣的問題,以前的解決方案是不夠的。
被覆蓋和未覆蓋
此圖片顯示的情況下,我發現這個網頁,給應對這一問題的正確方法:https://rbrundritt.wordpress.com/2009/10/03/determining-if-two-bounding-boxes-overlap/ 下面是該解決方案的實施:
功能DoBoundingBoxesIntersect(BB1,BB2){
//First bounding box, top left corner, bottom right corner var ATLx = bb1.TopLeftLatLong.Longitude; var ATLy = bb1.TopLeftLatLong.Latitude; var ABRx = bb1.BottomRightLatLong.Longitude; var ABRy = bb1.BottomRightLatLong.Latitude; //Second bounding box, top left corner, bottom right corner var BTLx = bb2.TopLeftLatLong.Longitude; var BTLy = bb2.TopLeftLatLong.Latitude; var BBRx = bb2.BottomRightLatLong.Longitude; var BBRy = bb2.BottomRightLatLong.Latitude; var rabx = Math.abs(ATLx + ABRx – BTLx – BBRx); var raby = Math.abs(ATLy + ABRy – BTLy – BBRy); //rAx + rBx var raxPrbx = ABRx – ATLx + BBRx – BTLx; //rAy + rBy var rayPrby = ATLy – ABRy + BTLy – BBRy; if(rabx <= raxPrbx && raby <= rayPrby) { return true; } return false;
}
我們能夠適應這樣的解決方案:
步驟1:檢查是否經度2 boundingBox的重疊
步驟2:檢查是否緯度2 boundingBox的重疊
如果步驟1和步驟2是正確的,則該2 boundingBox的重疊
你可以在這裏看到相應的草圖:
您能否從您提到的網站添加一些內容(將鏈接保留爲參考)?這篇文章仍然沒有提供明確的答案。所以你很有可能會再次被刪除。 – benka
您以前的評論已被刪除,因爲它僅提供了鏈接回覆。鏈接可能會更改,並且與您的答案無關。我會幫助你在答案上得到圖像,但請添加解釋,而不僅僅是「我也是」的答案。 –
請引用您提供的鏈接中的文字,以避免您的答案關閉。不,這不是侵犯版權。像這樣做:'「xxxxxx」 - 正如本網站所說http:// example.com' –
但是要小心邊界跨越日線箱,或極! – DNA