【发布时间】:2020-05-31 08:14:38
【问题描述】:
我有两张表,一张在 SRID 4326(包含MULTIPOLYGON),另一张在 SRID 32188(包含MULTILINESTRING)。
我正在尝试从t1 中选择与t2 中的任何线相距100 米以内的所有多边形。
这是我正在做的查询:
SELECT * FROM table1 AS t1, table2 AS t2
WHERE ST_DWithin(
ST_Transform(t1.geom, 3857),
ST_Transform(t2.geom, 3857),
100);
不幸的是,它不起作用,并且 pgAdmin4 没有给我一个有用的错误。相反,它会在我运行查询后立即与数据库断开连接(因此这不是超时情况):
我也尝试过使用同一个 SRID 中的两个表,但我仍然遇到问题...我在这里做错了什么?
编辑:为了尝试缩小问题的范围,我接受了@JGH 的建议,并对其进行了调整,以针对一个点而不是 table2 的多线串测试 ST_DWITHIN,它工作正常。
SELECT * FROM table1 t1
WHERE EXISTS (
SELECT FROM table2 t2
WHERE ST_DWithin(t1.geom, ST_MakePoint(-73.63,45.52)::geography,100)
);
但是,我使用仅包含一条直线的 table2 进行了测试(尽管仍然是多线串几何),但客户端崩溃了。会不会和这个有关:https://gis.stackexchange.com/questions/31923/why-is-the-database-connection-lost-on-every-query?
【问题讨论】:
-
你应该添加 postgres 标签。
标签: postgresql postgis