空间参考系统与WKT解析
一、WKT-概念
WKT(Well-known text)是一种文本标记语言,用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换。它的二进制表示方式,亦即WKB(well-known binary)则胜于在传输和在数据库中存储相同的信息。该格式由开放地理空间联盟(OGC)制定。
地理坐标系、投影坐标系详解
ArcGIS中的地理坐标系与投影坐标系以及坐标转换
EPSG是什么?WKT是什么?SRID是什么?EPSG、WKT、SRID概念
GIS-坐标系-EPSG(二次整理)
图参考系的那些事儿+你可能忽略的小知道
3度带6度带区别、中央经线及带号的计算
二、空间参考系统的类型
在GIS的应用中,普遍应用的空间参考系统有如下几种:
类型 | |
---|---|
地心坐标系 | 地心坐标系是以地球质心为原点建立的空间直角坐标系,以x,y,z表示或者以椭球体的中心和此质心重合建立的大地坐标系,大地坐标系一般是用B,L,H表示的 |
地理坐标系 | 以椭球体为基础建立的坐标系,用经纬度度量坐标 |
投影坐标系 | 在特定椭球体基础之上经过地图投影建立的平面坐标系。 |
三、空间参考系统的表示方法
在GIS应用中,经常会遇到空间参考系的表示问题,如果不同系统中的同一个空间参考系统使用了不同的代码或者名称的话,就会给不同系统之间的互操作带来困难。为了统一空间参考系统的表示,openGIS定义了用WKT,也就是孰知文本来表示空间参考系统。
EPSG 数据库
:通过关系数据库的形式发布,可以通过访问https://epsg.io/查询和下载。
SQL脚本
:以SQL脚本的方式发布,通过脚本的方式创建EPSG数据集。
四、WKT主要关键字解析
AUTHORITY
这个关键字是可选的,表示外部权威的空间参考系统的编码
AXIS
这个关键字主要指定空间参考系统的坐标轴方向,如果没有指定,就使用默认的,默认的指定方向如下:
地理坐标系统: AXIS[“Lon”,EAST],AXIS[“Lat”,NORTH]
投影坐标系统: AXIS[“X”,EAST],AXIS[“Y”,NORTH]
地心坐标系统: AXIS[“X”,OTHER],AXIS[“Y”,EAST],AXIS[“Z”,NORTH]
COMPD_CS
用于指定一个符合的参考系统,符合参考系统一般由两个坐标系统指定。例如一个3D坐标系统可以由一个水平坐标系统和一个垂直坐标系统复合而成。
DATUM
用于指定一个水平基准面。
GEOCCS
用于指定一个地心坐标系,是一个3D坐标系,X轴的正方向是从地球质心指向赤道和本初子午线的交点,Z轴指向北极方向,Y轴正方向是从地球质心到赤道与东经90度经线的交点。
GEOGCS
用于指定基于经纬度的坐标系统。注意:并不是所有的地理坐标系统都用度来表示单位。
LOCAL_CS
用于指定一个本地的坐标系统。一些坐标系统经常用于CAD系统中
PARAMETER
投影转换的参数及其值。
PRIMEM
用于指定经度度量的本初子午线。
PROJCS
用于指定一个投影坐标系。
PROJECTION
用于指定从地理坐标到投影坐标转换的参数。
SPHEROID
定义一个椭球体,椭球体是地球表面的近似。Spheroid和ellipsoid是同义词。Spheroid一般用于WKT中;而ellipsoid在任何地方使用,都是椭球体的意思。
TOWGS84
用于指示Bursa Wolf变换的七个参数。这七个参数可以近似的从一个基准面到WGS基准面的变换。Bursa Wolf变换只能用于空间直角坐标系之间的变换。
UNIT
用于指定测量使用的单位。在地理坐标系下使用角度。在垂直坐标系下使用线性单位,如米等。
VERT_DATUM
用于指定垂直基准面或者高程测量的方法。
VERT_CS
用于指定一个垂直坐标系统。
五、WKT表示方法举例
如果使用的是地理坐标系,那么使用GEOGCS
关键字;
如果使用投影坐标系那么要使用PROJCS
关键字,投影坐标系必须是基于一个地理坐标系定义的;
如果是高程坐标系,那么使用VERT_CS
关键字。
下面是一个投影坐标系
的WKT字符串,表示的是CGCS2000坐标系下高斯克里格3度带投影下的坐标系。
PROJCS["CGCS2000 / 3-degree Gauss-Kruger CM 111E",
GEOGCS["China Geodetic Coordinate System 2000",
DATUM["China_2000",
SPHEROID["CGCS2000",6378137,298.257222101]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4490"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",111],
PARAMETER["scale_factor",1],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",0],
UNIT["metre",1],
AUTHORITY["EPSG","4546"]]
从上面的字符串中我们可以看出一些参数的意思。PROJCS表示的是一个投影坐标系统,基于的地理坐标系统是CGCS2000 ,基准面是China_2000,椭球体是CGCS2000坐标系所依赖的椭球体,6378137表示的长半轴,298.257222101是扁率的倒数,起始经线是本初子午线,地理坐标系使用单位是度,0.0174532925199433代表一度所代表多少弧度。
PROJECTION["Transverse_Mercator"]表示是投影方法通用墨卡托投影,
"latitude_of_origin",0表示纬度的起点是0度,也就是赤道,
"central_meridian",111表示投影带的中央经线是东经111度,
"scale_factor",0.9996表示中央经线的长度比是1,
"false_easting",500000表示坐标纵轴向西移动500km,
"false_northing",0表示横轴没有平移。
以下是一个地理坐标系统的WKT字符串,它表示的就是CGCS2000坐标系。
GEOGCS["China Geodetic Coordinate System 2000",
DATUM["China_2000",
SPHEROID["CGCS2000",6378137,298.257222101]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4490"]]
4、后记
空间坐标系统的WKT表示作为GIS业界互操作的一个规范确实起到了很大的作用。各大GIS厂商以及开源GIS软件类库也都是用WKT作为空间参考系统表示的规范,这样对GIS行业的发展起到了推动作用,也在一定程度上推进了空间数据共享。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!