0

我已经为自己构建了一个跟踪器,出于安全原因,作为规范的一部分,我不希望人们知道我把车放在哪里过夜。

所以我有一个禁区的概念,我的网络地图只显示所述禁区之外的数据,但我也只想在传输时保存不在禁区内的数据(可能有多个,所以我正在考虑子查询

谁能帮忙?

有可能,如果不是最好的,这是一个存储过程,任何想法(我对子查询没用,因此问)

因此,我用来获取数据(追溯禁区)的 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))
4

1 回答 1

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

于 2013-10-31T03:26:26.173 回答