आप उपयोग कर सकते हैं
SELECT POINT_LOCATION
FROM LOCATIONS_TABLE
WHERE ST_Contains(ST_GEOMFROMTEXT('POLYGON((P1.X P1.Y, P2.X P2.Y, ...))'), LOCATIONS_TABLE.POINT_LOCATION);
नोट:बहुभुज बंद होना चाहिए (अर्थात अंतिम निर्देशांक ==प्रथम निर्देशांक)। दूसरा पैरामीटर POINT_LOCATION आपकी बिंदु तालिका में ज्यामिति स्तंभ होना चाहिए।
अद्यतन:मैंने अपने पीजी डेटाबेस में आपके चरणों को फिर से चलाने की कोशिश की है। मैंने 2 टेबल बनाए, LOCATIONS_TABLE (id, geom) और POLYGON (id, geom)। उसके बाद मैंने LOCATIONS_TABLE को 2 अंकों से भर दिया
SRID=4326;POINT(-103.4955 20.723544)
SRID=4326;POINT(-103.496956 20.722446)
उसके बाद मैंने पॉलीगॉन टेबल में पॉलीगॉन डाला
SRID=4326;POLYGON((-103.305496375 20.8527356811533,-103.0810348125 20.6129741620855,-101.6261045 20.5375321062668,-99.8356786875 20.3958770270624,-99.803065375 22.0572706994358,-99.649948125 28.9186361984516,-121.1212769375 8.69559423007209,-103.305496375 (...)
मैंने qgis में स्थिति की कल्पना की, नीचे चित्र देखें:
जैसा कि आप देख सकते हैं, 2 बिंदु बहुभुज के अंदर हैं। इसलिए मैंने मैन्युअल रूप से बहुभुज के बाहर एक बिंदु बनाया। उसके बाद, आप निम्न sql क्वेरी का उपयोग करके देख सकते हैं कि क्या बिंदु बहुभुज के अंदर हैं:
SELECT ST_Contains(polygon.geom, point.geom)
FROM public."LOCATIONS_TABLE" point, public."POLYGON" polygon
यह अंदर के 2 बिंदुओं के लिए t लौटाता है और तीसरे बिंदु के लिए गलत है।