关于地图的缩放比例

一般在创建地图时会设置缩放级别,也就是zoom level,比如从1至23个级别,但这些级别是地图库(比如openlayers.js或mapbox.js或leaflet.js)内置的缩放比例,如果没有特殊要求,那么就使用默认就好,而如果需要自己指定每一级的缩放比例,那么常规的zoom level就不够用了。

这里就需要用到resolution,它是scale比例尺的变体。比如地图上1cm代表实际的10000cm,那么scale就是1:10000,简化为resolution就是10000,也就是地图上的一米代表实际的10km。

道理很简单,但实际使用时却有很多坑。比如使用openlayers.js时,由于地图是在电脑上显示的,宽高都是像素为单位,并不清楚像素与物理宽度的关系,openlayers.js定义的缩放比其实是像素值与现实距离米之间的比例。举例,如果是110像素宽代表了50海里,那么比值就是1852 * 50 / 110 = 842,写成代码就是this.view.setResolution(842)。

但有些软件就比较较真,比如mapserver,它的SCALEDENOM就是物理宽度的比值,首先它有个DPI值默认为72,表示一英寸多少像素点,然后英寸又是0.0254米,于是一像素的物理宽度就是1 / 72 * 0.0254 米,以上面的例子来看,比例就是 1852 * 50 / (110 * 1 / 72 * 0.0254) = 2386256,所以对应到mapserver里的scale就是2386256了。

总之在不同的软件里,比例尺的的定义不一样,计算方式就略有一不同。

 

发表于 7天前   评论:0   阅读:593  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo