地图比例尺的计算(转)
地图比例尺的计算 地图上的线段长度与实地相应线段长度之比即为比例尺。它表示地图图形的缩小程度,如1∶10万,即图上1厘米长度相当于实地100000厘米(即1000米)。严格讲,只有在表示小范围的大比例尺地图上,由于不考虑地球的曲率,全图比例尺才是一致的。通常绘注在地图上的比例尺称为主比例尺。在地图上,只有某些线或点符合主比例尺。比例尺与地图内容的详细程度和精度有关。一般讲,大比例尺地图,内容详细,几何精度高,可用于图上测量。小比例尺地图,内容概括性强,不宜于进行图上测量。(来源:百度百科)
1 如何计算地图的比例尺
下面是计算比例尺的公式
scale =(map units / pixel) * (pixels / inch on display surface) * ( display surface units / map unit)
(map units / pixel)为每个像素对应的地图单位,即地图的分辨率(resolution)
(pixels / inch on display surface)即为DPI跟显示设备有关,一般为96
( display surface units / map unit) 为一个单位之间的转换,表示一个地图单位对应的显示设备上的单位数
例如计算WGS84下面某个地图分辨率下面的比例尺:
double PIXELS_PER_METER = 3779.53;
double EARTH_RADIUS_IN_METERS = 6371000;
double METERS_PER_DEGREE = Math.PI * 2 * EARTH_RADIUS_IN_METERS / 360;
double PIXELS_PER_DEGREE = PIXELS_PER_METER * METERS_PER_DEGREE;
首先定义每米对应的像素值PIXELS_PER_METER,这是个常数,等于3779.53(在椭球参数固定的情况下,采用不同的椭球,常数值不同)
然后定义椭球半径EARTH_RADIUS_IN_METERS,同样也是个常量,等于6371000。
下面计算一度对应多少米
METERS_PER_DEGREE = Math.PI * 2 * EARTH_RADIUS_IN_METERS / 360;
最后计算一度对应的像素值
double PIXELS_PER_DEGREE = PIXELS_PER_METER * METERS_PER_DEGREE;
在上面的计算中,并没有上面公式中提到的dpi,因为在PIXELS_PER_METER已经包含了dpi
PIXELS_PER_METER = DPI *INCH_PER_METER
scale = Resolution *DPI *INCH_PER_METER* METERS_PER_DEGREE
其中INCH_PER_METER* METERS_PER_DEGREE为( display surface units / map unit)
最终可以这么来表示
scale = Resolution* PIXELS_PER_DEGREE;
2什么时候需要用到这个公式
在ArcGISAPI forSilverlight中指提供了ZoomToResolution的方法漫游到指定的分辨率,但这个方法对于用户来说很不友好,用户很难确定当前地图的分辨率,但用户很清楚想漫游到的比例尺,因此可以使用上面的公式将比例尺转换为分辨率进行漫游。
参考资料:
http://forums.esri.com/Thread.asp?c=158&f=2455&t=279058