POSTGIS:错误:在混合SRID几何上运行。试图用两个不同的SRIDS /表找到重叠的geoms

时间:2013-11-27 01:40:11

标签: sql transform postgis intersect srid

POSTGIS_VERSION = 2.1;

我有两个表有两个不同的SRID。我的目标是显示TABLE_B中哪些geoms与TABLE_A中的某个区域相交。

SELECT tablebname, a.geom FROM TABLE_B as a INNER JOIN (SELECT geom FROM TABLE_A WHERE tableAID = '00001') as b ON ST_Intersects(a.geom, b.geom);

我的表格结构(截断)如下

TABLE_A
文本表帮助
几何geom(SRID = 3577)

表-B
文本表格 几何geom(SRID = 4326)

我尝试使用ST_TRANSFORM(geom,3577)转换geoms但我仍然得到相同的错误“ERROR:在混合SRID几何上操作。”

使用以下命令
select distinct(ST_SRID(geom)) as srid, count(*) from tableA group by srid;

我得到以下

srid | count
3566 | 2196
     |   18

我尝试将最后的18改为3577是徒劳的。每次我更新SRID时,它都说成功或没有找到任何SRID<> 3577。

任何帮助都会得到满足。我可以根据需要提供更多细节。感谢。

1 个答案:

答案 0 :(得分:1)

如果没有子查询,更正表别名并使用转换,这是否有效?

SELECT b.*, a.*
FROM table_b AS b
INNER JOIN table_a AS a ON
  tableaid = '00001' AND ST_Intersects(ST_Transform(a.geom, 4326), b.geom);

另请注意,在原始查询中,您会混淆TABLE_B as a,这可能会解释您尝试使用ST_Transform失败的原因,因为它没有转换预期的a.geom列。此外,没有这样的PostGIS 9.1版本,所以我猜你有2.x.如果使用typmods设置(例如,geometry(Polygon, 4326)),则这些不能具有混合SRID。