我在创业公司提出了这个问题
如果要求您设计Bing地图等地图,您如何估算空间复杂度?
我能想到的地图唯一的答案是,空间是恒定的,但我不确定我是否朝着正确的方向前进。
如何处理这样的问题?
答案 0 :(得分:1)
如果您查看地图服务的详细信息,您会发现它们有多个图层。对于每个图层,您可以根据源数据的分辨率及其覆盖的区域估算大小:
size = sum(foreach layer: layer.area * (layer.resolution)^2 * layer.elementsize)
卫星图像是最容易计算的,因为您需要在某些基本分辨率级别进行全球覆盖。但是你可以期待一些源材料专注于感兴趣的领域,比如航空摄影;这些可能是更高的分辨率,但总面积更小。
您需要保存缩小尺寸版本的全分辨率数据,以便方便地提供缩小显示。但是,这应该只占用全分辨率数据所需空间的一小部分。图像尺寸的每个因子减少2将使附加数据的尺寸减小4倍; 2倍image pyramid的额外大小将是全分辨率数据的1/3。
最后,您还需要地理信息,例如道路,地理区域和兴趣点。这些数据的大小自然非常有弹性,但您可以通过评估特定城市的商业地理数据库的大小以及按人口进行扩展来获得某种粗略估计。
答案 1 :(得分:0)
让我们说当用缩放0(可以看到整个行星)看地图时,地图被分成X图像。
然后你缩放到1,现在你有相同的X图像来显示当前区域,但这只是地图的一部分。假设您需要在缩放1中查看Y部分以“覆盖”整个行星。这意味着您应该查看X * Y图像。 Bing Maps有大约21个缩放级别,所以你应该有 X * 1 + X * Y + X * Y ^ 2 + ... + X * Y ^ 21 = X *(1 + Y + Y ^ 2 + ... + Y ^ 21)这导致估计O( X * Y ^ 21)。
另外,您应该考虑描述地址,道路,交通所需的一些数据。这可以通过使用一些统计数据来近似计算。