将一组地理点分类的最有效方法是什么?

时间:2015-07-08 23:57:30

标签: c# algorithm geolocation coordinates binning

术语(复数):

  • Binning:在基于地图的UI中,分箱的目的是帮助使用户更容易看到空间数据。不是单独渲染每个地理点,而是更容易消化“垃圾箱”。 (例如六边形或矩形形状,如下例所示),而不是更简单的信息(例如,bin包含的点数)。

我正在尝试将一组地理点分开(例如:http://a.tiles.mapbox.com/v3/devseed.map-hw6ew799/page.html#9/-0.3246/35.8887)。我不确定我的方法是否是最有效的实施方案。关于我的算法的思考'或指针将不胜感激。

我将在C#中实现它。

假设我有一个csv,其中每一行都是(latlonpoint。我阅读了n个,并且必须在二进制文件中渲染这些points,以便在地图上更轻松地查看数据。

对于这个实现,我将尝试将points分成矩形形状(因此示例中的内容除了更多的方形y,因为它更简单的计算)。这是:

  1. 确定总共4个不同值的最大和最小纬度和经度。这些值将形成我所有可能的bounding box的总体points费用: n => O(n) using a循环, where n is the number of点`我读过。

  2. 获得上述4个值后,我会将此大bounding box细分为HashMap,从单个点映射到相应的迷你边界box object(将包含以下信息:它包含哪些具体点,point countbounds等等。 费用: a * b => O(a * b),其中a是构建单个bounding box所需的时间,而bbounding boxes构建的数量

  3. 然后,重新遍历points列表,将每个点散列到其各自的边界框。 费用: n => O(n),其中n是点数。

  4. 总和费用(如果我这样做的话): O(n + b)

    这是最有效的算法吗?

    谢谢!

0 个答案:

没有答案