WKT格式

406 阅读3分钟

什么是WKT格式?

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

常见WKT用途

目前在GIS相关应用中,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>表示几何对象的具体数据。

x代表经度(0°-180°) y代表纬度(0°-90°)

点的WKT格式如下:(注意:指定点坐标时不使用分隔用逗号x y中间应该使用空格分开。)

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>表示几何对象集合中的第二个几何对象,以此类推。

例子

TYPEShapeWKT
Pointimage.pngPOINT (30 10)
LineStringimage.pngLINESTRING (30 10, 10 30, 40 40)
Polygonimage.pngPOLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))
Polygonimage.pngPOLYGON ((35 10, 45 45, 15 40, 10 20, 35 10), (20 30, 35 35, 30 20, 20 30))
MultiPointimage.pngMULTIPOINT ((10 40), (40 30), (20 20), (30 10))

MULTIPOINT (10 40, 40 30, 20 20, 30 10)
MultiLineStringimage.pngMULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10))
MultiPolygonimage.pngMULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5)))
MultiPolygonimage.pngMULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)), ((20 35, 10 30, 10 10, 30 5, 45 20, 20 35), (30 20, 20 15, 20 25, 30 20)))