MySQL có lưu trữ các kiểu dữ liệu điểm như LAT LNG hay LNG LAT không?


9

Tôi đã từng thấy định dạng vị trí là vĩ độ theo sau là kinh độ, nhưng sử dụng các thư viện, tôi tin rằng tôi hiểu MySQL để lưu trữ nó theo POINT(LNG LAT)thứ tự ngược lại. Là thư viện của tôi sai, hay đây là định dạng thực tế? Tôi dường như không thể tìm thấy chi tiết này trong tài liệu MySQL.


Bạn có thể có thể đọc cái này: stackoverflow.com/questions/159255/ từ
codedawg82

Câu trả lời:


14

Cú pháp xây dựng

Tra cứu tham chiếu chức năng không gian, bạn sẽ thấy

Point(x, y)
Constructs a Point using its coordinates

Điều này không hoàn toàn chính xác. Tất cả các triển khai GIS phải làm (x,y)cho tọa độ dự kiến (long,lat). Nhưng, trên các hệ thống dây chằng geodidic có một số bất đồng về việc phải làm. MySQL (và SQL Server) làm được (lat,long)nhưng PostGIS duy trì (long,lat)ở mọi nơi.

Này được đề cập đến trong các đặc tả Thực hiện OpenGIS® Tiêu chuẩn thông tin địa lý - Simple truy cập tính năng - Phần 2: Tùy chọn SQL ,

  • Đối với CRS trắc địa có hệ tọa độ 2 chiều hình elip, trục hệ tọa độ elip hai chiều là vĩ độ trắc địa, hướng bắc dương và kinh độ trắc địa, hướng dương. Hướng trục sẽ lần lượt là 'bắc' và 'đông'.
  • Đối với CRS trắc địa có hệ tọa độ elip ba chiều, tên và chữ viết tắt của trục ngang trong chuỗi WKT phải tuân theo các yêu cầu trong (ii). Tên trục dọc sẽ là 'chiều cao elip'; viết tắt trục dọc sẽ là 'h' và nên được bao gồm khi viết tắt cho các trục ngang được bao gồm.

Lưu ý các từ trên được tìm thấy nguyên văn trong thông tin Địa lý - Biểu diễn văn bản nổi tiếng của các hệ tọa độ tham chiếu

Ngay cả khi trở lại như thông số 1.1,

Một hệ quy chiếu không gian, còn được gọi là hệ tọa độ, là hệ thống địa lý (vĩ độ - kinh độ) , hệ tọa độ (X, Y) hoặc hệ tọa độ (X, Y, Z).

Điều đó nói rằng, có vẻ như PostGIS và Oracle và nhiều thư viện bên thứ ba duy trì (x,y,[z])cho tất cả các loại điểm. Điều này vi phạm thông số kỹ thuật cho WKT, nhưng là một quy ước khá phổ biến. Ví dụ GeoJSON cũng làm điều này,

Các tọa độ điểm theo thứ tự x, y (hướng đông, hướng bắc cho tọa độ chiếu, kinh độ và vĩ độ cho tọa độ địa lý)

Và, thứ tự (lat, long) được xác định rõ ràng bởi EPSG cho SRSID 4326 , .

Hệ tọa độ 2D hoặc 3D trong đó vị trí được chỉ định theo vĩ độ trắc địa, kinh độ trắc địa và (trong trường hợp ba chiều) chiều cao hình elip, được sử dụng trong CRS địa lý.

Bạn cũng có thể xem xét kiểm tra blog của Paul Ramsey (Thuyền trưởng PostGIS) về chủ đề này với tựa đề: "Hãy gọi toàn bộ"

Tính chất

Một lưu ý đặc biệt, MySQL mang đến hai chức năng mới cho hỗn hợp,

Những chức năng đứng bên lề ST_X(), và ST_Y()đòi hỏi một SRS địa lý hoặc họ ném một ngoại lệ và không bị lỗi.

Lưu trữ

Từ các tài liệu

Trong nội bộ, MySQL lưu trữ các giá trị hình học theo định dạng không giống với định dạng WKT hoặc WKB. (Định dạng bên trong giống như WKB nhưng với 4 byte ban đầu để biểu thị SRID.)

Lưu trữ được xác định ở đây .

Table 11.1 WKB Components Example

Component       Size    Value
Byte order      1 byte  01
WKB type        4 bytes 01000000
X coordinate    8 bytes 000000000000F03F
Y coordinate    8 bytes 000000000000F0BF

0

Một cách dễ dàng để kiểm tra thứ tự là vượt ra khỏi vĩ độ phạm vi:

SELECT ST_Longitude(ST_SRID(POINT(45, 160), 4326));

Cung cấp ERROR 3732 (22S03): Tham số của hàm st_srid chứa hình học có vĩ độ 160.000000, nằm ngoài phạm vi. Nó phải nằm trong [-90.000000, 90.000000];

Coi chừng thứ tự có thể thay đổi tùy thuộc vào các chức năng bạn sử dụng:

SELECT ST_Longitude(ST_SRID(POINT(45, 90), 4326));
SELECT ST_Longitude(ST_GeomFromText('POINT(45 90)', 4326));
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.