首页 > 解决方案 > 在多边形中查找点

问题描述

我有一个数据库,其中包含一个商业地址表(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 表创建一个 spatial_ref_sys 表。这张桌子也需要一个吗?我相信两个 geom 列的 SRID 都设置为 4326。

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

标签: postgresqlpostgis

解决方案


第一的

我想建议你检查QGIS

与linux 机器上的wine配合得很好

第二

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

在此处输入图像描述

然后我加载了点文件

在此处输入图像描述

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

(小粉红点是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)

推荐阅读