I have polygons in a table and I'm fetching those that contain a specific point. The problem is that when I'm checking against a point which is really close (~5 meters) but is not contained within a polygon, it gets fetched nevertheless.
Steps to reproduce:
1.
create table zones ( zone_id int, zone_polygon polygon, description text ); create index zones__zone_polygon on zones using gist(zone_polygon poly_ops);
2. insert into zones (zone_polygon) values ('(37.6040241,55.7609641),(37.6240129,55.7519367),(37.6215344,55.7536616),(37.6172064,55.7559509),(37.6126178,55.7584013),(37.6088694,55.7622611),(37.60747,55.7633072),(37.6040241,55.7609641)');
4. Check whether a point is contained within a polygon: select count(1) from zones where zone_polygon @> '(37.617635,55.755814)'::polygon; count ------- 1 (1 row)
First of all, you could reduce your large example to a smaller one: select '(37.6220129,55.7519367),(37.6215344,55.7536616),(37.6172064,55.7559509),(37.6220129,55.7519367)'::polygon @> '(37.617900,55.755814)'::point;
6. Just in case, here are the images.
The polygon:
And the point:
gnuplot could be used for easier visualization.
Am I doing anything wrong? Any idea how to fix that?