我已经建立了自己的跟踪器,作为规范的一部分,我出于安全原因给出了自己,我不希望人们知道我的车在哪里过夜。
所以我有一个排除区域的概念,我的网页地图只显示除了禁区之外的数据,但我也只想在不在禁区内传输时保存数据(可能有不止一个,所以我可以思考子查询
任何人都可以帮忙吗?
有可能,如果不是可取的,这是一个存储过程,任何想法(当涉及子查询因此要求时我没用)
因此我用来获取数据的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))
答案 0 :(得分:1)
例如,此代码返回来自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