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。
任何帮助都会得到满足。我可以根据需要提供更多细节。感谢。
答案 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。