麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

「GIS百科」什么是WKT格式

WKT格式是一种文本格式,用于描述二维和三维几何对象的空间特征。WKT是“Well-Known Text”的缩写,是一种开放的国际标准,由Open Geospatial Consortium(OGC)定义和维护。WKT格式通常用于在计算机系统之间交换空间数据,例如在GIS(地理信息系统)软件和数据库之间。WKT格式包括一些基本的几何对象,例如点、线、多边形和圆形,以及一些复合对象,例如多边形集合和几何对象集合。

常见WKT用途

目前在GIS相关应用中,WKT主要用于以下几个方面

  1. 描述空间实体
  2. 描述空间坐标系参数

WKT 描述空间实体

WKT格式的基本语法如下:

<geometry tag> <wkt data>
<geometry tag> ::= POINT | LINESTRING | POLYGON | MULTIPOINT | MULTILINESTRING | MULTIPOLYGON | GEOMETRYCOLLECTION
<wkt data> ::= <point> | <linestring> | <polygon> | <multipoint> | <multilinestring> | <multipolygon> | <geometrycollection>

其中,<geometry tag>表示几何对象的类型,<wkt data>表示几何对象的具体数据。

点的WKT格式如下:

POINT (<x> <y>)

其中,<x>表示点的x坐标,<y>表示点的y坐标。注意,指定点坐标时不使用分隔用逗号。

线

线的WKT格式如下:

LINESTRING (<x1> <y1>, <x2> <y2>, ...)

其中,<x1> <y1>表示线的第一个点的坐标,<x2> <y2>表示线的第二个点的坐标,以此类推。注意,点坐标对采用逗号隔开。

多边形

多边形的WKT格式如下:

POLYGON ((<x1> <y1>, <x2> <y2>, ..., <x1> <y1>))

其中,<x1> <y1>表示多边形的第一个点的坐标,<x2> <y2>表示多边形的第二个点的坐标,以此类推。

多点

多点的WKT格式如下:

MULTIPOINT ((<x1> <y1>, <x2> <y2>, ...))

其中,<x1> <y1>表示多点的第一个点的坐标,<x2> <y2>表示多点的第二个点的坐标,以此类推。

多线

多线的WKT格式如下:

MULTILINESTRING ((<x1> <y1>, <x2> <y2>, ...), (<x1> <y1>, <x2> <y2>, ...))

其中,<x1> <y1>表示多线的第一个点的坐标,<x2> <y2>表示多线的第二个点的坐标,以此类推。

多多边形

多多边形的WKT格式如下:

MULTIPOLYGON (((<x1> <y1>, <x2> <y2>, ..., <x1> <y1>)), ((<x1> <y1>, <x2> <y2>, ..., <x1> <y1>)))

其中,<x1> <y1>表示多多边形的第一个点的坐标,<x2> <y2>表示多多边形的第二个点的坐标,以此类推。

几何对象集合

几何对象集合的WKT格式如下:

GEOMETRYCOLLECTION (<geometry tag> <wkt data>, <geometry tag> <wkt data>, ...)

其中,<geometry tag> <wkt data>表示几何对象集合中的第一个几何对象,<geometry tag> <wkt data>表示几何对象集合中的第二个几何对象,以此类推。

WKT 描述空间坐标系参数

WKT格式的基本语法如下:

<coordinate system>  = <horz cs> | <geocentric cs> | <vert cs> | <compd cs> | <fitted cs> | <local cs>
<horz cs>            = <geographic cs> | <projected cs>
<projected cs>       = PROJCS["<name>", <geographic cs>, <projection>, {<parameter>,}* <linear unit> {,<twin axes>}{,<authority>}]
<projection>         = PROJECTION["<name>" {,<authority>}]
<geographic cs>      = GEOGCS["<name>", <datum>, <prime meridian>, <angular unit> {,<twin axes>} {,<authority>}]
<datum>              = DATUM["<name>", <spheroid> {,<to wgs84>} {,<authority>}]
<spheroid>           = SPHEROID["<name>", <semi-major axis>, <inverse flattening> {,<authority>}]
<semi-major axis>    = <number>
<inverse flattening> = <number>
<prime meridian>     = PRIMEM["<name>", <longitude> {,<authority>}]
<longitude>          = <number>
<angular unit>       = <unit>
<linear unit>        = <unit>
<unit>               = UNIT["<name>", <conversion factor> {,<authority>}]
<conversion factor>  = <number>
<geocentric cs>      = GEOCCS["<name>", <datum>, <prime meridian>, <linear unit> {,<axis>, <axis>, <axis>} {,<authority>}]
<authority>          = AUTHORITY["<name>", "<code>"]
<vert cs>            = VERT_CS["<name>", <vert datum>, <linear unit>, {<axis>,} {,<authority>}]
<vert datum>         = VERT_DATUM["<name>", <datum type> {,<authority>}]
<datum type>         = <number>
<compd cs>           = COMPD_CS["<name>", <head cs>, <tail cs> {,<authority>}]
<head cs>            = <coordinate system>
<tail cs>            = <coordinate system>
<twin axes>          = <axis>, <axis>
<axis>               = AXIS["<name>", NORTH | SOUTH | EAST | WEST | UP | DOWN | OTHER]
<to wgs84s>          = TOWGS84[<seven param>]
<seven param>        = <dx>, <dy>, <dz>, <ex>, <ey>, <ez>, <ppm>
<dx>                 = <number>
<dy>                 = <number>
<dz>                 = <number>
<ex>                 = <number>
<ey>                 = <number>
<ez>                 = <number>
<ppm>                = <number>
<fitted cs>          = FITTED_CS["<name>", <to base>, <base cs>]
<to base>            = <math transform>
<base cs>            = <coordinate system>
<local cs>           = LOCAL_CS["<name>", <local datum>, <unit>, <axis>, {,<axis>}* {,<authority>}]
<local datum>        = LOCAL_DATUM["<name>", <datum type> {,<authority>}]

WKT 坐标描述我们在QGIS中比较常见,比如我国常用的地图投影在QGIS并没有默认自带,就需要自己使用WKT的格式定义一个。

上图:国内常用的Albers投影定义

比如我们要定义一个WGS84地理坐标系。

GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.257223563,
            AUTHORITY["EPSG","7030"]],
        AUTHORITY["EPSG","6326"]],
    PRIMEM["Greenwich",0,
        AUTHORITY["EPSG","8901"]],
    UNIT["degree",0.01745329251994328,
        AUTHORITY["EPSG","9122"]],
    AUTHORITY["EPSG","4326"]]

如何打开WKT格式文件?

可以使用VSCode,具体方式可以通过看这篇文章:「GIS教程」使用VSCode预览GeoJSON文件 来了解。

参考

  1. https://www.mysqlzh.com/doc/175/141.html
  2. https://www.cnblogs.com/jianxia612/articles/1594025.html
  3. https://docs.geotools.org/stable/javadocs/org/opengis/referencing/doc-files/WKT.html

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)