#1 楼
它不适用于“不相交”的原因是您只能成对比较几何;脱节将存在相同的问题。即使每个房屋点与一个地块相交,它们也将不相交。Underdark的建议没有这个问题。还有另一个技巧可能会更有效地使用索引: 。
这里需要的索引是空间索引和宗地中gid的索引(假设宗地表中的id也称为gid)。
评论
非常感谢你! Nicklas完全正确,因为ST_Disjoint将不会产生正确的结果。正如他指出的那样,ST_Disjoint返回所有要素,因为每个点都与表中的某些宗地多边形分离,而此代码段给了我希望的结果。
– RyanKDalton
2010-12-17在0:16
该查询的计划与此gis.stackexchange.com/a/136177/6052相同,因此,这纯粹是您喜欢的样式问题。 =)对于那些购物答案。
–埃文·卡洛尔(Evan Carroll)
18年1月5日在18:00
#2 楼
您可能正在寻找ST_DisjointST_Disjoint —如果几何不“空间
相交”-如果它们不共享任何空间,则返回TRUE。 br />
评论
尽管ST_Disjoint这样做,但是它不使用空间索引。您将要等待很长一段时间
–尼克
15年6月12日在13:19
#3 楼
如果没有专门功能:CREATE table t_intersect AS
SELECT
hp.gid,
hp.st_address,
hp.city,
hp.st_num,
hp.the_geom
FROM
public.housepoints as hp
WHERE
hp.gid NOT IN
(
SELECT
h.gid
FROM
public.parcel as p,
public.housepoints as h
WHERE
ST_Intersects(h.the_geom,p.the_geom)
) AS foo
#4 楼
在这里我们使用NOT EXISTS
和CREATE TABLE AS SELECT
(CTAS)CREATE table t_intersect
AS
SELECT
hp.gid,
hp.st_address,
hp.city, hp.st_num,
hp.the_geom
FROM public.housepoints AS hp
WHERE NOT EXISTS (
SELECT 1
FROM public.parcel AS par
WHERE ST_Intersects(hp.the_geom,par.the_geom)
);
#5 楼
ST_Disjoint怎么样? —如果几何不“空间相交”-如果它们不共享任何空间,则返回TRUE。评论
糟糕-在回答之前需要刷新页面:-)
–伊恩·特顿♦
2010-12-16 22:07
#6 楼
在某些情况下使用LATERAL JOIN非常有用,它可以非常快它看起来应该像
SELECT * FROM houses h
LEFT JOIN LATERAL (
SELECT True t FROM parcels p
WHERE ST_Intersects(p.geom, h.geom)
LIMIT 1
) p ON True
WHERE p.t IS NULL;
#7 楼
只需在ST_Intersects之前使用NOT即可完成操作:这将获取不在#62邻域内的所有地址:的几何列-多边形第一,第二点,这与ST_Intersects的通常用法相反。一直想知道如何正确执行此操作!
评论
还为“ NOT ST_Within”工作。我的查询在〜30.0秒内完成了NOT ST_Within和使用外部联接的操作,然后在右侧检查Null,因此似乎没有任何性能损失。谢谢!
–内特·万纳(Nate Wanner)
17年1月26日在17:57
@NateWanner很高兴认识!我不敢相信那是多么容易和快捷!
– DPSSpatial
17年1月26日在18:22
这实际上是一个非常糟糕的主意,因为您正在获得笛卡尔积
–埃文·卡洛尔(Evan Carroll)
18年1月3日,下午2:05
@EvanCarroll是什么意思?
– DPSSpatial
18年5月5日在16:46
这意味着,如果您不仅获得1个denver.address,还为每个不匹配的denver.neighborhood获得一个。
–埃文·卡洛尔(Evan Carroll)
18年1月5日在17:07
#8 楼
这可能不是最快的解决方案...但是我通常只是通过结合其他表的所有功能来作弊。如果not_in_here表不是没那么复杂。
评论
那从来都不是活泼的。如果not_in_here很复杂,它不会变得那么卑鄙。 ;)
–埃文·卡洛尔(Evan Carroll)
18年1月5日在17:17
评论
我有相同的思考过程,以为NOT也会像其他任何有条件的情况一样发挥作用