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

श्रेणी के लिए खोजें अक्षांश/देशांतर निर्देशांक

आप जो कर रहे हैं उसका कुछ संस्करण सही है लेकिन मुझे लगता है कि आप शायद वास्तविक ज्यामिति प्रकारों का उपयोग करना चाहते हैं, खासकर यदि आप माईसाम पर हैं और आर-ट्री स्थानिक सूचकांक बना सकते हैं। आपके पास किसी भी समर्थित प्रकार के स्तंभ हो सकते हैं (अर्थात point , polygon ), या कैचॉल geometry टाइप करें:

mysql> create table spatial_table (id int, my_spots point, my_polygons geometry);
Query OK, 0 rows affected (0.06 sec)

फिर WKT सिंटैक्स के साथ क्वेरी और अपडेट करें:

mysql> insert into spatial_table values (1, GeomFromText('POINT(1 1)'), GeomFromText('POLYGON((1 1, 2 2, 0 2, 1 1))'));
Query OK, 1 row affected (0.00 sec)

mysql> insert into spatial_table values (1, GeomFromText('POINT(10 10)'), GeomFromText('POLYGON((10 10, 20 20, 0 20, 10 10))') );
Query OK, 1 row affected (0.00 sec)

फिर आप अपनी क्वेरी (यानी आसपास) कर सकते हैं, एक लिनेस्ट्रिंग के न्यूनतम बाउंडिंग आयत के खिलाफ समाप्ति बिंदु बिंदु 1 =देशांतर - वृद्धि, अकेला - वृद्धि, y =देशांतर + वृद्धि, अक्षांश + वृद्धि, यानी यहां + - 1 के साथ :

mysql> select * from spatial_table where MBRContains(GeomFromText('LINESTRING(9 9, 11 11)'), my_spots);
+------+---------------------------+-----------------------------------------------------------------------------------+
| id   | my_spots                  | my_polygons                                                                       |
+------+---------------------------+-----------------------------------------------------------------------------------+
|    1 |              example@sqldat.com      example@sqldat.com |                    example@sqldat.com      example@sqldat.com      example@sqldat.com      example@sqldat.com              example@sqldat.com      example@sqldat.com      example@sqldat.com |
+------+---------------------------+-----------------------------------------------------------------------------------+
1 row in set (0.00 sec)

यह देशांतर और अक्षांश का प्रतिनिधित्व करने वाली फ्लोट्स के समूह पर अंकगणित करने से काफी बेहतर प्रदर्शन करेगा। सैन फ्रांसिस्को के स्थान के बारे में BTW निम्नलिखित स्थिरांक किमी और डिग्री देशांतर और अक्षांश के बीच परिवर्तित करने के लिए बहुत अच्छी तरह से काम करते हैं (यानी, यदि आप सांताक्रूज के स्वच्छ वर्ग मानचित्र चाहते हैं):

lonf 0.01132221938
latf 0.0090215040

यानी, (x +- 2*lonf, y +- 2*latf) आपको प्रासंगिक $lat_floor देता है आदि आपकी रुचि के बिंदु के आसपास 2 किमी चौड़े लड़के के लिए मूल्य।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जावा क्लासपाथ को MySQL ड्राइवर नहीं मिल रहा है

  2. अनुक्रम मानों का उपयोग करते हुए पंक्तियों को सम्मिलित करते समय कॉलम की अनुमति नहीं है त्रुटि

  3. परिणाम सेट में ऑटो-नंबरिंग पंक्तियों के लिए शुद्ध-एसक्यूएल तकनीक

  4. किसी को पिछले पेज पर वापस जाने से कैसे रोकें?

  5. mysql> डेटाबेस टेस्ट बनाएं; त्रुटि 1006 (HY000):डेटाबेस 'परीक्षण' नहीं बना सकता (त्रुटि:2)