我有一个表格,其中的几何图形列(多边形和多面)使用srid 4326。
我想检查一个几何图形是否包含在另一个几何图形中。我有以下sql:
SELECT t2.name
FROM location_boundries t1
INNER JOIN location_boundries t2 ON ST_Contains(t1.geom, t2.geom)
AND t1.name = 'East Midlands'
但是我遇到以下错误:
Invalid GIS data provided to function st_within.
我什至开始麻烦解决这个问题?有什么想法我做错了吗?
*更新*
进行一些测试后,我发现一些异常行为。请在下面。
当我如下选择一条记录时,会引发上述错误,但是如果我包含多条记录,则没有错误。因此,如何执行查询似乎有些问题。
SELECT t2.name
FROM location_boundries t1
INNER JOIN (select * from location_boundries where id in (2656044) ) t2 ON
ST_Contains(t1.geom, t2.geom)
AND t1.name = 'East Midlands'
现在包含ID为2656044
的同一条记录如下,这次没有错误吗?
SELECT t2.name
FROM location_boundries t1
INNER JOIN (select * from location_boundries where id in (2656044, 11609027, 11609030) ) t2 ON
ST_Contains(t1.geom, t2.geom)
AND t1.name = 'East Midlands'
仅当我限制子查询中的一条记录而不管它在哪条记录上时,这种情况才会发生。