Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Znajdź N najbliższego ciągu linii z punktu za pomocą rozszerzeń MySQL Spatial

To była dla mnie bardzo przydatna odpowiedź, ale używam MySQL 5.7.18, który ma bardziej zaawansowane lub po prostu inne funkcje zapytań geograficznych. Opublikowana funkcja odległości nie jest już potrzebna - użyj ST_Distance_Sphere. Oto aktualizacja tego samego kodu, aby zapewnić zgodność DistanceFromLine z nowoczesnym (5.7.6+) MySQL...

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. Jak uzyskać dane sprzedaży z ostatnich 3 miesięcy w MySQL?

  2. Tworzenie bazy danych za pomocą MySQL Workbench z istniejącego schematu/modelu

  3. Jak rekursywnie usuwać elementy z tabeli?

  4. Jak sprawdzić, kiedy serwer MySQL/MariaDB został uruchomiony?

  5. Zapytanie z wieloma wartościami w kolumnie