POSTGIS TopologyException: side location conflict
I found a relevant solution to my problem.
select st_intersects(st_buffer('MULTIPOLYGON(((1 5,4 8,7 5,4 2,1 5)),((5 5,8 8,11 5,8 2,5 5)))',0),'POLYGON((3 4.5,3 5,4 5,4 4,3 4.5))');
When i added the st_buffer
it merge the two polygons of the multipolygon to one and solved the issue.
you can check that the MultiPolygon geometry in your query is not a valid MultiPolygon:
=> select st_isvalid( st_geomfromtext( 'MULTIPOLYGON(((1 5,4 8,7 5,4 2,1 5)),((5 5,8 8,11 5,8 2,5 5)))'));NOTICE: Self-intersection at or near point 6 6 st_isvalid------------ f(1 row)
the reason for this is that the Polygon (5 5,8 8,11 5,8 2,5 5)
defining the "hole" (inner ring) intersects the outer ring (1 5,4 8,7 5,4 2,1 5)
.
It would be either necessary to fix the input manually, or one can use ST_MakeValid
to do the job (it automatically detects and handles the overlapping parts):
=> select st_intersects( st_makevalid( 'MULTIPOLYGON(((1 5,4 8,7 5,4 2,1 5)),((5 5,8 8,11 5,8 2,5 5)))' ), 'POLYGON((3 4.5,3 5,4 5,4 4,3 4.5))'); st_intersects --------------- t(1 row)