मेरे पास अभी खेलने के लिए MySQL नहीं है। इसलिए मैं पहले आपकी क्वेरी को SQL सर्वर स्थानिक में डुप्लिकेट करने का प्रयास करता हूं।
DECLARE @g1 geometry
DECLARE @h1 geometry
SET @g1= geometry::STGeomFromText('POLYGON((-74.05100448502202 4.7239278424321,-74.05092938316898 4.7241416902206,-74.04830618275201 4.7237460717602,-74.04643668306903 4.7234306460692,-74.04635688735101 4.7234105978214,-74.04636526925401 4.7233310730989,-74.046191260944 4.72327293317,-74.04579027069599 4.7232007594583,-74.04141290558402 4.7214258184083,-74.03746201170497 4.7197791822891,-74.03565688503801 4.7189879401666,-74.033484295736 4.7180897723398,-74.03098447693401 4.7170526009038,-74.028731840457 4.7161167561787,-74.02852820211899 4.7150714370973,-74.026398371001 4.6877232674918,-74.02558060109601 4.6874859863574,-74.02454587610401 4.686797564651,-74.024665108676 4.6863189291555,-74.025470986757 4.6857975214267,-74.02585246812498 4.6846813784365,-74.02580479605103 4.6834369175226,-74.01962984798399 4.684922743491,-74.028472839649 4.6765444849623,-74.032273278366 4.6775012677607,-74.03825980124901 4.6799297676049,-74.048215993474 4.6850422042295,-74.05718496514402 4.6867981911917,-74.05100448502202 4.7239278424321))', 4326);
SET @h1 = geometry::STGeomFromText('POINT(-74.051585 4.680108)', 4326)
SELECT @g1.STContains(@h1) contain, @g1.STDistance(@h1) distance
और परिणाम वही है जिसकी आप अपेक्षा कर सकते हैं:
contain distance
0 | 0.005489581062607675
इसके पीछे का कारण यह है:
मैं STContains . का उपयोग कर रहा हूं MBR में शामिल नहीं है आप जो खोज रहे हैं उसके विवरण के आधार पर। MBRContains फ़ंक्शन पहले आपके बहुभुज पर एक न्यूनतम बाउंडिंग आयत बनाता है, और उस नई बहुभुज सुविधा का उपयोग करें जिसमें निर्णय शामिल है। आपके उदाहरण में, बिंदु आपके बहुभुज के MBR में आता है, इसलिए आपका MySQL परिणाम वह नहीं है जिसकी आप अपेक्षा करते हैं। और STContains वह सही कार्य है जिसकी आप तलाश कर रहे हैं।
आधिकारिक संदर्भ:Mysql स्थानिक लिंकए>