मैं सड़कों और होटलों के बारे में डेटा संग्रहीत करने के लिए MySQL Spatial Extensions का उपयोग कर रहा हूं। मैं होटल डेटा को प्वाइंट के रूप में संग्रहीत करता हूं, जबकि मैं लाइन डेटा को लाइनस्ट्रिंग के रूप में संग्रहीत करता हूं। सारणी इस तरह दिखती हैंMySQL स्थानिक एक्सटेंशन का उपयोग करके एक बिंदु से एन निकटतम लाइनस्ट्रिंग खोजें
CREATE TABLE IF NOT EXISTS `Hotels` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` text,
`coordinate` point NOT NULL,
PRIMARY KEY (`id`),
SPATIAL KEY `coordinate` (`coordinate`),
)
CREATE TABLE IF NOT EXISTS `Roads` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` text,
`route` linestring NOT NULL,
PRIMARY KEY (`id`),
SPATIAL KEY `coordinate` (`route`),
)
एक उदाहरण का दृश्य इस तरह होगा।
मेरे समस्या एक नंबर एन और एक बिंदु पी, SQL क्वेरी बिंदु पी से एन सड़कों निकटतम खोजने के लिए क्या है दिया जाता है? दूरी को ऊपर दिखाए गए बिंदु पर सड़क के एक सेगमेंट के बीच सबसे छोटी लंबवत दूरी से परिभाषित किया गया है। (हालांकि वास्तविकता में, निकटतम दूरी राजमार्ग द्वार और एक होटल के बीच होनी चाहिए, लेकिन इस मामले में, हम किसी भी बिंदु से राजमार्ग में प्रवेश कर सकते हैं: पी)
यदि इसके लिए कोई एकल SQL कथन समाधान नहीं है समस्या, एक मध्यस्थ एसक्यूएल क्वेरी और एक पोस्ट प्रोसेसिंग मेरे लिए स्वीकार्य है। लेकिन एक कुशल एसक्यूएल क्वेरी और डेटा को पोस्ट-प्रोसेस करने का तरीका क्या होगा?
क्या आपने अभी तक अपना जवाब प्राप्त कर लिया है? :) – bonCodigo
कृपया सुनिश्चित करें कि आप MySQL 5.5 का उपयोग कर रहे हैं अन्यथा स्थानिक कार्यक्षमता आपके प्रश्न का उत्तर देने के लिए पर्याप्त लागू नहीं की गई है – TheSteve0