积累面积的计算

时间:2011-04-26 11:55:14

标签: c++ c delphi gis

我正在寻找GIS / Geometric算法:

我在一个大区域(例如城市)中随机分布了1000个点,如何查找超过15个点的所有小区域?如下图所示:

enter image description here

每个点都有自己的纬度和经度坐标。小面积小于200米x 200米。

2 个答案:

答案 0 :(得分:10)

你应该看看RTREE结构。 见http://en.wikipedia.org/wiki/R-tree

你已经实现了这样的算法,例如在SQlite3引擎中。 见http://www.sqlite.org/rtree.html

我们的开源版本已经包含了Delphi 6到XE的RTREE扩展,compiled by default since rev. 1.8

答案 1 :(得分:0)

不确定您的性能要求是什么。但是,对于每个点,一个天真的实现将总结与所有其他点的距离的倒数:

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]) );

每个积累区域中心附近的点数得分最高。