postgresql - 在多边形中查找点
问题描述
我有一个数据库,其中包含一个商业地址表(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。
解决方案
第一的
我想建议你检查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)
推荐阅读
- regex - 正则表达式匹配字符串的结尾并捕获字符串结尾之前的部分 perl
- python - 如何在 language.code 中包含区域?
- typescript - 为什么即使我有评估数据的条件,打字稿也会对类型进行比较?
- python - 使用 Numba 的 @jit 导致数学与 Python 中使用的 Numpy 的 float32 不一致
- reactjs - 一次获取所有数据还是单独调用更好
- django - 如何修复 Reactjs、Django、Django Rest Frame 工作项目中的“net::ERR_CONNECTION_REFUSED 和错误:网络错误”错误
- c# - 我有一个很长的代码,我不太明白,请帮助将代码分解为更简单的语句
- php - 如何使用 php 语言将 HTML“类”属性转换为 css 选择器?
- pandoc-citeproc - pandoc-citeproc 作为 API:processCites' 不添加引用
- python-3.5 - ImportError:没有名为“yolo_utils”的模块