wkt(OGC well-known text)和wkb(OGC well-known binary)是OGC制定的空间数据的组织规范,wkt是以文本形式描述,wkb是以二进制形式描述。
使用wkt和wkb能够很好到和其他系统进行数据交换,目前大部分支持空间数据存储的数据库构造空间数据都采用这两种方式。
wkt的组织结构如下:

Geometry type Text description Comment
ST_Point 'point empty' empty point
ST_Point 'point z empty' empty point with z-coordinate
ST_Point 'point m empty' empty point with measure
ST_Point 'point zm empty' empty point with z-coordinate and measure
ST_Point 'point ( 10.05 10.28 )' point
ST_Point 'point z( 10.05 10.28 2.51 )' point with z-coordinate
ST_Point 'point m( 10.05 10.28 4.72 )' point with measure
ST_Point 'point zm(10.05 10.28 2.51 4.72 )' point with z-coordinate and measure
ST_LineString 'linestring empty' empty linestring
ST_LineString 'linestring z empty' empty linestring with z-coordinates
ST_LineString 'linestring m empty' empty linestring with measures
ST_LineString 'linestring zm empty' empty linestring with z-coordinates and measures
ST_LineString 'linestring (10.05 10.28 , 20.95 20.89 )' linestring
ST_LineString 'linestring z(10.05 10.28 3.09, 20.95 31.98 4.72, 21.98 29.80 3.51 )' linestring with z-coordinates
ST_LineString 'linestring m(10.05 10.28 5.84, 20.95 31.98 9.01, 21.98 29.80 12.84 )' linestring with measures
ST_LineString 'linestring zm(10.05 10.28 3.09 5.84, 20.95 31.98 4.72 9.01, 21.98 29.80 3.51 12.84)' linestring with z-coordinates and measures
ST_Polygon 'polygon empty' empty polygon
ST_Polygon 'polygon z empty' empty polygon with z-coordinates
ST_Polygon 'polygon m empty' empty polygon with measures
ST_Polygon 'polygon zm empty' empty polygon with z-coordinates and measures
ST_Polygon 'polygon ((10 10, 10 20, 20 20, 20 15, 10 10))' polygon
ST_Polygon 'polygon z((10 10 3, 10 20 3, 20 20 3, 20 15 4, 10 10 3))' polygon with z-coordinates
ST_Polygon 'polygon m((10 10 8, 10 20 9, 20 20 9, 20 15 9, 10 10 8 ))' polygon with measures
ST_Polygon 'polygon zm((10 10 3 8, 10 20 3 9, 20 20 3 9, 20 15 4 9, 10 10 3 8 ))' polygon with z-coordinates and measures
ST_MultiPoint 'multipoint empty' empty multipoint
ST_MultiPoint 'multipoint z empty' empty multipoint with z-coordinates
ST_MultiPoint 'multipoint m empty' empty multipoint with measures
ST_MultiPoint 'multipoint zm empty' empty multipoint with z-coordinates and measures
ST_MultiPoint 'multipoint (10 10, 20 20)' multipoint with two points
ST_MultiPoint 'multipoint z(10 10 2, 20 20 3)' multipoint with z-coordinates
ST_MultiPoint 'multipoint m(10 10 4, 20 20 5)' multipoint with measures
ST_MultiPoint 'multipoint zm(10 10 2 4, 20 20 3 5)' multipoint with z-coordinates and measures
ST_MultiLineString 'multilinestring empty' empty multilinestring
ST_MultiLineString 'multilinestring z empty' empty multilinestring with z-coordinates
ST_MultiLineString 'multilinestring m empty' empty multilinestring with measures
ST_MultiLineString 'multilinestring zm empty' empty multilinestring with z-coordinates and measures
ST_MultiLineString 'multilinestring ((10.05 10.28 , 20.95 20.89 ),( 20.95 20.89, 31.92 21.45))' multilinestring
ST_MultiLineString 'multilinestring z((10.05 10.28 3.4, 20.95 20.89 4.5),( 20.95 20.89 4.5, 31.92 21.45 3.6))' multilinestring with z-coordinates
ST_MultiLineString 'multilinestring m((10.05 10.28 8.4, 20.95 20.89 9.5), (20.95 20.89 9.5, 31.92 21.45 8.6))' multilinestring with measures
ST_MultiLineString 'multilinestring zm((10.05 10.28 3.4 8.4, 20.95 20.89 4.5 9.5), (20.95 20.89 4.5 9.5, 31.92 21.45 3.6 8.6))' multilinestring with z-coordinates and measures
ST_MultiPolygon 'multipolygon empty' empty multipolygon
ST_MultiPolygon 'multipolygon z empty' empty multipolygon with z-coordinates
ST_MultiPolygon 'multipolygon m empty' empty multipolygon with measures
ST_MultiPolygon 'multipolygon zm empty' empty
ST_MultiPolygon 'multipolygon (((10 10, 10 20, 20 20, 20 15 , 10 10), (50 40, 50 50, 60 50, 60 40, 50 40)))' multipolygon
ST_MultiPolygon 'multipolygon z(((10 10 7, 10 20 8, 20 20 7, 20 15 5, 10 10 7), (50 40 6, 50 50 6, 60 50 5, 60 40 6, 50 40 6)))' multipolygon with z-coordinates
ST_MultiPolygon 'multipolygon m(((10 10 2, 10 20 3, 20 20 4, 20 15 5, 10 10 2), (50 40 7, 50 50 3, 60 50 4, 60 40 5, 50 40 7)))' multipolygon with measures
ST_MultiPolygon 'multipolygon zm(((10 10 7 2, 10 20 8 3, 20 20 7 4, 20 15 5 5, 10 10 7 2), (50 40 6 7, 50 50 6 3, 60 50 5 4, 60 40 6 5, 50 40 6 7)))' multipolygon with z-coordinates and measures

wkb的组织结构如下:
基本类型定义:
byte : 1 byte
uint32 : 32 bit unsigned integer  (4 bytes)
double : double precision number (8 bytes)
Building Blocks : Point, LinearRing
Point {
double x;
double y;
};
LinearRing   {
uint32 numPoints;
Point points[numPoints];
}
enum wkbGeometryType {      
wkbPoint = 1,
wkbLineString = 2,
wkbPolygon = 3,
wkbMultiPoint = 4,
wkbMultiLineString = 5,
wkbMultiPolygon = 6,
wkbGeometryCollection = 7
};
enum wkbByteOrder {
wkbXDR = 0,     Big Endian
wkbNDR = 1     Little Endian
};
WKBPoint {
byte    byteOrder;
uint32   wkbType;       1
Point    point;
}
WKBLineString {
byte    byteOrder;
uint32   wkbType;      2
uint32   numPoints;
Point    points[numPoints];
}
WKBPolygon {
byte    byteOrder;
uint32   wkbType;      3
uint32   numRings;
LinearRing  rings[numRings];
}
WKBMultiPoint {
byte    byteOrder;
uint32   wkbType;          4
uint32   num_wkbPoints;
WKBPoint   WKBPoints[num_wkbPoints];
}
WKBMultiLineString {
byte    byteOrder;
uint32   wkbType;      5
uint32   num_wkbLineStrings;
WKBLineString WKBLineStrings[num_wkbLineStrings];
}
wkbMultiPolygon {    
byte    byteOrder;

uint32   wkbType;      6
uint32   num_wkbPolygons;
WKBPolygon  wkbPolygons[num_wkbPolygons];
}
WKBGeometry  {
union {
WKBPoint      point;
WKBLineString    linestring;
WKBPolygon     polygon;
WKBGeometryCollection collection;
WKBMultiPoint    mpoint;
WKBMultiLineString  mlinestring;
WKBMultiPolygon   mpolygon;
}
};
WKBGeometryCollection {
byte    byte_order;
uint32   wkbType;      7
uint32   num_wkbGeometries;
WKBGeometry  wkbGeometries[num_wkbGeometries]
}
下面是一个point(1,1) 使用WKB存储的例子:
0101000000000000000000F03F000000000000F03F
这个2进制流可以按照WKBPoint的结构进行拆分:
Byte order : 01
WKB type   : 01000000
X          : 000000000000F03F
Y          : 000000000000F03F
byte order要么为0,要么为1,0为使用little-endian编码(NDR),1为使用big-endian编码(XDR)。
WKB type 是几何类型,在wkbGeometryType中定义. 值为1-7,分别对应 Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, and GeometryCollection. 
x,y为点的坐标值,为double类型。

转载于:https://www.cnblogs.com/khfang/p/6074688.html

空间数据存储格式wkb和wkt(转载)相关推荐

  1. OpenGIS 的WKB和WKT

    OpenGIS的说明书中定义了两个表述空间对象的标准方式:一个是WKT(the Well-Known Text)形式,另一个是WKB(the Well-Known Binary)形式.这两种形式都包括 ...

  2. Create Geometry from WKT(转载)

    转自:http://dingtao-wgs.blog.163.com/blog/static/5026071420135422156158/ Pedro    Hi! I think that thi ...

  3. SQL Server - sql 空间数据

    以geometry为例,geography类似 目录 基础功能 创建空间表 录入数据 计算面积 转WKB 转WKT 转地理标记语言 (GML) 创建geometry实例 获得集合中的实例 STPoin ...

  4. AE解析WKT生成图形C#

    public IGeometry CreatePolygon(string wkt){//多面if (wkt.Contains("MULTIPOLYGON")){wkt = wkt ...

  5. MySQL GIS功能介绍

    个人网站:https://www.lovebetterworld.com/ 往后余生,只想分享一些干货,分享一些工作,学习当中的笔记.总结,并帮助需要帮助的任何人,关注我,大家一起来学习吧! 一.My ...

  6. mysql8对gis的支持

    从MySQL4.1开始,MySQL就支持了基本空间数据类型以及一部分的空间对象函数,但是对GIS功能的支持非常有限:随着不断发展,MySQL8对GIS功能的支持已经比较丰富了,本文将基于MySQL8. ...

  7. 金仓数据库 KingbaseGIS 使用手册(4. 数据管理和查询)

    4. 数据管理和查询 4.1. GIS 对象 由 KGIS 支持的 GIS 对象是 OpenGIS Consortium (OGC) 定义的 GIS "简单特性" 的超集. KGI ...

  8. mysql 几何对象,几何(geometry)对象类型

    OGC的WKB和WKT格式 OGC定义了两种描述几何对象的格式,分别是WKB(Well-Known Binary)和WKT(Well-Known Text). 在SQL语句中,用以下的方式可以使用WK ...

  9. PostgreSQL+PostGIS的使用

    一. PostgreSQL与PostGIS的关系 PostgreSQL 是世界上技术最先进的开源数据库,其前身是1977年一个源于Berkeley名为Ingres的非关系型数据库,其项目领导人为Mic ...

最新文章

  1. 搜索引擎的两大问题(1) - 召回
  2. Mr.J--.c 和.cpp 后缀详解
  3. 用CMarkup类创建xml文件的方法
  4. xe5 android sample 中的 SimpleList 是怎样绑定的
  5. 固高运动控制卡IO口输入输出
  6. 学算法先学数据结构?是否是无稽之谈?
  7. 一款度盘高速下载工具
  8. PPT母版和PPT模板
  9. Portal是什么东东
  10. PyTorch 和 Albumentations 实现图像分类(猫狗大战)
  11. JS基础到结束知识详细大汇总
  12. 更新下来的vue项目如何跑起来
  13. Saladict 沙拉查词
  14. 油菜籽的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  15. 速卖通商品详情API接口(商品详情页面数据接口)
  16. 非华为手机可以刷鸿蒙系统吗,非华为手机用户,你愿意尝试鸿蒙系统吗?
  17. 萌新面试经,赶紧来看看!
  18. 如何扩大营销卖蜂蜜?
  19. 软件测试工程师入门面试理论题库(一)
  20. 【Matlab 克里金】克里金插值

热门文章

  1. 人工智能和游戏化学习
  2. 已公布定向增发预案的公司一览
  3. IDEA如何将Git回退到某个版本
  4. Cook-Torrance Model
  5. QProcess使用
  6. 如何查看电脑内存的各种参数
  7. @Autowire 警告的原因
  8. 激活函数(Activation Functions)
  9. 百度核心团队招募云计算产品经理
  10. 计算激变:当华为跨过一切走向星空