Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhận đa giác gần bằng vĩ độ, dài trong MySQL

Phiên bản chậm (không có chỉ mục không gian):

SELECT  *
FROM    mytable
WHERE   MBRIntersects(mypolygon, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))

Để sử dụng các chỉ mục không gian, bạn cần chuẩn hóa bảng của mình để mỗi đỉnh đa giác được lưu trữ trong bản ghi của chính nó.

Sau đó, tạo SPATIAL INDEX trên trường chứa tọa độ của các đỉnh và chỉ cần đưa ra truy vấn này:

SELECT  DISTINCT polygon_id
FROM    vertices
WHERE   MBRContains(vertex, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))

Mọi thứ sẽ dễ dàng hơn nhiều nếu bạn lưu trữ UTM tọa độ trong cơ sở dữ liệu của bạn thay vì vĩ độ và kinh độ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đặt lại mật khẩu ROOT trong MySQL 5.6

  2. Câu lệnh SQL Lỗi trong mã java sử dụng Intellij và DB Navigator

  3. Làm cách nào tôi có thể sử dụng PDO để tìm nạp một mảng kết quả trong PHP?

  4. Cách xóa khóa duy nhất khỏi bảng mysql

  5. Làm cách nào để hiển thị chữ cái đầu tiên dưới dạng chữ hoa?