Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL स्थानिक एक्सटेंशन का उपयोग करके एक बिंदु से N निकटतम लाइनस्ट्रिंग खोजें

यह मेरे लिए एक बहुत ही उपयोगी उत्तर था, लेकिन मैं MySQL 5.7.18 का उपयोग कर रहा हूं, जिसमें अधिक उन्नत या बस अलग-अलग जियो क्वेरी फ़ंक्शन हैं। पोस्ट किए गए डिस्टेंस फंक्शन की अब आवश्यकता नहीं है- ST_Distance_Sphere का उपयोग करें। तो यहाँ उसी कोड का एक अपडेट है जो डिस्टेंसफ्रॉमलाइन को आधुनिक (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. प्रति देश/उपयोगकर्ता वरीयता के आधार पर PHP के माध्यम से MySQL सामग्री को अलग करना

  2. अद्यतन या सम्मिलित करें MySQL पायथन

  3. पायथन ज़्लिब आउटपुट, mysql utf-8 तालिका से कैसे पुनर्प्राप्त करें?

  4. MySQL में संग्रहित प्रक्रिया को कैसे हटाएं

  5. त्रुटि 1075:गलत तालिका परिभाषा; केवल एक ऑटो कॉलम हो सकता है और इसे एक कुंजी के रूप में परिभाषित किया जाना चाहिए