我有了超过15000行的表之间的距离。POSTGIS计算积分
该表具有locationID,的isEmpty,经度和纬度领域。
欲计算每个点之间的距离具有的isEmpty场= 1,其它并插入到结果使用POSTGIS新表。
请指教一下是编写执行这一要求
我有了超过15000行的表之间的距离。POSTGIS计算积分
该表具有locationID,的isEmpty,经度和纬度领域。
欲计算每个点之间的距离具有的isEmpty场= 1,其它并插入到结果使用POSTGIS新表。
请指教一下是编写执行这一要求
好了,解释为由于SQL语句的最佳实践 - 现在它更清晰。
在POSTGIS你不必计算所有跋涉去寻找其他的点多少有一些距离。
添加扩展数据库
CREATE EXTENSION postgis;
现在加上几何类型的列
ALTER TABLE mytable ADD COLUMN geom geometry;
你需要一些指标来
CREATE INDEX mytable_geom_idx ON mytable USING gist(geom);
现在填充新列
UPDATE mytable SET geom = ST_SetSRID(ST_MakePoint(lon, lat),4326);
现在查询:
Select a.locationID, count(*)
from mytable a
join mytable b on a.locationID!=b.locationID
and ST_Dwithin(a.geom::geography,b.geom::geography,152)
where a.isEmpty=1
group by 1;
ST_DWithin与地理类型正在距离米,152米〜500英尺
我没有测试它,所以如果有东西不行,请给我写评论
你需要欧氏距离或路由吗?如果首先它是一个简单连接的情况,但是...每个isEmpty = 1与其他所有其他isEmpty = 1或isEmpty = 1与所有其他人?您可以修改表格,还是必须对现有数据执行此操作而无需进行修改?当然你知道15k^2-15k =〜225M记录?你真的需要这些数据?也许这会更好地数数'点播'?如果你需要路由这个数据将至少计算几个月(使用强大的服务器) – Jendrusk
@jendrusk isEmpty有值0或1记录与1值是约2000记录,我需要计算每个点之间的距离与hasEmpty = 1与所有其他点,因为我需要知道每个点与isEmpty = 1多少其他点500英尺内 – Eyla
是的我可以修改表 – Eyla