我国全国版图常用的投影为双标准纬线圆锥投影,如等积Albers投影或者等角Lambert投影,所使用的地理坐标参照系则依据数据生产时间而有所不同,如早期的北京54坐标系和西安80坐标系,以及近年来所普遍采用的国家2000大地坐标系。本文以获取自中国科学院资源环境科学与数据中心的2015年省级行政区划数据为示范,该数据为SHP格式,采用的就是基于北京54坐标系的Albers投影。
这种双标准纬线、根据制图区域选定中央经线、地理坐标系、投影方式的组合,在大多数GIS软件的预定义坐标系中普遍不存在,需要自行定义坐标系,否则该图层将被标记为未识别坐标系的数据,在使用过程中经常出现计算错误或者无法与其他来源的图层叠加显示等问题。
QGIS的自定义投影功能位于菜单【设置】->【自定义投影】下,点击后弹出自定义坐标参照系对话框:
点击右上角的按钮添加一个新的自定义坐标系,在名称文本框中为自定义坐标系起一个名字,选择坐标系的描述格式(WKT或者Proj),在参数框中给定坐标系参数,即可完成自定义坐标系的创建。
QGIS自定义坐标系支持WKT和Proj两种描述格式,由于Proj过于简洁,是一种有损描述,因此QGIS官方建议使用WKT语言来描述坐标系定义。
熟知文本(Well-known text ,简称WKT) 是由开放地理空间联盟(OGC)制订的一种文本标记语言,用便于人们阅读的简洁语法表达地理空间中的几何对象。这种以文字表达几何图形的方式因其方便人们理解、具有很高的可读性、易于存储和易于共享等优势而深受欢迎,进而广泛应用到坐标系定义、坐标变换参数描述等方面。
本文所使用的术语“WKT坐标系定义”,特指以WKT标记语言描述的坐标系定义字符串,若无特殊说明,本文中的“WKT坐标系定义”一词都是此含义。
但是,由上图可以看到,QGIS的自定义坐标系界面做得比较简陋,操作体验不太友好。
自定义坐标系本身就是一个复杂的过程,需要设置的参数包括椭球体、基准面、投影方式、标准纬线、中央经线等。商用GIS软件通常将这个过程分解为易于使用的几个操作步骤向导,用户只需要点击和输入对应的参数即可。例如,ArcMap 10.2自定义坐标系过程如下:
对普通用户来说,相比手动输入代码的方式,操作向导界面能极大提高用户体验。因为无论使用WKT格式还是Proj格式,构造一个新的坐标系定义,都需要了解其中的语法结构、关键字和取值。这些对于不了解相关语言规范又想用QGIS快速作图的人来说几乎无从下手。
问题最后集中在如何获取WKT坐标系定义描述字符串,除了希望随着QGIS版本更新,开发团队提供更加友好的操作方式进行自定义坐标系之外,本文通过对比QGIS与ArcGIS WKT坐标系定义的异同,得出通过导入ArcGIS PRJ文件中的WKT坐标系定义字符串,解决当前状况下QGIS自定义坐标系操作中WKT坐标系定义字符串难以构造的问题。
01 将ArcGIS WKT坐标系定义导入QGIS
如果一个图层的坐标系在ArcGIS中进行了正确定义,其SHP文件同名的.PRJ文件即为符合WKT语言规范的坐标系定义文本文件。可以用文本编辑器打开并查看其内容,例如2015年行政区划数据,其.PRJ文件的内容为:
这个WKT坐标系定义是否与QGIS的WKT坐标系定义兼容?如果兼容,则可用它作为QGIS自定义投影的坐标系WKT参数。为了节约大家阅读时间,我先把结论放在这里:QGIS兼容ArcGIS的WKT坐标系定义字符串,可以直接复制.PRJ文件的内容作为QGIS新坐标系的WKT参数。
具体操作步骤如下:
点击菜单【设置】->【自定义投影】,打开自定义坐标系对话框,导入过程如下图:
返回地图主窗口,单击右下角的坐标系区域,弹出坐标系选择对话框,在用户自定义区域找到刚刚新建的坐标系,点击【OK】,QGIS就可以识别该坐标系了。