地理现象和地理要素的表达通常是多尺度的,尺度表示了地物的综合程度和位置精度,衡量尺度的概念一般用分辨率或比例尺。
分辨率 在GIS中所提到的分辨率,也称地面分辨率(Ground Resolution)或空间分辨率(Spatial Resolution),表示一个像素(pixel)代表的地面实际距离。 以谷歌地图为例:在缩放级别为 1 时,图片大小为4个 256*256 的图片,那么赤道上的空间分辨率为:地球赤道周长(实地距离)除以256*2(像素大小)。其他纬度上的分辨率则为:纬度圈长度/512。 因此可以看出,分辨率取决于两个参数:纬度和缩放级别。缩放级别决定了像素的多少,纬度决定了地面距离的长短。 因此谷歌地图某视图下的分辨率计算公式为(单位:米/像素):
F(X,Y):地图分辨率;
X:纬度值;
Y:缩放级别;
R:常量 6378137,表示地球半径,单位:米。
比例尺 比例尺通常以比率(如 1:10000 )来表示,表示图上距离与实地距离之比。例如 1:10000 表示图上 1cm 代表实际距离 10000cm,即100米。 由于比例尺起源较早,通常用(纸质)图上的距离衡量实际距离;而分辨率则通常用设备屏幕上的距离来衡量实际距离。而同一个地图视图,尺度是唯一的,比例尺和分辨率只不过是两种表示方法,因此它们是一一对应的。 比例尺与分辨率之间的换算公式如下:
Scale:地图比例尺;
Resolution:地图分辨率;
PPI:每英寸的像素点数。
其中 PPI,即 Pixel per Inch,即每英寸的像素点数(在不混淆情况下,也有用 DPI 来表示该参数);0.0254 为英寸和米的转换常数。
由于比例尺和分辨率一一对应,因此比例尺也取决于纬度和缩放级别两个参数,并且还与 PPI 相关。仍旧以谷歌地图为例:当地图处于全幅状态时,上下移动地图,使得地图中心线处纬度发生变化,因此比例尺随之变化;同理,当地图处于不同的缩放级别时,地图比例尺同样也会发生变化。如图1 和图2分别为纬度和缩放级别的变化引起了比例尺的变化。注意:某一视图下的比例尺一般指地图中心点的比例尺。
图 1 图 2
图3和图4相比,在同一缩放级别下上下移动地图时,地图比例尺并未发生变化。这是由于缩放级别较大时,即地图处在较大比例尺状态,地图上下平移,所造成的纬度变化非常小,因此比例尺就基本相等。
图 3 图 4
那么,在 SueperMap iClient 产品中 Map 和 Layer 对象同时拥有比例尺和分辨率属性,该如何进行选择呢?
如果您选择 SuperMap 系列服务器产品作为地图数据的提供者,在此建议您使用 Map 与 Layer 中的比例尺相关属性(比如 Scale、Scales 等),因为 SuperMap 服务器产品直接提供了相关地图的比例尺功能。 如果您选择的服务器产品并没有直接提供比例尺,或者是在 WMS 这类标准服务中未涉及比例尺参数的情况下,建议选择分辨率属性(比如 Resolution、Resolutions 等)。 这是因为比例尺可以与用户屏幕相关,而分辨率则是完全无关的。图5 和图1 展示的地图是同一缩放级别,却显示了不同的比例尺(注意图的右下角)。原因就在于两幅图来源的用户电脑屏幕分辨率不同,屏幕分辨率的不同导致了 PPI 的变化,从计算比例尺的公式可以看出,比例尺必然发生变化。但分辨率不会变化,因为在该缩放级别下,赤道周长仍旧没变,图片也仍旧是 512*512 像素,因此可知分辨率与屏幕分辨率没有关系。
图 5 不同屏幕分辨率下的截图
另外,在 WMS 图层参数中有 bbox、height 和 width 这三个参数可唯一确定所请求的地理视图范围与缩放级别。bbox 指可视的地理范围,由4个边界值可确定中心点,而 bbox 的宽度(实地距离)除以 width(图片距离)即是 Resolution(分辨率)。但是没有 PPI,是不能确定 Scale (比例尺)的。换句话说,由 Resolution、Center、Width、Height 可唯一确定可视范围,但 Sclae无法确定。而在利用 SuperMap 服务器提供的服务时,由 Sclae、Center 参数(宽和高一般都有默认值)可确定唯一的可视范围。这其中的原因是,SuperMap 服务器默认使用了 96 PPI(以下称为 DPI)。有经验的用户会发现,在改变了屏幕的分辨率时,用同样的 Sclae、Center 请求的图片显示是相同的。当然也可通过修改 SuperMap 服务器配置文件修改 DPI 大小,或指定 DPI 值是否与用户屏幕分辨率相关。配置文件路径:[SuperMap iServer 7C 安装路径]\support\objectsjava\bin\SuperMap.xml;其中 <CustomDPIEnable>TRUE</CustomDPIEnable>指定 DPI 是否与用户屏幕分辨率相关;当 CustomDPIEnable 为 true 时,<CustomDPIX>96</CustomDPIX>、<CustomDPIY>96</CustomDPIY>用于指定X/Y方向 DPI 的固定大小,默认为 96。