Tôi biết bưu cục có một kiểu dữ liệu để lưu trữ tọa độ địa lý. Nhưng tôi đang tìm một giải pháp bất khả tri của RDBMS. Hiện tại tôi đang sử dụng thập phân (25,20) trong MySQL. Tôi có thể đang sử dụng dữ liệu này để tra cứu các vị trí này dựa trên khoảng cách nhất định từ một vị trí nhất định sau đó. Đó sẽ là phương pháp tốt nhất để lưu trữ loại dữ liệu này?Cách hiệu quả nhất để lưu trữ địa lý trong cơ sở dữ liệu
Trả lời
Tiêu chuẩn là here. Mặc dù nó quá nhiều cho một trường hợp sử dụng đơn giản như của bạn, nó có thể cung cấp cho bạn một số ý tưởng về lý do tại sao nó thực sự là tốt nhất để đi và sử dụng một số gói tuân thủ OGC nhiều cơ sở dữ liệu hiện nay, thậm chí MySQL.
Nếu không, và giả sử bạn sẽ thực hiện các thuật toán để tính toán khoảng cách, bất kỳ số dấu phẩy động nào có độ chính xác bạn cần sẽ hoạt động.
Một kỹ thuật tốt khác là nhân giá trị theo hằng số và lưu trữ chúng dưới dạng giá trị số nguyên. Chỉ sử dụng số nguyên cũng có thể giúp tăng tốc độ tính toán.
Trừ khi bạn có nhu cầu nghiêm trọng về độ chính xác, bạn thực sự chỉ cần lưu trữ hơn 5 giá trị sau dấu thập phân.
Điều này Latitude Longitude Data Storage Specification cung cấp biểu đồ hiển thị độ chính xác so với số thập phân.
# decmal places, example, precision
5 51.22135 ± 0.8 m
6 50.895132 ± 0.08 m
7 sẽ hoạt động là 8mm hoặc khoảng 0,314 inch.
Theo dõi câu trả lời @vfilby's, tại sao không lưu hai nửa số này dưới dạng hai loại int riêng biệt?
AFAIK, MS SQL Server 2008 có hỗ trợ GeoLocations dưới dạng DataType. Tôi biết bạn đang sử dụng MySQL, nhưng chỉ nghĩ rằng tôi muốn đề cập đến nó về câu hỏi này.
Tôi luôn sử dụng các cột dấu phẩy động 4 byte để lưu vĩ độ và kinh độ, vì lỗi chính xác ít hơn nhiều so với độ chính xác của các thiết bị chúng tôi sử dụng. Đây có thể không phải là trường hợp với ứng dụng của bạn, nhưng nếu bạn không thể có nhiều RDBMS-thuyết bất khả tri hơn là một phao.
vfilby's answer có lẽ là tốt nhất, tuy nhiên nhiều RDBMS có hỗ trợ tốt hơn cho chỉ mục nhân vật lĩnh vực hơn chỉ mục dày đặc số nguyên (hoặc dấu chấm động) lĩnh vực. Vì lý do này một mình, tôi có thể khuyên bạn nên chuyển đổi dữ liệu đầu tiên: Nếu bạn muốn tìm các giá trị "gần" một giá trị khác, bạn cũng sẽ muốn có một chức năng bảo toàn điều này- có lẽ bằng cách chuyển đổi sang base36 và _
-đăng nhập dấu thập phân, nhưng nếu bạn chỉ cần một kết hợp chính xác, gần như bất kỳ hàm băm nhanh nào cũng sẽ làm.
Một lần nữa: Nếu bạn không có nhiều dữ liệu hoặc bạn không sử dụng RDBMS như thế này, hãy làm những gì vfilby suggested.
- 1. Làm cách nào để lưu trữ dữ liệu địa lý trong cơ sở dữ liệu Android và truy vấn?
- 2. Cách hiệu quả nhất để lưu trữ giá trị GUID trong cơ sở dữ liệu SQL Server
- 3. Cách tốt nhất để lưu trữ nhiều Flags Trong Cơ sở dữ liệu
- 4. Cách "tốt nhất" để lưu trữ địa chỉ quốc tế trong cơ sở dữ liệu là gì?
- 5. cách lưu trữ mật khẩu trong cơ sở dữ liệu?
- 6. Cách hiệu quả nhất để khôi phục nhiều cơ sở dữ liệu trong SQL 2008
- 7. Lưu trữ kích thước tệp trong cơ sở dữ liệu
- 8. Lưu trữ Enums trong Cơ sở dữ liệu MySQL
- 9. Cách tốt nhất để lưu trữ mật khẩu trong cơ sở dữ liệu
- 10. Lưu trữ thông tin OpenID trong cơ sở dữ liệu
- 11. Thực tiễn tốt nhất/Tiêu chuẩn để lưu trữ địa chỉ trong cơ sở dữ liệu SQL
- 12. Cần một cách hiệu quả để lưu trữ/truy vấn json trong cơ sở dữ liệu SQL
- 13. Cách hiệu quả để lưu trữ các mục có thể sắp xếp lại trong cơ sở dữ liệu
- 14. Thực hành tốt nhất để lưu trữ địa chỉ nhất quán và toàn diện trong cơ sở dữ liệu
- 15. Công cụ lưu trữ cơ sở dữ liệu nào là tốt nhất để triển khai blog?
- 16. Lưu trữ UUID trong cơ sở dữ liệu HSQLDB
- 17. Cách tốt nhất để lưu trữ thẻ trong cơ sở dữ liệu là gì?
- 18. Phương pháp hay nhất để lưu trữ "tìm kiếm đã lưu" trong cơ sở dữ liệu
- 19. Lưu trữ địa chỉ IP trong cơ sở dữ liệu MySQL bằng cách sử dụng PHP
- 20. Cơ sở dữ liệu Magento IP được lưu trữ
- 21. lưu trữ vị trí mục (đối với trật tự) trong một cơ sở dữ liệu một cách hiệu quả
- 22. Lưu trữ ngày giờ UTC trong cơ sở dữ liệu
- 23. Python, lưu trữ một dict trong cơ sở dữ liệu
- 24. Lưu trữ thông tin EXIF trong Cơ sở dữ liệu
- 25. Cơ sở dữ liệu lý tưởng cho dữ liệu địa lý (bản đồ)
- 26. Cơ sở dữ liệu để lưu trữ cục bộ
- 27. Cơ sở dữ liệu tốt nhất để lưu trữ số liệu thống kê từ Erlang
- 28. Lưu trữ IPv6 trong cơ sở dữ liệu
- 29. MySQL: Loại dữ liệu hiệu quả nhất để lưu trữ ghi chú dài?
- 30. Mã hóa dữ liệu để lưu trữ trong cơ sở dữ liệu
DataTypes là GEOGRAPHY và GEOMETRY. Anh ta muốn dùng GEOGRAPHY. –