हो सकता है कि यह एक ओवरकिल हो, लेकिन यदि आप postgres का उपयोग कर रहे हैं आप postgis इंस्टॉल कर सकते हैं स्थानिक डेटा का प्रबंधन करने के लिए विस्तार। फिर एक irb . में आप ऐसा कुछ कर सकते हैं:
result = ActiveRecord::Base.connection.execute('SELECT
ST_Contains(ST_SetSRID(ST_MakeBox2D(ST_Point(-0.489, 51.28), ST_Point(0.236, 51.686)), 4326),
ST_SetSRID(ST_Point(-0.1265, 51.483), 4326))')
ST_contains function का उपयोग करके यह जांच की जा रही है कि बिंदु दिए गए बॉक्स के अंदर है या नहीं
यह वापस आ जाएगा:
=> #<PG::Result:0x007fa517fcbe08 @connection=#<PG::Connection:0x007fa5167f8970 @socket_io=nil, @notice_receiver=nil, @notice_processor=nil>>
तब आप यह कर सकते हैं:
result.first
यह वापस आ जाएगा:
{"st_contains"=>"t"}
इस बिंदु के साथ -0.7265, 44.483 (बॉक्स के बाहर एक बिंदु) परिणाम होगा:
{"st_contains"=>"f"}
यदि आप कच्चे sql का उपयोग नहीं करना चाहते हैं तो आप स्थानिक डेटा को प्रबंधित करने के लिए रत्नों का उपयोग कर सकते हैं। एक बहुत अच्छा है:rgeo . मैं निर्माता के ब्लॉग को पढ़ने की सलाह देता हूं
rgeo का उपयोग करना आप अपने मॉडल के लिए "जियोटाइप" जैसे बिंदुओं, बहुभुजों आदि के साथ विशेषताओं को परिभाषित कर सकते हैं और फिर इसमें शामिल है?
मैं आपको एक जिस्ट देता हूं। पोस्टगिस install को स्थापित करने के लिए बहुत ही बुनियादी निर्देशों के साथ उबंटू के साथ।