术语(复数):
我正在尝试将一组地理点分开(例如:http://a.tiles.mapbox.com/v3/devseed.map-hw6ew799/page.html#9/-0.3246/35.8887)。我不确定我的方法是否是最有效的实施方案。关于我的算法的思考'或指针将不胜感激。
我将在C#中实现它。
假设我有一个csv,其中每一行都是(lat
,lon
)point
。我阅读了n
个,并且必须在二进制文件中渲染这些points
,以便在地图上更轻松地查看数据。
对于这个实现,我将尝试将points
分成矩形形状(因此示例中的内容除了更多的方形y,因为它更简单的计算)。这是:
确定总共4个不同值的最大和最小纬度和经度。这些值将形成我所有可能的bounding box
的总体points
。 费用: n => O(n) using a
循环, where
n is the number of
点`我读过。
获得上述4个值后,我会将此大bounding box
细分为HashMap
,从单个点映射到相应的迷你边界box object
(将包含以下信息:它包含哪些具体点,point
count
,bounds
等等。 费用: a * b => O(a * b),其中a
是构建单个bounding box
所需的时间,而b
是bounding boxes
构建的数量
然后,重新遍历points
列表,将每个点散列到其各自的边界框。 费用: n => O(n),其中n
是点数。
总和费用(如果我这样做的话): O(n + b)。
这是最有效的算法吗?
谢谢!