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

Tìm Chuỗi Dòng Gần Nhất Từ Một Điểm Sử dụng Phần mở rộng Không gian MySQL

Đây là một câu trả lời rất hữu ích cho tôi, nhưng tôi đang sử dụng MySQL 5.7.18, có nhiều chức năng truy vấn địa lý nâng cao hơn hoặc chỉ khác. Hàm khoảng cách đã đăng không còn cần thiết nữa- sử dụng ST_Distance_Sphere. Vì vậy, đây là bản cập nhật của cùng một mã để làm cho DistanceFromLine tuân thủ với MySQL (5.7.6+) hiện đại ...

Hàm
DROP function IF EXISTS `DistanceFromLine`;
delimiter //
    CREATE FUNCTION `DistanceFromLine`(
    route LINESTRING, point1 POINT
    ) RETURNS INT DETERMINISTIC
        BEGIN
        DECLARE a INT Default 0 ;
        DECLARE minDistance INT Default 0;
        DECLARE currentDistance INT Default 0;
        DECLARE currentpoint point ;
        DECLARE size INT Default 0 ;
        SET size =  ST_NumPoints(route);
              simple_loop: LOOP
       SET a = a+1;
       SET currentpoint = ST_PointN(route,a);
       SET currentDistance = ST_Distance_Sphere(point1,currentpoint);

       IF a = 1 THEN
        SET minDistance = currentDistance;
           END IF;

       IF currentDistance < minDistance THEN
        SET minDistance = currentDistance;
       END IF;
       IF a=size THEN
                 LEAVE simple_loop;
       END IF;
          END LOOP simple_loop;
     RETURN (minDistance);
 END//


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi gốc đằng sau Không thể thiết lập kết nối cơ sở dữ liệu là gì. Kiểm tra chuỗi kết nối, tên người dùng và mật khẩu.

  2. Sử dụng mysql_fetch_row để lấy kết quả từ cơ sở dữ liệu và chèn vào mảng bằng PHP và mysqli?

  3. Sử dụng mệnh đề union và order by trong mysql

  4. Cách tốt nhất để xóa các hàng cũ khỏi MySQL trên cơ sở luân phiên là gì?

  5. Kết nối với Cơ sở dữ liệu Perl