An's Blog
收藏、分享 …
Toggle navigation
Home
Cesium
SuperMap
ArcGIS
MapboxGL
CentOS
GeoServer
Favorites
Archives
Tags
空间数据WKT与WKB格式介绍
2023-05-30 15:36:45
3
0
0
admin
### **一、简介** OpenGIS 规范定义了两种表示空间对象的标准方式:Well-Know Text (WKT) 形式和Well-Known Binary(WKB) 形式。WKT 和 WKB都包含矢量几何要素的对象类型和构成对象的坐标的信息。WKT可读性强,更方便阅读识别,而在实际数据传输和存储中则以WKB形式。 ### **二、WKT 格式** 要素空间对象的文本表示(WKT)示例如下: 三种基本类型点POINT,线LINESTRING, 面POLYGON,如下: POINT(0 0) POINT Z (0 0 0) Z 一般代表高程信息 POINT ZM (0 0 0 0) Z 一般代表高程信息,M一般代表其他信息如距离、温度、浓度等 LINESTRING(0 0,1 1,1 2) POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1)) 除了上面三种基本类型外,下面四个类型是对上面三种的扩展,通过加入MULTI关键字,代表多个的意思,多点MULTIPOINT, 多线MULTILINESTRING, 多个多边形MULTIPOLYGON,而GEOMETRYCOLLECTION则是多个简单要素的集合,可以包含 点、线、面等任意类型。 MULTIPOINT((0 0),(1 2)) MULTIPOINT Z ((0 0 0),(1 2 3)) MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4)) MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1))) GEOMETRYCOLLECTION(POINT(2 3),LINESTRING(2 3,3 4)) ### **三、WKB 格式** WKB采用二进制进行存储,更方便于计算机处理,因此广泛运用于数据的传输与存储,以二位点Point(1 1)为例, 其WKB表达如下: 01 0100 0020 E6100000 000000000000F03F 000000000000F03F 1.byteOrder 第一个字节表示编码方式,00为使用big-endian编码(XDR),01为使用little-endian编码(NDR)。他们的不同仅限于在内存中放置字节的顺序,比如我们将0x1234abcd写入到以0×0000开始的内存中,则结果如下表:  2.wkbType 第二到第九字节对矢量数据基本信息进行了定义 第二与第三个字节规定了矢量数据的类型,如例子中的0100代表Point; 第三与第四个字节规定了矢量数据的维数,如例子中的0020代表该点是二位的; 第五到第九个字节规定了矢量数据的空间参考SRID,如例子中的E6100000是4326的整数十六位进制表达 3.structPoint 第十个字节开始,每16个字节就代表一个坐标对,如例子中的000000000000F03F是浮点型1的十六进制表达 WKT与WKB格式转换 bytea WKB = ST_AsBinary(geometry); text WKT = ST_AsText(geometry); geometry = ST_GeomFromWKB(bytea WKB, SRID); geometry = ST_GeometryFromText(text WKT, SRID);
Pre:
宝盖园区领导视查方案
Next:
Docker安装Mysql8
0
likes
3
Weibo
Wechat
Tencent Weibo
QQ Zone
RenRen
Table of content