2011-08-22 25 views
11

Tôi đã lưu trữ Vĩ độ và Kinh độ trong các trường riêng biệt. Tôi đang nhận được các tọa độ LPT & Lng từ google và cũng sử dụng chúng để tìm các địa điểm lân cận bằng cách sử dụng một số công thức. Giờ đây, đôi khi giá trị vĩ độ và kinh độ đạt đến 15 vị trí thập phân như sau -> 15.123456789000001. những gì sẽ là datatype tốt nhất để lưu trữ các giá trị này? Ngay bây giờ tôi đang sử dụng Double để lưu trữ Latitude và kinh độ tọa độ.Kiểu dữ liệu mysql phù hợp để lưu trữ Vĩ độ và Kinh độ trong các trường riêng biệt

Cảm ơn trước Advance

+1

có thể trùng lặp của [Loại dữ liệu lý tưởng để sử dụng khi lưu trữ vĩ độ/kinh độ trong cơ sở dữ liệu MySQL là gì?] (Http://stackoverflow.com/questions/159255/what-is-the-ideal-data-type -to-use-khi-lưu-latitude-longitudes-in-a-mysql) – Gajus

Trả lời

24

99% thời gian, bất kỳ loại dữ liệu dấu phẩy động nào mà bạn chọn đều phải đủ.

Có, tôi biết rằng không phải lúc nào cũng thể hiện chính xác và chính xác giá trị đến 15 chữ số thập phân, nhưng không quan trọng. Độ dài/dài đến 15 chữ số thập phân là xác định vị trí với độ chính xác (được xác nhận) theo thứ tự chiều rộng của một vài nguyên tử hydro. Bạn chỉ cần sáu chữ số thập phân để có được độ chính xác trong phạm vi mét, đủ cho hầu hết các trường hợp. Rất ít cần phải có độ chính xác hơn xentimét (8 điểm) và độ chính xác 10 hoặc thậm chí 100 mét sẽ đủ tốt cho nhiều ứng dụng.

Và, tất nhiên, đó là tất cả giả định rằng nguồn dữ liệu ban đầu chính xác ở vị trí đầu tiên. GPS của điện thoại của tôi hiếm khi có độ chính xác cao hơn 10m (và thậm chí sau đó, một nửa thời gian bản đồ của nó không hiển thị vị trí thực tế của tôi trong vòng tròn 10m mà nó khẳng định), vì vậy lưu trữ vị trí chính xác hơn sẽ là vô nghĩa và gây hiểu lầm. Cấp, bạn có thể sử dụng một nguồn dữ liệu chính xác hơn so với máy thu GPS giá rẻ tích hợp vào một chiếc điện thoại di động, nhưng, mặc dù vậy, nó có thể không thực sự chính xác tất cả các con đường xuống đến một quy mô phân tử.

+0

Thông tin tuyệt vời. Bạn có thể cho tôi biết bản đồ chính xác chính xác cho tất cả các độ chính xác không. Hoặc trỏ đến nguồn thông tin này. –

+1

Điều tuyệt vời về hệ thống số liệu và chữ số có nghĩa là chúng đều là các yếu tố 10. Nếu độ chính xác 8 chữ số thập phân = 1cm, thì 7 vị trí = 10cm, 6 = 100cm, v.v. Cũng lưu ý rằng khoảng cách bề mặt được biểu thị bằng một mức độ thay đổi theo vĩ độ. Để có được ánh xạ chính xác, hãy sử dụng http://www.csgnetwork.com/degreelenllavcalc.html để xác định kích thước của một độ bằng mét tại vĩ độ mục tiêu của bạn, sau đó di chuyển vị trí thập phân nếu cần. –

4

Tôi đã sử dụng loại dữ liệu DECIMAL.

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

Điều này bao gồm ký hiệu +/-? –

+0

Bạn có thể lưu số âm trong các loại thập phân. Tuy nhiên, số dương của bạn sẽ không có dấu + đính kèm. http://dev.mysql.com/doc/refman/5.5/en/fixed-point-types.html – cleanunicorn

1

Bạn có thể thử sử dụng Tiện ích mở rộng không gian với GIS. Nhìn vào http://dev.mysql.com/doc/refman/5.1/en/spatial-extensions.html

+0

vâng, đó là cách tốt để sử dụng Tiện ích mở rộng không gian nhưng trong trường hợp kinh độ và vĩ độ của tôi đã được lưu trữ trong các trường riêng biệt. Vì vậy, khó khăn của nó bây giờ để thay đổi cấu trúc. – jacobian

Các vấn đề liên quan