2010-07-27 116 views
5

如何計算存儲在MySql數據庫中的面的面積?多邊形的點是lat long。所以,度數和分鐘似乎導致了一個問題。如何計算多邊形的點數爲Lat長時,MySQL數據庫中的多邊形面積?

我已經試過:

SELECT AREA(my_polygon) 
FROM `my_table` 
WHERE name = 'Newport' 

因爲,點緯度多頭,我會有奇怪的結果。

(我無法切換到Postgre)。有沒有辦法在MySQL中做到這一點?我希望以平方米或平方公里或平方英里得到結果 - 其中任何一項都可以。

+0

你使用/你看看MySQL的GIS功能嗎? http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html – relet 2010-07-27 23:03:10

+0

嗨relet, 感謝您的消息。是的,我正在使用MySQL空間擴展。數據存儲爲MySQL多邊形。 – Laxmidi 2010-07-28 16:38:23

+0

所以你說AREA(my_polygon)不工作,因爲你有[lat longs]而不是[long lats]?原生格式應該是[Long Lat],我不知道這是否會影響面積計算。在我的情況下,AREA(聚)工作正常。 – derickito 2014-07-30 18:31:47

回答

3

您必須將這些拉伸和長條轉換爲更合適的座標系。

由於地球是一個球體,因此您正在討論的是以球面座標計算面積。

該文檔說,MySQL "AREA" function採用多邊形作爲其輸入。我想說,如果你想把面積看作平方英里,你應該用合適的單位(例如英里)將你的緯度/經度座標轉換成等效的表面(x,y)座標。然後將這些傳遞給AREA函數。

This link暗示其他人有這個問題並解決它。

+0

嗨duffymo, 謝謝你的建議。我必須研究你提供的鏈接。 – Laxmidi 2010-07-28 16:48:07

+0

區域函數以笛卡爾方式進行所有計算。 – 2010-09-15 02:59:07

+1

這就是爲什麼我說「用右單位(例如英里)將你的緯度/經度座標轉換成等效曲面(x,y)座標,然後將它們傳遞到AREA函數中。」如果你因爲你沒有閱讀我的答案而投票給我,那麼對你感到羞恥。我不知道你做了什麼來贏得「博士」的稱號,但是你的閱讀理解需要一些工作。 – duffymo 2010-09-15 09:28:14