我正在寻找一种GIS/几何算法:
我有1000个点随机分布在一个很大的区域(比如一个城市),我如何找出所有超过15个点的小区域?如下图所示:
每个点都有自己的纬度和经度坐标。小于200米x 200米的小面积。
发布于 2011-04-26 12:09:32
你应该看看RTREE结构。请参阅http://en.wikipedia.org/wiki/R-tree
你已经在SQlite3引擎中实现了这样的算法。请参阅http://www.sqlite.org/rtree.html
我们的开源版本已经包含了Delphi6到XE,compiled by default since rev. 1.8的RTREE扩展。
发布于 2011-04-27 03:58:10
不确定您的性能要求是什么。但是,对于每个点,一个天真的实现是将到所有其他点的距离的倒数相加:
for i := 0 to 999 do
for j := 0 to 999 do
if i<>j then
Point[i].Score := Point[i].Score + ( 1 / Distance(Point[i], Point[j]) );
每个累积区中心附近的点将具有最高分数。
https://stackoverflow.com/questions/5789909
复制相似问题