2011-08-22 14 views
11

Enlem ve Boylamı ayrı alanlarda saklıyorum. Ben Google'dan Lat & Lng koordinatları alıyorum ve ayrıca bazı formülü kullanarak yakındaki yerleri bulmak için onları kullanıyorum. Şimdi, bazen enlem ve boylam değeri, bunun gibi 15 ondalık basamağa kadar ulaşır -> 15.123456789000001. Bu değerleri saklamak için en iyi veri türü ne olurdu? Şu anda Latitude ve Longitude koordinatlarını saklamak için Double kullanıyorum.Enlem ve Boylamı ayrı alanlara kaydetmek için uygun mysql veri türü

Teşekkür peşin

+1

olası bir kopyası [Bir MySQL veritabanında enlem/boylamları depolarken kullanılacak ideal veri türü nedir?] (Http://stackoverflow.com/questions/159255/what-is-the-ideal-data-type -to-kullanım-depolama-enlem-boylam-in-a-mysql) – Gajus

cevap

24

Saatin% 99'u, istediğiniz herhangi bir kayan nokta veri türü yeterli olmalıdır.

Evet, her zaman değerleri tam olarak doğru ve kesin olarak 15 ondalık basamağa temsil edemediklerini biliyorum, ancak ,. En uzun/en çok 15 ondalık basamak, bir çift hidrojen atomunun genişliği sırasına göre (iddia edilen) bir doğruluğu olan bir konum belirtir. Çoğu durumda yeterli olan bir metrenin içinde doğruluk elde etmek için yalnızca altı ondalık basamak gerekir. Çok azının santimetre seviyesinde doğruluktan daha fazlasına (8 yer) ve 10 veya hatta 100 metreye kadar doğrulukta olması birçok uygulama için yeterli olacaktır.

Ve tabi ki, orijinal veri kaynağının ilk etapta doğru olduğunu varsayıyoruz. Telefonumun GPS’i nadiren 10m’den daha iyi bir doğrulukta olduğunu iddia ediyor (ve hatta haritanın gerçekte 10m dairesinde olması gerektiğini iddia ettiğim yerde gerçek zamanımı göstermediğim zamanın yarısı), bu yüzden bir konumun daha hassas bir şekilde saklanması anlamsız ve yanıltıcı. Verilen, bir cep telefonuna entegre edilmiş ucuz GPS alıcısından daha doğru bir veri kaynağı kullanıyor olabilirsiniz, ancak yine de, moleküler bir ölçeğe kadar tam olarak doğru olması muhtemel değildir.

+0

Büyük bilgi parçası. Tüm doğruluklar için kesin doğruluk haritalamasını söyleyebilir misiniz? Veya bu bilgilerin kaynağına işaret edin. –

+1

Metrik sistem ve önemli rakamlar hakkında en iyi şey, her ikisinin de 10 faktörüdür. 8 ondalık basamak = 1 cm doğrulukta, sonra 7 basamak = 10 cm, 6 = 100 cm, vb. Ayrıca, derece enlem ile değişir. Tam bir eşleme elde etmek için, hedef enleminizdeki metrelerdeki bir derecenin boyutunu belirlemek için http://www.csgnetwork.com/degreelenllavcalc.html adresini kullanın, ardından ondalık yeri gerektiği gibi taşıyın. –

4

I DECIMAL veri türünü kullandım.

CREATE TABLE IF NOT EXISTS `example` (
    `lat` decimal(18,15) DEFAULT NULL, 
    `long` decimal(18,15) DEFAULT NULL 
); 
+0

Bu işaret +/- içerir mi? –

+0

Negatif sayıları ondalık tipte saklayabilirsiniz. Ancak, pozitif rakamlarınız + işareti eklenmiş olmayacaktır. http://dev.mysql.com/doc/refman/5.5/en/fixed-point-types.html – cleanunicorn

İlgili konular