Hướng dẫn how to store location in mysql - cách lưu trữ vị trí trong mysql
TL;DR Show Sử dụng Float (8,5) nếu bạn không làm việc trong NASA / quân đội và không chế tạo hệ thống máy bay Navi. Để trả lời đầy đủ câu hỏi của bạn, bạn cần xem xét một số điều: Định dạng
Vì vậy, phần đầu tiên của câu trả lời sẽ là - bạn có thể lưu trữ tọa độ theo định dạng ứng dụng của bạn sử dụng để tránh chuyển đổi liên tục qua lại và thực hiện các truy vấn SQL đơn giản hơn. Hầu hết có lẽ bạn sử dụng Google Maps hoặc OSM để hiển thị dữ liệu của mình và GMAP đang sử dụng định dạng "độ 2 của thập phân 2". Vì vậy, sẽ dễ dàng hơn để lưu trữ tọa độ theo cùng một định dạng. Độ chính xác Sau đó, bạn muốn xác định độ chính xác mà bạn cần. Tất nhiên bạn có thể lưu trữ các tọa độ như "-32.608697550570334,21.278081997935146", nhưng bạn đã bao giờ quan tâm đến milimet trong khi điều hướng đến điểm chưa? Nếu bạn không làm việc ở NASA và không làm vệ tinh hoặc tên lửa hoặc quỹ đạo máy bay, bạn sẽ ổn với độ chính xác vài mét. Định dạng thường được sử dụng là 5 chữ số sau các dấu chấm mang lại độ chính xác 50cm. Ví dụ: Có khoảng cách 1cm giữa X, 21.2780818 và X, 21.2780819. Vì vậy, 7 chữ số sau khi DOT cung cấp cho bạn độ chính xác 1/2cm và 5 chữ số sau khi DOT sẽ cung cấp cho bạn độ chính xác 1/2 mét (vì khoảng cách tối thiểu giữa các điểm riêng biệt là 1m, do đó, lỗi làm tròn không thể hơn một nửa). Đối với hầu hết các mục đích dân sự, nó là đủ.8 and X,21.2780819. So 7 digits after dot give you 1/2cm precision and 5 digits after dot will give you 1/2 meters precision (because minimal distance between distinct points is 1m, so rounding error cannot be more than half of it). For most civil purposes it should be enough. độ của số lượng thập phân định dạng (40 ° 26.767 N 79 ° 58.933 W) cung cấp cho bạn độ chính xác giống như 5 chữ số sau khi chấm Lưu trữ hiệu quả không gian Nếu bạn đã chọn định dạng thập phân, thì tọa độ của bạn là một cặp (-32.60875, 21.27812). Rõ ràng, 2 x (1 bit cho dấu hiệu, 2 chữ số cho độ và 5 chữ số cho số mũ) sẽ là đủ. Vì vậy, ở đây tôi muốn hỗ trợ Alix Axel từ các bình luận nói rằng đề xuất của Google để lưu trữ nó trong phao (10,6) thực sự là thêm, bởi vì bạn không cần 4 chữ số cho phần chính (vì dấu hiệu được tách ra và Latitude bị hạn chế đến 90 và kinh độ được giới hạn ở 180). Bạn có thể dễ dàng sử dụng phao (8,5) cho độ chính xác 1/2m hoặc phao (9,6) cho độ chính xác 50/2cm. Hoặc thậm chí bạn có thể lưu trữ LAT và dài trong các loại tách, vì Float (7,5) là đủ cho LAT. Xem tham chiếu loại float MySQL. Bất kỳ ai trong số họ sẽ giống như phao bình thường và bằng 4 byte.Alix Axel from comments saying that Google suggestion to store it in FLOAT(10,6) is really extra, because you don't need 4 digits for main part (since sign is separated and latitude is limited to 90 and longitude is limited to 180). You can easily use FLOAT(8,5) for 1/2m precision or FLOAT(9,6) for 50/2cm precision. Or you can even store lat and long in separated types, because FLOAT(7,5) is enough for lat. See MySQL float types reference. Any of them will be like normal FLOAT and equal to 4 bytes anyway. Thông thường không gian không phải là một vấn đề ngày nay, nhưng nếu bạn muốn thực sự tối ưu hóa lưu trữ vì một lý do nào đó (từ chối trách nhiệm: Đừng tối ưu hóa trước), bạn có thể nén LAT (không quá 91 000 giá trị + dấu hiệu) Hơn 181 000 giá trị + dấu hiệu) đến 21 bit nhỏ hơn đáng kể so với 2xfloat (8 byte == 64 bit) Đăng ký nhận bản tin của tôi và không bao giờ bỏ lỡ các bài viết sắp tới của tôi Nhiều lần chúng tôi nắm bắt vị trí địa lý của người dùng và lưu trữ trong cơ sở dữ liệu cho các trường hợp sử dụng khác nhau. Tôi đã thấy rằng hầu hết các nhà phát triển sử dụng nhiều trường để lưu trữ vĩ độ và kinh độ riêng biệt như Trong bài viết ngắn này, chúng ta sẽ thấy một cách thay thế để lưu trữ tọa độ trong cơ sở dữ liệu MySQL bằng cách sử dụng các loại dữ liệu không gian như Tạo một bảng
Chèn tọa độ
Bảng sẽ lưu trữ và hiển thị dữ liệu theo cách sau
Ngoài ra, hãy kiểm tra điều này để biết cách bắt giữ vị trí địa lý của người dùng trong trình duyệt web. Cảm ơn bạn đã đọc 🙏 Nếu bạn thích bài viết này hoặc thấy nó hữu ích, hãy cho nó một ngón tay cái 👍 Hãy kết nối 👋 Twitter | Instagram | LinkedIn Bạn có thể lưu trữ các tệp trong MySQL không?Đối tượng lớn nhị phân (Blob) là loại dữ liệu MySQL có thể lưu trữ dữ liệu nhị phân như hình ảnh, đa phương tiện và các tệp PDF..
Kiểu dữ liệu nào được sử dụng cho vị trí trong SQL?Kiểu dữ liệu địa lý SQL SQL lưu trữ dữ liệu ellipsoidal (Trái đất), chẳng hạn như vĩ độ GPS và tọa độ kinh độ.ellipsoidal (round-earth) data, such as GPS latitude and longitude coordinates.
Bạn có thể lưu trữ gì trong MySQL?MySQL có thể hoạt động như một lưu trữ tài liệu NoQuery JSON để các lập trình viên có thể lưu dữ liệu mà không phải bình thường hóa dữ liệu, thiết lập các lược đồ hoặc thậm chí có manh mối dữ liệu của họ trông như thế nào trước khi bắt đầu mã.Kể từ khi MySQL phiên bản 5.7 và trong MySQL 8.0, các nhà phát triển có thể lưu trữ các tài liệu JSON trong một cột của bảng.NoSQL JSON Document Store so programmers can save data without having to normalize data, set up schemas, or even have a clue what their data looks like before starting to code. Since MySQL version 5.7 and in MySQL 8.0, developers can store JSON documents in a column of a table.
Loại dữ liệu nào nên là vĩ độ?Đối với vĩ độ và kinh độ, bạn có thể sử dụng varchar hoặc gấp đôi.Lưu ý rằng dữ liệu vĩ độ và kinh độ của bạn phải ở dạng số dương và âm, và không ở dạng độ.VARCHAR or DOUBLE . Note that your latitude and longitude data must be in the form of positive and negative numbers, and not in the form of degrees. |