转自http://blog.sina.com.cn/s/blog_663d9a1f01017cyz.html
1、动态投影(ArcMap)
所谓动态投影指,ArcMap中的Data 的空间参考或是说坐标系统是默认为第一加载到当前工作区的那个文件的坐标系统,后加入的数据,如果和当前工作区坐标系统不相同,则ArcMap会自动做投影变换,把后加入的数据投影变换到当前坐标系统下显示!但此时数据文件所存储的数据并没有改变,只是显示形态上的变化!因此叫动态投影!表现这一点最明显的例子就是,在Export Data时,会让你选择是按this layer's source data(数据源的坐标系统导出),还是按照the Data (当前数据框架的坐标系统)导出数据!
2、坐标系统描述(ArcCatalog)
大家都知道在ArcCatalog中可以一个数据的坐标系统说明!即在数据上鼠标右键->Properties->XY Coordinate System选项卡,这里可以通过modify,Select、Import方式来为数据选择坐标系统!但有许多人认为在这里改完了,数据本身就发生改变了!但不是这样的!这里缩写的信息都对应到该数据的.aux文件!如果你去把该文件删除了,重新查看该文件属性时,照样会显示Unknown!这里改的仅仅是对数据的一个描述而已,就好比你入学时填写的基本资料登记卡,我改了说明但并没有改变你这个人本身!因此数据文件中所存储的数据的坐标值并没有真正的投影变换到你想要更改到的坐标系统下!但数据的这个描述也是非常重要的,如果你拿到一个数据,从ArcMap下所显示的坐标来看,像是投影坐标系统下的平面坐标,但不知道是基于什么投影的!因此你就无法在做对数据的进一不处理!比如:投影变换操作!因为你不知道要从哪个投影开始变换!因此大家要更正一下对 ArcCatalog中数据属性中关于坐标系统描述的认识!
3、投影变换(ArcToolBox)
上面说了这么多,要真正的改变数据怎么办,也就是做投影变换!在ArcToolBox->Data Management Tools->Projections and Transformations下做!在这个工具集下有这么几个工具最常用:
1、Define Projection
2、Feature->Project
3、Raster->Project Raster
4、Create Custom Geographic Transformation
当数据没有任何空间参考时,显示为Unknown!时就要先利用Define Projection来给数据定义一个Coordinate System,然后在利用Feature->Project或Raster->Project Raster工具来对数据进行投影变换!由于我国经常使用的投影坐标系统为北京54,西安80!由这两个坐标系统变换到其他坐标系统下时,通常需要提供一个Geographic Transformation,因为Datum已经改变了!这里就用到我们说常说的转换3参数、转换7参数了!而我们国家的转换参数是保密的!因此可以自己计算或在购买数据时向国家测绘部门索要!知道转换参数后,可以利用Create Custom Geographic Transformation工具定义一个地理变换方法,变换方法可以根据3参数或7参数选择基于GEOCENTRIC_TRANSLATION和 COORDINATE_方法!这样就完成了数据的投影变换!数据本身坐标发生了变化!当然这种投影变换工作也可以在ArcMap中通过改变Data 的Coordinate System来实现,只是要在做完之后在按照Data 的坐标系统导出数据即可!
方法一:
在Arcmap中转换:
1、加载要转换的数据,右下角为经纬度
2、点击视图——数据框属性——坐标系统
3、导入或选择正确的坐标系,确定。这时右下角也显示坐标。但数据没改变
4、右击图层——数据——导出数据
5、选择第二个(数据框架),输出路径,确定。
6、此方法类似于投影变换。
方法二:
在forestar中转换:
1、用正确的坐标系和范围新建图层aa
2、打开要转换的数据,图层输出与原来类型一致,命名aa,追加。
方法三:
在ArcToolbox中转换:
1、管理工具——投影(project),选择输入输出路径以及输出的坐标系
2、前提是原始数据必须要有投影
1、首先理解地理坐标系(Geographic coordinate system),Geographic coordinate system直译为 地理坐标系统,是以经纬度为地图的存储单位的。很明显,Geographic coordinate syst em是球面坐标系统。我们要将地球上的数字化信息存放到球面坐标系统上,如何进行操作 呢?地球是一个不规则的椭球,如何将数据信息以科学的方法存放到椭球上?这必然要求 我们找到这样的一个椭球体。这样的椭球体具有特点:可以量化计算的。具有长半轴,短 半轴,偏心率。以下几行便是Krasovsky_1940椭球及其相应参数。 Spheroid: Krasovsky_1940 Semimajor Axis: 6378245.000000000000000000 Semiminor Axis: 6356863.018773047300000000 Inverse Flattening(扁率): 298.300000000000010000 然而有了这个椭球体以后还不够,还需要一个大地基准面将这个椭球定位。在坐标系统描 述中,可以看到有这么一行: Datum: D_Beijing_1954 表示,大地基准面是D_Beijing_1954。 -------------------------------------------------------------------------------- 有了Spheroid和Datum两个基本条件,地理坐标系统便可以使用。 完整参数: Alias: Abbreviation: Remarks: Angular Unit: Degree (0.017453292519943299) Prime Meridian(起始经度): Greenwich (0.000000000000000000) Datum(大地基准面): D_Beijing_1954 Spheroid(参考椭球体): Krasovsky_1940 Semimajor Axis: 6378245.000000000000000000 Semiminor Axis: 6356863.018773047300000000 Inverse Flattening: 298.300000000000010000 2、接下来便是Projection coordinate system(投影坐标系统),首先看看投影坐 标系统中的一些参数。 Projection: Gauss_Kruger Parameters: False_Easting: 500000.000000 False_Northing: 0.000000 Central_Meridian: 117.000000 Scale_Factor: 1.000000 Latitude_Of_Origin: 0.000000 Linear Unit: Meter (1.000000) Geographic Coordinate System: Name: GCS_Beijing_1954 Alias: Abbreviation: Remarks: Angular Unit: Degree (0.017453292519943299) Prime Meridian: Greenwich (0.000000000000000000) Datum: D_Beijing_1954 Spheroid: Krasovsky_1940 Semimajor Axis: 6378245.000000000000000000 Semiminor Axis: 6356863.018773047300000000 Inverse Flattening: 298.300000000000010000 从参数中可以看出,每一个投影坐标系统都必定会有Geographic Coordinate System。 投影坐标系统,实质上便是平面坐标系统,其地图单位通常为米。地理坐标系统单位是度 那么为什么投影坐标系统中要存在地理坐标系统的参数呢? 这时候,又要说明一下投影的意义:将球面坐标转化为平面坐标的过程便称为投影。 好了,投影的条件就出来了: a、球面坐标 b、转化过程(也就是算法) 也就是说,要得到投影坐标就必须得有一个“拿来”投影的球面坐标,然后才能使用算法 去投影! 即每一个投影坐标系统都必须要求有Geographic Coordinate System参数。 3、我们现在看到的很多教材上的对坐标系统的称呼很多,都可以归结为上述两种投 影。其中包括我们常见的“非地球投影坐标系统”。): __________________ 大地坐标(Geodetic Coordinate):大地测量中以参考椭球面为基准面的坐标。地面点P的位置用大地经度L、大地纬度B和大地高H表示。当点在参考椭球面上时,仅用大地经度和大地纬度表示。大地经度是通过该点的大地子午面与起始大地子午面之间的夹角,大地纬度是通过该点的法线与赤道面的夹角,大地高是地面点沿法线到参考椭球面的距离。 方里网:是由平行于投影坐标轴的两组平行线所构成的方格网。因为是每隔整公里绘出坐标纵线和坐标横线,所以称之为方里网,由于方里线同时又是平行于直角坐标轴的坐标网线,故又称直角坐标网。 在1:1万——1:20万比例尺的地形图上,经纬线只以图廓线的形式直接表现出来,并在图角处注出相应度数。为了在用图时加密成网,在内外图廓间还绘有加密经纬网的加密分划短线(图式中称“分度带”),必要时对应短线相连就可以构成加密的经纬线网。1:2 5万地形图上,除内图廓上绘有经纬网的加密分划外,图内还有加密用的十字线。 我国的1:50万——1:100万地形图,在图面上直接绘出经纬线网,内图廓上也有供加密经纬线网的加密分划短线。 直角坐标网的坐标系以中央经线投影后的直线为X轴,以赤道投影后的直线为Y轴,它们的交点为坐标原点。这样,坐标系中就出现了四个象限。纵坐标从赤道算起向北为正、向南为负;横坐标从中央经线算起,向东为正、向西为负。 虽然我们可以认为方里网是直角坐标,大地坐标就是球面坐标。但是我们在一副地形图上经常见到方里网和经纬度网,我们很习惯的称经纬度网为大地坐标,这个时候的大地坐标不是球面坐标,她与方里网的投影是一样的(一般为高斯),也是平面坐标。
关于坐标系(大地坐标、平面坐标、投影、北京54、西安80、WGS84)的一些理解
先从简单说起,假设地球是正圆的,地球表面上的一点可以用经纬度来表示,这时的经纬度是唯一的。那什么情况下是不唯一的呢,就是地球不是正圆的时候。实际也是如此,地球本来就不是圆的,而是一个椭圆。关于这个椭圆并不是唯一的,比如克拉索夫斯基椭球,1975国际椭球等等。椭球的不同主要由两个参数来体现,一个是长半轴、一个是扁率。之所以会有不同的椭球体出现,是因为地球太大了,地球不是一个正椭球体,一个椭球体不可能都满足地球每个角落的精度要求,在一些边缘地带误差会很大,在赤道附近有适合赤道使用的椭球体,在极圈附近有适合极圈的椭球地,一切都是为了符合当地的精度需要。如果你有足够的需求也可以自定义一个椭球体。基于以上原因,这时经纬度就不是唯一的了,这个应该很好理解,当你使用克拉索夫斯基椭球体时是一对经纬度,当使用另外一个椭球体时又是另外一对经纬度。
用经纬度表示的是地理坐标系,也称大地坐标系。有时候用地理坐标系不够方便,人们比较习惯于使用平面坐标系,平面坐标系用xy表示。
把球体表面的坐标转成平面坐标需要一定的手段,这个手段称为投影。投影方法也不是唯一的,还是为了一个目的,务求使当地的坐标最准确。所以目前就存在了好多投影方法,比如高斯投影、墨卡托投影等。谁有本事而且有那方面的需求也可以自创一套投影方法。
接下来是关于WGS84 北京54 西安80的概念 首先有WGS84 北京54 西安80大地坐标系,是用经纬度表示的,也有WGS84 北京54 西安80平面坐标系,使用xy表示的。
WGS84的椭球采用国际大地测量与地球物理联合会第17届大会测量常数推荐值 北京54采用的是克拉索夫斯基椭球 西安80采用的是1975国际椭球 所以地球表面上一点的这三者大地坐标是不一样的,即经纬度是不一样的。
目前比较流行的是高斯- 克吕格投影和墨卡托投影,当然也可以用别的投影,看实际需要了。
涉及到不同坐标系,就会有坐标转的问题。关于坐标转换,首先要搞清楚转换的严密性问题,即在同一个椭球里的坐标转换都是严密的,而在不同的椭球之间的转换这时不严密的。例如,由1954北京坐标系的大地坐标转换到1954北京坐标系的高斯平面直角坐标是在同一参考椭球体范畴内的坐标转换,其转换过程是严密的。由1954北京坐标系的大地坐标转换到WGS-84的大地坐标,就属于不同椭球体间的转换。
不同椭球体间的坐标转换在局部地区的采用的常用办法是相似变换法,即利用部分分布相对合理高等级公共点求出相应的转换参数。一般而言,比较严密的是用七参数的相似变换法,即X平移,Y平移,Z平移,X旋转,Y旋转,Z旋转,尺度变化K。要求得七参数就需要在一个地区需要3个以上的已知点,如果区域范围不大,最远点间的距离不大于30Km(经验值),这可以用三参数,即X平移,Y平移,Z平移,而将X旋转,Y旋转,Z旋转,尺度变化K视为0,所以三参数只是七参数的一种特例。
如果不考虑高程的影响,对于不同椭球体下的高斯平面直角坐标可采用四参数的相似变换法,即四参数(x平移,y平移,尺度变化m,旋转角度α)。如果用户要求的精度低于20米,在一定范围(2'*2')内,就直接可以用二参数法(ΔB,ΔL)或(Δx,Δy)修正。但在实际操作中,这也取决于选取的公共点是否合理,并保证其足够的精度。
ArcGIS中的坐标系统定义与投影转换
坐标系统是GIS数据重要的数学基础,用于表示地理要素、图像和观测结果的参照系统,坐标系统的定义能够保证地理数据在软件中正确的显示其位置、方向和距离,缺少坐标系统的GIS数据是不完善的,因此在ArcGIS软件中正确的定义坐标系统以及进行投影转换的操作非常重要。
1. ArcGIS中的坐标系统
ArcGIS中预定义了两套坐标系统,地理坐标系(Geographic coordinate system)和投影坐标系(Projectedcoordinate system)。
1.1 地理坐标系
地理坐标系 (GCS) 使用三维球面来定义地球上的位置。GCS中的重要参数包括角度测量单位、本初子午线和基准面(基于旋转椭球体)。地理坐标系统中用经纬度来确定球面上的点位,经度和纬度是从地心到地球表面上某点的测量角。球面系统中的水平线是等纬度线或纬线,垂直线是等经度线或经线。这些线包络着地球,构成了一个称为经纬网的格网化网络。
GCS中经度和纬度值以十进制度为单位或以度、分和秒 (DMS) 为单位进行测量。纬度值相对于赤道进行测量,其范围是 -90°(南极点)到 +90°(北极点)。经度值相对于本初子午线进行测量。其范围是 -180°(向西行进时)到 180°(向东行进时)。
ArcGIS中,中国常用的坐标系统为GCS_Beijing_1954(Krasovsky_1940),GCS_Xian_1980(IAG_75),GCS_WGS_1984(WGS_1984),GCS_CN_2000(CN_2000)。
1.2 投影坐标系
将球面坐标转化为平面坐标的过程称为投影。投影坐标系的实质是平面坐标系统,地图单位通常为米。投影坐标系在二维平面中进行定义。与地理坐标系不同,在二维空间范围内,投影坐标系的长度、角度和面积恒定。投影坐标系始终基于地理坐标系,即:
“投影坐标系=地理坐标系+投影算法函数“。
我们国家的投影坐标系主要采用高斯-克吕格投影,分为6度和3度分带投影,1:2.5万-1:50万比例尺地形图采用经差6度分带,1:1万比例尺的地形图采用经差3度分带。具体分带法是:6度分带从本初子午线(prime meridian)开始,按经差6度为一个投影带自西向东划分,全球共分60个投影带,中国跨13-23带;3度投影带是从东经1度30分经线(1.5°)开始,按经差3度为一个投影带自西向东划分,全球共分120个投影带,中国跨25-45带。
在CoordinateSystems\Projected Coordinate Systems\Gauss Kruger\Beijing 1954目录中,我们可以看到四种不同的命名方式:
Beijing 1954 (Xian 1980) 3 Degree GK CM 117E
北京54(西安1980) 3度带无带号
Beijing 1954 (Xian 1980) 3 Degree GK Zone 25
北京54 (西安1980) 3度带有带号
Beijing 1954 (Xian 1980) GK Zone 13
北京54 (西安1980) 6度带有带号
Beijing 1954 GK Zone 13N
Xian 1980 GK CM 75E
北京54 (西安1980) 6度带无带号
注释:GK 是高斯克吕格,CM 是CentralMeridian 中央子午线,Zone是分带号,N是表示不显示带号。
2. ArcGIS中定义坐标系
ArcGIS中所有地理数据集均需要用于显示、测量和转换地理数据的坐标系,该坐标系在 ArcGIS 中使用。如果某一数据集的坐标系未知或不正确,可以使用定义坐标系统的工具来指定正确的坐标系,使用此工具前,必须已获知该数据集的正确坐标系。
该工具为包含未定义或未知坐标系的要素类或数据集定义坐标系,位于ArcToolbox—Data management tools—Projections andtransfomations—Define Projections
Input Dataset:要定义投影的数据集或要素类
CoordinateSystem:为数据集定义的坐标系统
3.基于ArcGIS的投影转换
在数据的操作中,我们经常需要将不同坐标系统的数据转换到统一坐标系下,方便对数据进行处理与分析,软件中坐标系转换常用以下两种方式:
3.1 直接采用已定义参数实现投影转换
ArcGIS软件中已经定义了坐标转换参数时,可直接调用坐标系转换工具,直接选择转换参数即可。工具位于ArcToolbox—Data management tools—Projections andtransfomations——Feature—Project(栅格数据投影转换工具 Raster—Project raster),在工具界面中输入以下参数:
Inputdataset:要投影的要素类、要素图层或要素数据集
OutputDataset:已在输出坐标系参数中指定坐标系的新要素数据集或要素类。
out_coor_system:已知要素类将转换到的新坐标系
GeographicTransformation:列表中为转换参数,以GCS_Beijing_1954转为GCS_WGS_1984为例,各转换参数含义如下:
Beijing_1954_To_WGS_1984_1 15918 鄂尔多斯盆地
Beijing_1954_To_WGS_1984_2 15919 黄海海域
Beijing_1954_To_WGS_1984_3 15920 南海海域-珠江口
Beijing_1954_To_WGS_1984_4 15921 塔里木盆地
Beijing_1954_To_WGS_1984_5 15935 北部湾
Beijing_1954_To_WGS_1984_6 15936鄂尔多斯盆地
3.2 自定义三参数或七参数转换
当ArcGIS软件中不能自动实现投影间直接转换时,需要自定义七参数或三参数实现投影转换,以七参数为例,转换方法如下:
3.2.1 自定义七参数地理转换
在ArcToolbox中选择Create CustomGeographic Transformation工具, 在弹出的窗口中,输入一个转换的名字,如wgs84ToBJ54。在定义地理转换方法下面,在Method中选择合适的转换方法如 COORDINATE_FRAME,然后输入七参数,即平移参数、旋转角度和比例因子,如图所示:
3.2.2 投影转换
打开工具箱下的Projections and Transformations>Feature>Project,在弹出的窗口中输入要转换的数据以及Output Coordinate System,然后输入第一步自定义的地理坐标系如wgs84ToBJ54,开始投影变换,如图所示完成投影转换:
作者:赵立超 邮箱:zhaolc@lreis.ac.cn
投影的心得点滴
Google Maps 地图投影全解析 Google Maps、Virtual Earth 等网络地理所使用的地图投影,常被称作 Web Mercator 或 Spherical Mercator,它与常规墨卡托投影的主要区别就是把地球 模拟为球体而非椭球体。建议先对地图投影知识做一个基本的了解,《地图投影 为什么》。 什么是墨卡托投影? 墨卡托(Mercator)投影,又名”等角正轴圆柱投影”,荷兰地图学家墨卡托 (Mercator)在 1569 年拟定,假设地球被围在一个中空的圆柱 里,其赤道与圆 柱相接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体上,再 把圆柱体展开,这就是一幅标准纬线为零度(即赤道)的”墨卡托投 影”绘制 出的世界地图。从球到平面,肯定有个转换公式,这里就不再罗列。 Google 们为什么选择墨卡托投影? 墨卡托投影的”等角”特性,保证了对象的形状的不变行,正方形的物体投影后 不会变为长方形。”等角”也保证了方向和相互位置的正确性,因此在航海和航 空中常常应用,而 Google 们在计算人们查询地物的方向时不会出错。 墨卡托投影的”圆柱”特性,保证了南北(纬线)和东西(经线)都是平行直线, 并且相互垂直。而且经线间隔是相同的,纬线间隔从标准纬线(此处是赤道,也 可能是其他纬线)向两级逐渐增大。 但是,”等角”不可避免的带来的面积的巨大变形,特别是两极地区,明显的如 格陵兰岛比实际面积扩大了 N 倍。不过要是去两极地区探险或可靠的同志们,一 般有更详细的资料,不会来查看网络地图的,这个不要紧。 为什么是圆形球体,而非椭球体? 这说来简单,仅仅是由于实现的方便,和计算上的简单,精度理论上差别 0.33% 之内,特别是比例尺越大,地物更详细的时候,差别基本可以忽略。 Web 墨卡托投影坐标系: 以整个世界范围,赤道作为标准纬线,本初子午线作为中央经线,两者交点为坐 标原点,向东向北为正,向西向南为负。 X 轴:由于赤道半径为 6378137 米,则赤道周长为 2*PI*r = 20037508.3427892, 因此 X 轴的取值范围:[-20037508.3427892,20037508.3427892]。 Y 轴:由墨卡托投影的公式可知,同时上图也有示意,当纬度 φ 接近两极,即 90°时,y 值趋向于无穷。这是那些”懒惰的工程师”就把 Y 轴的取值范围也限 定在[-20037508.3427892,20037508.3427892]之间,搞个正方形。 懒人的好处,众所周知,事先切好静态图片,提高访问效率云云。俺只是告诉你 为什么会是这样子。因此在投影坐标系(米)下的范围是:最小 (-20037508.3427892, -20037508.3427892 )到最大 (20037508.3427892, 20037508.3427892)。 对应的地理坐标系: 按道理,先讲地理坐标系才是,比如球体还是椭球体是地理坐标系的事情,和墨 卡托投影本关联不大。简单来说,投影坐标系(PROJCS)是平面坐标系,以米 为 单位;而地理坐标系(GEOGCS)是椭球面坐标系,以经纬度为单位。具体可参考《坐 标系、坐标参照系、坐标变换、投影变换》。 经度:这边没问题,可取全球范围:[-180,180]。 纬度:上面已知,纬度不可能到达 90°,懒人们为了正方形而取的 -20037508.3427892,经过反计算,可得到纬度 85.05112877980659。因此纬度 取值范围是[-85.05112877980659,85.05112877980659]。其余的地区怎 么办? 没事,企鹅们不在乎。 因此,地理坐标系(经纬度)对应的范围是:最小(-180,-85.05112877980659), 最大(180, 85.05112877980659)。至于其中的 Datum、坐标转换等就不再多言。 相关坐标计算: 关于 Google Maps 等的组织方式——地图瓦片金字塔,估计我在这里重复一遍这 玩意,怕也是没人看了。尽管原理都一样,但具体到写不同厂商不同数据源的代 码时,你会发 现,可缩放级别数不一样,最小级别不一样,编码方式不一样, 比如 Google 的 QRST,微软的四叉树,OSGeo 的 TMS 等。 然而,你或许也不必这么麻烦,因为这些算法在网络上早已遍布朝野,你尽可从 他人博客中获取,或是从开源软件里学习。这本身都不是秘密,微软自己也是公 布的。 《Tiles à la Google Maps》 用交互性地方式可得到任一 Tile 的边界范围,各 种流行编码方式等。该页面的链接都非常有价值,部分也是本文写作的重要参考。 作者用 python 完成了下 列坐标之间转换算法:经纬度(出现在 KML 中的坐标, WMS 的 BBOX 参数等),平面坐标 XY(米,Web Mercator 投影坐标系),金字塔 的 XYZ(即 X 轴的位置,Y 轴的位置,和缩放级别 ZoomLevel),每个 Tile 的编 码 Key 值(QRST 或 0123 等)。转换时,还需要注意两个概念,Ground Resolution 和 Map Scale。 Ground Resolution,地面分辨率,类似 Spatial Resolution(空间分辨率), 我们这里主要关注用象元(pixel size)表示的形式:一个像素(pixel)代表的地 面尺寸(米)。以 Virtual Earth 为例,Level 为 1 时,图片大小为 512*512(4 个 Tile),那么赤道空间分辨率为:赤道周长/512。其他纬度的空间分辨率则 为纬度 圈长度/512,极端的北极则为 0。Level为2时,赤道的空间分辨率为 赤 道周长/1024,其他纬度为纬度圈长度 1024。很明显,Ground Resolution 取决 于两个参数,缩放级别Level 和纬度latitude ,Level 决定像素的多少,latitude 决定地面距离的长短。地面分辨率的公式为,单位:米/像素: ground resolution = (cos(latitude * pi/180) * 2 * pi * 6378137 meters) / (256 * 2levelpixels) Map Scale,即地图比例尺,小学知识,图上距离比实地距离,两者单位一般都 是米。在 Ground Resolution 的计算中,由 Level 可得到图片的像素大小,那么 需要把其转换为以米为单位的距离,涉及到 DPI(dot per inch),暂时可理解 为类似的 PPI(pixelper inch),即每英寸代表多少个像素。256 * 2level / DPI 即得到相应的英寸 inch,再把英寸 inch 除以 0.0254 转换为米。实地距离仍旧 是:cos(latitude * pi/180) * 2 * pi * 6378137 meters; 因此比例尺的公式 为,一般都化为 1:XXX,无单位: map scale = 256 * 2level / screen dpi / 0.0254 / (cos(latitude * pi/180) * 2 * pi * 6378137) = 1 : (cos(latitude * pi/180) * 2 * pi * 6378137 * screen dpi) / (256 * 2level * 0.0254) 其实,Map Scale 和 Ground Resolution 存在对应关系,毕竟都和实地距离相 关联,两者关系:map scale = 1 : ground resolution * screen dpi / 0.0254 meters/inch 《Virtual Earth Tile System》列举了 Virtual Earth 在赤道上,Level、像素 数、地面分辨率、地图比例尺的对应关系,同时本文也简单介绍了 Mercator 投 影和上述两个概念,推荐。 此外,《Addressing Google Maps image tiles》应用程序,输入经纬度和缩放 级别,即可缩放到相应的 Google Maps 位置,而且可以显示出查找过程的 QRST。 JavaScript 实现的算法,也可以抓下来和《Tiles à la Google Maps》对比下, 从经纬度到到 Tile 编码的转换。 WKT 形式表示 Google Maps 和 Virtual Earth 等的流行程度不用多讲,然而他们所使用的 Web Mercator 或 Spherical Mercator 在很长一段时间内并没有被 EPSG 的投影数据 库所接纳。EPSG 认为它不能算作科学意义上的投影,所以只是给了一个 EPSG: 900913 的标号(SRID),这个标号游离在 EPSG 常规标号范围之外。(EPSG、SRID 是什么?参见《EPSG 、SRID》。) 到了2008年5月(据SharpGIS 同学), EPSG 恍然明白,不管椭球体还是球体, 其实都是对地球的模拟,只是精确程度上的差别,没有本质上的不同。或者是不 得不接受广泛的事实标准,接纳了这个投 影,定义投影坐标系 PROJCS 的名字 为”Popular Visualisation CRS / Mercator”,SRID 为 EPSG:3785;地理坐标 系 GEOGCS 的名字为”Popular Visualisation CRS”,SRID 为”EPSG:4055″。 这些标号已经进入”正常范围”。(PS:这个 Visualisation 是英式英语写法?) PROJCS 的 WKT《Well Known Text》写法如下,GEOGCS、Datum 等的 WKT 表示参 见《Spherical/Web Mercator: EPSG code 3785》。附带说一句,Web Mercator 在 ESRI 公司的编号(ESRI 叫它 Well Known ID?)暂时是 102113,或许偶尔用 得到。 PROJCS["Popular Visualisation CRS / Mercator", GEOGCS["Popular Visualisation CRS", DATUM["Popular_Visualisation_Datum", SPHEROID["Popular Visualisation Sphere",6378137,0, AUTHORITY["EPSG","7059"]], TOWGS84[0,0,0,0,0,0,0], AUTHORITY["EPSG","6055"]], PRIMEM["Greenwich",0, AUTHORITY["EPSG","8901"]], UNIT["degree",0.01745329251994328, AUTHORITY["EPSG","9122"]], AUTHORITY["EPSG","4055"]], UNIT["metre",1, AUTHORITY["EPSG","9001"]], PROJECTION["Mercator_1SP"], PARAMETER["central_meridian",0], PARAMETER["scale_factor",1], PARAMETER["false_easting",0], PARAMETER["false_northing",0], AUTHORITY["EPSG","3785"], AXIS["X",EAST], AXIS["Y",NORTH]] 附记:这个问题算是老问题,费这么多时间,主要就是分享,毕竟自己还算是相 当明白。也是看见有人不懂乱说,写篇文章纠正下。当然谁都会犯错误,包括我 这篇 是否 100%正确,你也可以质疑。起这个题目其实不是本意,因为它不科学, 甚至 EPSG 的 INFORMATION_SOURCE 字段写的都是 Microsoft,只不过国内 Google 更火些,SEO 一下。 这篇文章除了参考文中所列链接外, Microsoft、Google、EPSG、OGC 等组织相 关的说明外,Charlie Savage、SharpGIS、Nelson John 等博客也是非常重要的 来源,在此致以谢意。