0

POSTGIS_VERSION=2.1;

我有两个具有两个不同 SRID 的表。我的目标是显示 TABLE_B 中的哪些几何与 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
文本表格辅助
几何图形 (SRID=3577)

TABLE_B
文本 tableBid
几何 geom (SRID=4326)

我尝试使用 ST_TRANSFORM(geom, 3577) 转换几何,但我仍然收到相同的错误“错误:对混合 SRID 几何进行操作”。

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

我得到以下

srid | count
3566 | 2196
     |   18

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

任何帮助都将不胜感激。我可以在需要时提供更多详细信息。谢谢。

4

1 回答 1

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。

于 2013-11-27T20:23:52.987 回答