【发布时间】:2021-02-13 20:30:10
【问题描述】:
我的 PostgreSQL 数据库函数有问题。
我正在尝试使用 PostGIS 工具计算两个地理点之间的距离。这两个点在不同的表中,这两个表之间的 KEY 是 site_id 列。
sites表结构为:
CREATE TABLE sites(
site_id INT,
site_name text,
latitude float ( 6 ),
longitude float ( 6 ),
geom geometry
);
dots表结构为:
CREATE TABLE dots(
dot_id INT,
site_id INT,
latitude float ( 6 ),
longitude float ( 6 ),
rsrp float ( 6 ),
dist INT,
project_id INT,
dist_from_site INT,
geom geometry,
dist_from_ref INT;
);
计算距离的函数适用于小表,但不适用于 50K 行。
UPDATE dots
SET dist_from_site = t.my_dist
FROM (
SELECT dots.site_id, ROUND(100*ST_Distance(dots.geom, sites.geom)) my_dist
FROM dots
INNER JOIN sites on dots.site_id = sites.site_id
WHERE sites.site_id = dots.site_id AND dots.dist_from_site is NULL
) t
WHERE dots.site_id = t.site_id AND dots.dist_from_site is NULL;
知道如何解决运行时问题并使 PGDB 不会卡住吗?
餐桌图片:
【问题讨论】:
标签: mysql postgresql postgis