在多边形中寻找点

时间:2018-08-09 00:59:44

标签: postgresql postgis

我有一个数据库,其中包含一个企业地址表(ca_licenses)和市议会区多边形的公共模式(ca_la_la_council)中的第二个表。

我正在运行此查询,以将市议会中的区号放置在公司地址表中:

UPDATE poursafe.ca_licenses dst
SET prem_council = div_city
FROM public.ca_la_la_council src
WHERE st_within(dst.geom,src.geom) AND dst.geom&&src.geom;

我的问题是我一直得到零结果。两个geom列均为几何类型,SRID为4326。

#create poursafe.ca_licenses table

CREATE TABLE ca_licenses (
id INTEGER,
license VARCHAR,
lat DOUBLE PRECISION,
lon DOUBLE PRECISION,
geom GEOMETRY,
prem_council VARCHAR
);

#create public.ca_la_la_council table

CREATE TABLE ca_la_la_council (
gid INTEGER,
div_city VARCHAR,
shape_leng NUMERIC,
shape_area NUMERIC,
geom GEOMETRY
);

ca_licenses数据示例:https://raw.githubusercontent.com/PourSafe/data_samples/master/ca_licenses.csv

ca_la_la_council数据示例:https://raw.githubusercontent.com/PourSafe/data_samples/master/ca_la_la_council.csv

我需要用理事会区号'div_city'填充ca_licenses表列'prem_council'。为此,我运行上面的查询,查找ca_licenses点位于哪个议会区域。

我为public.ca_la_la_district表创建了spatial_ref_sys表,但是对于ca_licenses表却没有space_ref_sys表。我也需要一张桌子吗?我相信两个geom列的SRID都设置为4326。

我在centos 7设置上使用postgis 2.4.4和postgres 9.2。

1 个答案:

答案 0 :(得分:0)

第一

我想推荐您检查QGIS

wine完美结合 在linux机器上

将多边形文件加载到qgis中后,您的代码没有任何问题 这是shapefile结构

enter image description here

然后我加载了点文件

enter image description here

问题在于它们之间没有任何交集,原因可能是这些点的构造错误。

(粉红色的小圆点是 ca_licenses.csv 点)

根据我的经验,最后最好的方法是使用ST_INTERSECT

select * from ca_licenses join ca_la_la_council on st_intersects(ca_licenses.geom,ca_la_la_council.geom)
相关问题