什么是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>表示几何对象集合中的第二个几何对象,以此类推。
例子
TYPE | Shape | WKT |
---|---|---|
Point | POINT (30 10) | |
LineString | LINESTRING (30 10, 10 30, 40 40) | |
Polygon | POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)) | |
Polygon | POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10), (20 30, 35 35, 30 20, 20 30)) | |
MultiPoint | MULTIPOINT ((10 40), (40 30), (20 20), (30 10)) 或 MULTIPOINT (10 40, 40 30, 20 20, 30 10) | |
MultiLineString | MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10)) | |
MultiPolygon | MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5))) | |
MultiPolygon | MULTIPOLYGON (((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))) |