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

Mysql फ़ंक्शन MBRContains सटीक नहीं है

मेरे पास अभी खेलने के लिए 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 स्थानिक लिंक




  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 LAST_INSERT_ID() एकाधिक रिकॉर्ड INSERT कथन के साथ प्रयोग किया जाता है

  2. श्रेणी, उपश्रेणी और संबंधित पुस्तकों के लिए डिज़ाइन डेटाबेस

  3. पसंदीदा MySQL उपकरण

  4. पीएचपी पीडीओ:एक बयान को फिर से तैयार करना प्रदर्शन को कैसे प्रभावित करता है

  5. डेटा को अलग-अलग श्रेणियों में समूहित करने के लिए MySQL क्वेरी