Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Temukan N LineString Terdekat Dari Sebuah Titik Menggunakan Ekstensi Spasial MySQL

Ini adalah jawaban yang sangat berguna bagi saya, tetapi saya menggunakan MySQL 5.7.18, yang memiliki fungsi kueri geo yang lebih maju atau hanya berbeda. Fungsi jarak yang diposting tidak diperlukan lagi- gunakan ST_Distance_Sphere. Jadi, inilah pembaruan kode yang sama untuk membuat DistanceFromLine sesuai dengan MySQL modern (5.7.6+)...

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. Campuran ilegal dari susunan (utf8mb4_unicode_ci,IMPLICIT) dan (utf8mb4_general_ci,IMPLICIT) untuk operasi '='

  2. Mysql - Mengarsipkan data, solusi mana yang digunakan?

  3. Menyimpan informasi kartu kredit di database MySQL?

  4. MySQL Visual Studio Tidak dapat membuat jendela desain untuk objek yang dipilih

  5. Tetapkan prioritas antara proses mysql