说说坐标系和投影那些事儿(转发)
一、缘起
之前在某学习交流群跟几个群友交流讨论起坐标转换和投影的事儿,如果看了以下对话就明白了坐标系和投影的事儿了那就可以不看本文了,如果还是迷迷糊糊那么可以继续往下看,我相信通过本文的分解,应该能帮助很多GISer新手理解并掌握ArcGIS中坐标系和投影的常规操作了。
imageGIS学习过程中,坐标系和投影一直是一个重点,更是一个难点,尤其是对于非原生GIS专业的童鞋来说有一定理解难度,类似数据无法对齐的情况在GIS初学者中实在是家常便饭,基于上述探讨,本文试图从实际操作角度出发,以理论联系实际的形式,通过讲道理和实例演示的方式,重点对ArcGIS中常见的坐标系和投影操作进行讲解。
二、原理
以下是我画的一张动态流程图,通过它来表达我们在ArcGIS中针对地理数据常见的几种坐标系和投影操作流程。
image↑↑↑图1 | 坐标系和投影操作总体流程图
(注意图中黑色线条是针对单个数据的流程,蓝色线条流程是针对多个数据的流程)
如图所示,在我们往ArcMAP中添加一个数据后第一步就应该是查看所添加数据的坐标系信息(通过图层属性中的“源”标签查看),只有数据带有了坐标系信息之后,GIS系统才能识别这个数据在现实地理空间中的真实位置。
最理想的状态就是数据已经自带了正确的投影坐标系,如此我们则可以不做任何的坐标系或投影操作;
或者就是自带了地理坐标系,这时一般需要对其进行投影,将地理坐标系投影转换为投影坐标系(注意这个过程是坐标系投影,而不是坐标系变换,初学者非常容易把这里搞混淆);
还有种比较糟糕的情况就是未知坐标系信息(显示为<未定义>),这时我们一般必须对其定义正确的坐标系。
当然,在我们确定了最后投影坐标系之后还可能需要将其变换为别的投影坐标系,这个过程就是坐标系变换。以上就是我们一般会遇到的对数据的几种坐标系和投影的操作,即分别为坐标系定义、坐标系投影、坐标系变换。
【插话】
1、注意此处分别用了****“一般必须”****、****“一般需要”****、****“可能需要”****三个词的含义
坐标系定义——“一般必须”****:坐标定义相当于是告诉GIS系统你所加载数据的真实地理空间位置,是坐标系和投影操作的基础,没有这个原始坐标系,系统无法识别你这个数据所在的地理空间位置(就是无法判断它在现实空间中的位置),也无法进行后续的坐标系和投影操作,而且此处定义的坐标系必须是“正确”的,这一点也很重要,举个例子,如果原始数据本来应该是某个投影坐标系,我们却为其定义了另外一个投影坐标系甚至是一个地理坐标系,那就相当于告诉了系统一个错误的地理定位,那后续的一切操作也就毫无意义。
****坐标系投影——****“一般需要”:这是讲的如果原始坐标系是地理坐标系,那我们一般需要将其进行投影再做后续操作,因为我们在后续的很多空间分析都是基于平面投影坐标系的,比如面积计算统计、距离测算等等都需要进行投影后才能操作,所以投影操作一般也是需要的,当然如果只是显示出图,则可以不需要投影,所以也不是必须的。
******坐标系变换——****“可能需要”:**这里是很多同学比较容易误会的,很多人认为只要两个或者几个数据的坐标系不一样就一定要进行坐标转换,其实并不是,因为同一个地方的坐标系即使不一样,只要你正确的定义了数据的坐标系(也就是你告诉了GIS系统数据的正确坐标系信息),在ArcGIS中是可以通过系统的动态投影自动准确叠加的(因为都是在同一个地方,只是坐标系不一样而已)。那一般是那种情况需要进行坐标转换呢,那就是客户需要特定坐标系,比如你对某个地方的卫星影像、国土规划、城乡规划三个数据进行叠加分析,但是三个数据分别采用了WGS_84坐标系、西安80坐标系、地方独立坐标系,而客户要求你叠加分析后的结果必须以国土规划的西安80坐标系甚至是这几个之外的CGCS_2000坐标系提交成果,那我们这时就需要按统一的目标坐标系进行坐标转换了。
2、注意****坐标系投影****和****坐标系变换****的区别
坐标系投影:是指地理坐标系通过“投影”转换为投影坐标系或投影坐标系通过“投影”转换为地理坐标系的过程,一般一个投影坐标系都有其对应的特定地理坐标系,相当于投影坐标系和其对应的地理坐标系是“包含”和“附属”关系,“投影”只是同一坐标系下的不同表达方式。
坐标系变换:坐标变换则是完全不同的两个地理坐标系或者不同的投影坐标系之间的变换,当然我们在对某一地理坐标系进行投影时,如果选择了不是与其对应的投影坐标系的时候,也是需要设置坐标转换参数的,两个坐标系之间可能没有任何关系。
打个不恰当但是好理解的比喻,“坐标系投影”相当于是一家人的两个兄弟之间的角色互换,“坐标系变换”则是完全两个不同家庭成员的角色互换。
【插话完】
三、案例讲解
如下图所示,我们以重庆市两江新区某街区控规路网及分区道路规划为例,我们需要将DEM(TIF)、卫星影像(TIF)、城市总体规划(JPG)、分区规划(JPG)等进行叠加对比,以便查看现状建设及相关规划情况。
image↑↑↑图2 | 需要叠加图层要素
1、数据加载及特征预判。
我们将数据全部添加进入ArcMAP,通过缩放至各要素图层并全部显示,可以发现部分要素能自动对齐,如主城区的行政边界、DEM及卫星影像能相互叠加对齐,通过CAD转换导入的分区及街区道路网也能相互自动对齐,但是和卫星影像等数据无法对齐,总规和分区规划的JPG文件则完全无法对齐。
image↑↑↑图3 | 原始数据图层叠加效果
2、查看坐标系信息
我们分别对各数据要素的坐标系信息进行查看梳理,如下表所示:
| 序号 | 数据名称 | 数据格式 | 坐标信息 | 备注 |
| 01 | 区县界 | SHP | GCS_WGS_1984 | 地理坐标系 |
| 02 | 重庆主城DEM | TIF | GCS_WGS_1984 | 地理坐标系 |
| 03 | 卫星影像图 | TIF | GCS_WGS_1984 | 地理坐标系 |
| 04 | 城市总体规划用地图 | JPG | <未定义> | 未知 |
| 05 | 分区规划用地图 | JPG | <未定义> | 未知 |
| 06 | 分区规划路网 | DWG转SHP | <未定义> | 平面坐标系 |
| 07 | 街区控规路网 | DWG转SHP | <未定义> | 平面坐标系 |
由此可见,上述的对不齐现象正是由于以上坐标系信息差异的所造成的,根据在前面介绍的总体逻辑,我们对已有地理坐标系的数据进行坐标系投影操作,对未定义坐标系的文件进行定义坐标系操作。
3、坐标系的投影操作
矢量数据和栅格数据的投影操作方法有区别,我们分别进行演示。
3.1 矢量数据的坐标系投影。如图所示,我们用“投影”工具对“01区县界”矢量数据进行投影。
image↑↑↑图4 | 矢量数据的投影操作
【插话】
为何此处投影之后好像没有变化?
这是因为ArcGIS本身有一个动态投影机制,就是只要我们是同一个地方的地理要素,只要每个数据都定义了正确的坐标系,那么无论各要素是采用了什么坐标系,都是可以直接叠加对齐的,这也就是上文讲到坐标变换并不是必须的原因,就是说我们在做分析或者可视化的时候,并不一定都要变换为同一个坐标系,只要定义了正确的坐标系(注意此处我多次强调“正确”,这个很重要。),一般都是能自动对齐的。
那么投影之后数据到底有什么变化了呢?我们可以打开投影后的数据查看坐标信息进行对比。此处可以借用上一篇推文(《只用十步教会你自己漂漂亮亮提取地形等高线》)中提到的对投影必要性的描述。
如下图A、图B所示,分别为投影前后的像元大小,其代表的值分别为对应的地理空间尺寸,投影之前的地理坐标系下该值表示的是角度值,不能作为空间距离表达,只有投影之后的公制单位坐标值才能正确表达地理空间在平面上的距离(米),因此也才能正确表达平面尺寸和海拔高程之间的对应关系(因为高程也是米)。
image↑↑↑ 图A 投影之前地理坐标系下的数据像元大小
image↑↑↑ 图B 投影之后投影坐标系下的数据像元大小
由此可见,投影只是改变了数据的坐标值表达方式(即由地理角度坐标值转变为平面距离坐标值),并没有移动数据位置,所以我们在图面上是不会看到数据移动的,无论是矢量还是栅格数据的投影都是相同的原理,后面的投影操作也是同理,不再赘述。
****【插话完】****
3.2 栅格数据的坐标系投影。如图所示,我们用“投影栅格”工具分别对“重庆主城DEM”和“卫星影像图”进行投影操作。
image↑↑↑图5 | DEM栅格数据的投影操作
image↑↑↑图6 | 卫星影像栅格数据的投影操作
【插话】
注意矢量数据和栅格数据的投影工具不同!
矢量数据的投影是用“投影”工具,位于“ArcToolbox-数据管理工具-投影和变换-投影”
栅格数据的投影操作是用“投影栅格”工具,位于位于“ArcToolbox-数据管理工具-投影和变换-栅格-投影栅格”
【插话完】
4、坐标系的定义操作
如前文所述,在数据坐标系处于<未定义>状态下,我们就需要判断其原始坐标系信息,并使用“定义投影”工具将其定义给对应的数据,如下图所示,“定义投影”的工具说明很好的解释了定义坐标系的意义。
image某些情况下我们能够判断数据的坐标系信息(如西安80坐标系我们大多数时候可以通过读取坐标值判断),但是通常情况下我们是无法准确判断未定义坐标系信息的(如加载的图片,本身就没有地理空间坐标系),甚至我们有些情况下能够判断出来是什么坐标系,但并不清楚其对应的坐标系信息(如地方独立坐标系),也是无法直接进行定义的。
如果能够判断出原始坐标系信息,那我们就对其定义正确的坐标系即可;但当我们在无法判断原始坐标系信息的情况下,则可以通过直接将其定义为目标坐标系,然后通过“空间校正”和“地理配准”的方法进行空间校准。
4.1坐标系信息的判断。
(1)如下图,是分区规划道路网和街区控规道路网,这两个图层均是通过规划CAD转换为SHP文件所得,从图上我们可以看到两个图层是可以叠合的,说明他们应该是用了同一个平面坐标系,然而他们又无法和我们已经投影了的数据直接对其,说明他们又不是UTM投影的WGS1984坐标系,再看右下角的坐标值为(55868.133,82387.492),很明显也不是我们国家常用的西安80或者北京54坐标系,那我们初步判断这两个数据均是采用的重庆独立坐标系(一般城市级别用地规划都会采用地方独立坐标系),而这个坐标系信息是保密的,我们无法获取,也就无法直接定义。
image↑↑↑图7 | 坐标系信息的判断
【插话】
1、什么样的坐标系可以判断出来?
一类数据是某些网上下载的数据,其坐标值一般显示为小数点前为2-3位数,如(123.1234,36.1234),这种情况一般就是地理坐标系了,而且大多数情况就是WGS_1984的地理坐标系,我们可以对其直接定义后观察是否正确。
对于CAD类测绘成果,比如我们常见的CAD地形图,如果原始制图规范的情况下,图面上会直接注明所采用的坐标系(如西安80),如果是这样我们就可以直接导入GIS后定义为西安80坐标系即可;
如果是没有注明的情况,我们一般可以通过观察坐标值判断坐标系,如果坐标值小数点前是6位+7位(如123456.001,1234567.001),或者8位+7位(36123456.001,1234567.001),那么一般都是西安80或者北京54(由于北京54坐标系已经很多年没用,除非特别久远的地形图,否则一般判断为西安80,当然,现在国家也有新的大地2000坐标系,要注意甄别)。
6位+7位(如123456.001,1234567.001),或者8位+7位(36123456.001,1234567.001)的区别在于后者的X坐标值前面加了带号(36),而前者坐标没有带号(图A 、B),所以坐标值的X值有6位和8位的区别,这在坐标定义的时候要注意区别,有带号的坐标值要按带号对应坐标系进行定义,否则按中央经线值对应坐标系进行定义。
image↑↑↑图A | 无带号坐标系信息
image↑↑↑图A | 有带号坐标系信息
2、如果是独立坐标系应该怎么办?
地方独立坐标系是由各地自行确定,其坐标系信息和参数均是保密的,理论上正确做法是将数据交由当地地信中心通过合法程序进行坐标转换后再交给数据使用方使用,但受限于项目经费、项目性质等多方面原因,有些时候只能靠我们自己进行坐标转换,那就可以通过本文的方法进行坐标转换。
【插话完】
(2)如下图所示,对于我们在ArcGIS中添加的JPG图纸,是没有判断坐标系的必要的,因为这类图纸通常是由我们通过PS等制图程序产生,不具有地理空间信息特征,我们只需要对其定义成我们的目标坐标系,然后通过地理配准调整其位置到我们正确空间位置即可。
image4.2 数据坐标系的定义。
根据以上的分析,我们本次案例中的几个未定义坐标系数据均无法获得原始坐标系信息,因此我们统一定义为UTM_WGS_1984投影坐标系(因为其他已有坐标系信息数据均是使用的该坐标)
(1)按如图所示操作,分别对分区规划路网和街区控规路网SHP文件进行坐标系定义。
image(2)按以上相同的操作方法,对城市总体规划和分区规划JPG格式文件进行坐标系定义。
image【插话】
定义坐标系后数据为何会移动?
这里注意坐标系定义有别于坐标系投影,投影是ArcGIS知道数据的原始坐标,也就说知道数据在真实空间的位置,通过投影只是改变了其坐标表示方法而已。定义坐标系是ArcGIS不知道原始坐标,也就是不知道该数据的坐标数值表达其在空间中的真实位置,当我们为其定义一个坐标系后,ArcGIS系统就会根据这个定义的坐标系将其放置到系统模拟的地理空间中去,所以我们会看到数据会发生移动,但是我们这里为其定义的并不是“正确”的坐标系,因此它并不是在它真实应该在的位置,我们需要通过“空间校正”办法将其“移动”到它正确的位置去,这就相当于一个坐标变换的过程。
【插话完】
5、坐标系的变换操作
在讲坐标系变换之前,我们有必要理解清楚坐标系变换的含义。我们常见的坐标系变换有西安80坐标系转北京54坐标系的互转,UTM_WGS84坐标和西安80及北京54等坐标系的互转等,当然现在也会经常遇到网络数据坐标系(如百度坐标系、火星坐标系等)。其实这里我们要明确一个概念,坐标系本身是无法改变的,比如西安80坐标系,那它相应的椭球体、基准面、投影方法等坐标系参数信息都是不能改变的,改变了就不叫西安80坐标系了,所以,我们通常所谓的坐标系变换其实应该叫数据的坐标系重定义及坐标值校正,改变的也是数据的坐标系定义和对应的坐标值。
举个例子,某个数据的原始坐标系是西安80投影坐标系,但是我们需要将其变换为UTM_WGS84的投影坐标系,那么这个时候我们就需要将数据的坐标系重新定义为UTM_WGS84投影坐标系,但是数据原来是按西安80坐标系表达的,所以其坐标值如果再按UTM_WGS84坐标系表达就不正确了,这时候就需要我们对坐标值进行空间校正,说的好理解一点就是移动数据的空间位置到正确位置,这个过程就是我们所谓的坐标变换过程,根据这个原理,坐标变换一般也有3参数和7参数法(百度搜坐标变换讲的最多的内容就是这个)。
网上也有很多坐标转换工具将这个过程集成,只需要下载之后进行操作就行,但是本文的宗旨是把原理讲清楚之后我们可以不借助第三方工具,自己就能通过ArcGIS完成坐标变换操作,让我们的坐标变换完全掌握在自己手里。
通过以上分析,我们知道坐标变换的核心主要就是两点,一个是坐标系的重新定义,无论是原始数据是否已经带有坐标系,我们都可以对其进行重新定义,这个过程就是普通的坐标系定义,按以上坐标系定义操作流程进行即可;第二个核心就是坐标值的校正了,在ArcGIS中针对于矢量数据和栅格数据,其空间校正方法不一样,其中矢量数据使用“空间校正”工具进行校正,栅格数据使用“地理配准”工具进行空间校正。
5.1矢量数据的“空间校正”
(1)打开“空间校正”工具,此时我们发现该工具各功能均为灰色禁用状态,这是因为该工具必须在数据编辑状态才可用。
image(2)打开“编辑器”工具,启动数据编辑,并设置空间校正目标数据。
image(3)通过空间缩放定位,添加空间校正位移控制点。
image(4)重复第三步操作,依此添加至少三对以上位移控制锚点。
image(5)设置校正方法,运行空间校正。
image(6)完成空间校正,核对校正成果准确性。
image(7)保存并停止编辑,完成数据空间校正。
image5.2 栅格数据的“地理配准”
(1)通过右键点击工具栏,打开“地理配准”工具,并设置我们需要进行配准的栅格数据,同时勾选下拉列表中的“自动校正”选项。(注意此处有别于矢量数据,不需要启用编辑器)
image(2)如下图所示,参照矢量数据“空间校正”添加控制锚点的方法,同样添加至少3对以上的控制锚点,由于打开了“自动校正”,数据会自动对齐到我们的目标位置。
image(3)打开地理配准工具下拉菜单,点击“更新地理配准”,则配准信息就可以保存至栅格数据,后期再加载该文件就有了正确的坐标系信息了。
image我们采用相同的方法完成其他矢量数据的“空间校正”及栅格数据的“地理配准”。
6、成果验证
通过1-5小节完成了所有数据的坐标系投影、坐标系定义及坐标系变换,现在我们将所有完成后的数据加载到同一数据空间查看一下叠加效果。
6.1 街区控规路网与现状建成数据的叠加对比。通过该数据对比可以查看规划路网和现状建设情况,也可以作为后期规划管理的核查依据。
image6.2 街区控规路网与分区规划的叠加对比。通过该对比可以作为不同相关规划之间的衔接情况,是多元规划、多规合一的重要技术基础。
image6.3 分区规划路网与城市总规的叠加对比。通过该对比可以核对上下位规划之间的衔接情况,同样是多规合一中非常重要的技术基础。
image6.4 同一地理空间多元数据的叠加对比。通过对多元数据对比,即可作为规划前期基本情况摸底依据,也可作为规划过程中基础数据库的技术基地,也可以作为规划后期监察管理的重要依据,同时也是多规合一重要技术基础。
image四、思考
坐标系和投影看似只不过是GIS中的一个知识点,但其重要性和难度绝对是GIS学习非常重要的一个分水岭,理解并解决了坐标系和投影的相关疑点,GIS中很多的问题都会迎刃而解,否则必定会遇到各种莫名其妙的“挫折”。
本文试图从地理空间多元数据的坐标系统一入手,以讲道理结合实际案例的方式,深入浅出的对数据坐标系常见的坐标系投影、坐标系定义及坐标系变换进行了较为完整的梳理。通过实例我们也能看到,统一坐标系无论是在多元规划数据对比校验还是多规合一应用等领域都是非常重要的基本前提。