2017-07-13 69 views
0

當我將經度和緯度保存到數據庫中時,它被存儲爲數據類型Decimal。 經度被保存爲34,並且緯度被保存爲118 這是否可以使用半連續公式工作。我正在嘗試在用戶當前位置20英里內找到一個位置。什麼是mySql中的半胱氨酸公式的正確數據類型

+0

不需要您需要更高的精度 – Strawberry

+0

這將會有多遠?如果它一英里或兩英里就沒關係。這個沙丁胺配方能用這種形式嗎? – dscrown

+0

https://stackoverflow.com/questions/12504208/what-mysql-data-type-should-be-used-for-latitude-longitude-with-8-decimal-places – dscrown

回答

1

不,這絕對不行。

緯度一度約爲70英里。這比你想要的精度要大得多。

如果要計算距離爲20英里的分辨率,則至少需要一個小數位作爲緯度和經度 - 0.1°緯度爲7英里,0.1°經度與此相結合大約10英里(√2×7 = 9.8)。當然,您的源數據的精確度會更高。

這裏可能出現了什麼問題,您已經使用了DECIMAL類型的緯度和經度,沒有指定寬度。在MySQL中,默認爲DECIMAL(10,0) - 十位數字,全部在小數點前(例如,1234567890.)。你可能想要的更多的是DECIMAL(10,6)的行,它允許列存儲一個十位數的數字,其中六位數字在小數點後面(例如,1234.123456)。 Six decimal places of latitude/longitude gives you a resolution of about 4 inches,所以沒有比這更多的存儲點。

+0

什麼是最好的方式去做這個?不尋找代碼,但如果十進制格式不正確,我應該採取什麼方法? – dscrown

+0

@dscrown在DECIMAL類型中添加了一些註釋。 – duskwuff

相關問題