繁体   English   中英

st_within作为插入条件

[英]st_within as a condition of insert

我已经为自己打造了一个追踪器,出于安全原因,我给自己定了规格,我不想让人们知道我整夜离开汽车的地方。

所以我有一个排除区域的概念,我的网络地图只显示了在所述排除区域之外的数据,但是我也只想保存在排除区域内不存在的数据(可能有多个,所以我在考虑子查询)

有人可以帮忙吗?

可能(如果不是可取的话)将其作为存储的proc,则可能有任何想法(当涉及子查询时,我毫无用处,因此询问)

因此,我用来获取数据的SQL(追溯排除区)

SELECT geom 
FROM public.data 
WHERE layer = %layer_id% and not exists(
     SELECT * 
     FROM public.exclusion_zone 
     WHERE layer = %layer_id% and ST_CONTAINS(the_geom, geom))

例如,此代码从public.data返回所有几何形状(例如,点),但它们并不完全在public.exclusion_zone几何形状(例如,多边形)内部:

SELECT *
FROM public.data 
WHERE the_geom NOT IN (
    SELECT d.the_geom 
    FROM public.data d, public.exclusion_zone e
    WHERE ST_Within (d.the_geom, e.the_geom)
);

甚至更好(假设具有整数ID的操作比比较几何要快):

SELECT * FROM public.data
WHERE id NOT IN (
    SELECT d.id 
    FROM public.data d, public.exclusion_zone e
    WHERE ST_Within (d.the_geom, e.the_geom)
);

查看更多: ST_Within

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM