2011-12-08 27 views
-2

我正在研究java應用程序。我在MySql中創建了我的表格,用於存儲不同的經度和緯度。我必須從數據庫中找出不同的經度和緯度,給出1英里的半徑。如何使用MySql查詢檢索Java中給定的1英里距離的不同經度和緯度?

在這裏,我輸入參數英里(半徑)= 1

我想在Java中的任何函數可採取1英里的輸入和從數據庫返回的不同lat和長。

即輸入=1英里

輸出= LAT = 23.45,經度= 72.12
LAT = 23.4501,經度= 72.1201
LAT = 24.01,經度= 73.12
LAT = 23.451,經度= 72.121
LAT = 22.45,經度= 70.12
LAT = 20.45,經度= 74.12
LAT = 25.45,經度= 73.12
LAT = 26.45,經度= 71.12

必需:內搭距離作爲輸入
2)MySQL查詢其給出從給定1英里距離數據庫的不同lat和長

1)Java函數。
3)滿足上述代碼或任何其他API計算所需的任何計算。

請幫我拿出任何有用的Java代碼和mySql查詢來獲取表中的數據?

謝謝。

+0

這功課嗎?使用幾何數據類型和空間查詢可以更好地解決這個問題。儘管如此,它仍然可以使用普通的香草查詢來實現。 – Gnat

+0

你是指給出距離1英里,函數必須返回經緯度,它們之間的距離是1的兩點的長度? – amrfaissal

+0

我想要一些機制在這裏,讓我說我有1個經度和當前位置的經度.....現在從這個當前的位置,我想找出距離數據庫的其他緯度和經度爲「1英里的距離」。如果數據庫在此1英里距離之間具有「緯度和經度」,則Java代碼將返回此經緯度並長於數據庫。之後,我想在MAP中顯示此Lat和Long作爲針點/註釋。但是,在MYSQL表中返回「lat和long」的值的查詢是什麼,我應該在Java代碼中執行它。 – Developer

回答

2

您應該使用haversine公式計算兩點之間的大圓距離,您得到一個起點和距離爲1英里。

haversine公式:

a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2) 
c = 2.atan2(sqrt(a), sqrt(1−a)) 
d = R.c 

其中:

- R is earth's radius (`mean radius = 6,371km`); 
- Δlat = lat2 - lat1 
- Δlong = long2 - long1 
- atan2(y,x) = arc tan(y/x) 
- d = 1 mile 

,或者您可以使用等距離長方圓柱近似這是很容易:

x = Δlong.cos(lat) 
y = Δlat 
d = R.sqrt(x² + y²) 

所以,你有什麼距離d = 1並且開始點let說(lat1, long1),所以你必須求解方程並得到所有的對(lat,long)來驗證你的方程。

享受。

-1

也許你應該聘請一個開發人員?由於您的「問題」更像是您在oDesk等網站上看到的工作要求,而不是像一個問題,它可以幫助您解決在實際上自己做一些工作後面臨的問題...

此外, 「1mile」本身意味着什麼? (答案=無)

你真的需要提供一個距離爲1(英里)的參考點!而你不知道/意識到的事實支持這個建議:你應該僱人來做這件事。

大聲笑。

+0

嗨,我認爲在這裏創建了一些誤解.....我不適用於任何網站,如「oDesk」。我想在這裏有一些機制,在那裏讓我說我有1個經度和當前位置的經度.....現在從這個當前位置我想從數據庫中找出另一個緯度和經度爲「1英里距離」。如果數據庫在此1英里距離之間具有「緯度和經度」,則Java代碼將返回此經緯度並長於數據庫。之後,我想在MAP中顯示此Lat和Long作爲針點/註釋。 – Developer

相關問題