आप जो कर रहे हैं उसका कुछ संस्करण सही है लेकिन मुझे लगता है कि आप शायद वास्तविक ज्यामिति प्रकारों का उपयोग करना चाहते हैं, खासकर यदि आप माईसाम पर हैं और आर-ट्री स्थानिक सूचकांक बना सकते हैं। आपके पास किसी भी समर्थित प्रकार के स्तंभ हो सकते हैं (अर्थात 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 | [email protected] [email protected] | [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] |
+------+---------------------------+-----------------------------------------------------------------------------------+
1 row in set (0.00 sec)
यह देशांतर और अक्षांश का प्रतिनिधित्व करने वाली फ्लोट्स के समूह पर अंकगणित करने से काफी बेहतर प्रदर्शन करेगा। सैन फ्रांसिस्को के स्थान के बारे में BTW निम्नलिखित स्थिरांक किमी और डिग्री देशांतर और अक्षांश के बीच परिवर्तित करने के लिए बहुत अच्छी तरह से काम करते हैं (यानी, यदि आप सांताक्रूज के स्वच्छ वर्ग मानचित्र चाहते हैं):
lonf 0.01132221938
latf 0.0090215040
यानी, (x +- 2*lonf, y +- 2*latf) आपको प्रासंगिक $lat_floor
देता है आदि आपकी रुचि के बिंदु के आसपास 2 किमी चौड़े लड़के के लिए मूल्य।