空间数据的WKT和WKB表现形式

  WKT(well-known text)是一种文本标记语言,该格式由开放地理空间联盟(OGC)制定,用于表示矢量数据中的几何对象,在数据传输与数据库存储时,常

用到它的二进制形式,即WKB(well-known binary)。WKTWKBGIS中的重要作用在于,他们能利用文本简洁明了的表达矢量空间要素的几何信息,使得

何信息能以字段的形式存储于数据库中。

  WKT相比WKB更方便人们理解,具有很高的可读性,下图以点线面3种基础矢量数据类型为例,简单说明点构线、线构面的构建关系。WKT中所有的数据

型都以点数据为基础,点坐标的XY值用空格隔开,坐标之间用逗号隔开:

                      

  目前,PostGIS中无论是WKT还是WKB,所支持的矢量数据类型都是相同的7种,除去以上3种简单要素类型外,还有如下4种复合类型:

    • MULTIPOINT

    • MULTILINESTRING

    • MULTIPOLYGON

    • GEOMETRYCOLLECTION

  多点多线与多面的性质相信大家都能理解,GEOMETRYCOLLECTION其实就是多种简单要素类型的集合,比如GEOMETRYCOLLECTION(POINT(2 3),LINESTRING(2 3,3 4)

说明这个几何集合对象中包含了点(2,3)与线(2 33 4),打破了ArcGIS等软件中的同记录同类型的限制。

WKB采用二进制进行存储,更方便于计算机处理,因此广泛运用于数据的传输与存储,以二位点Point(1 1)为例,其WKB表达如下:

           01  0100 0020 E6100000  000000000000F03F 000000000000F03F

        

第一个字节表示编码方式,00为使用big-endian编码(XDR)01为使用little-endian编码(NDR)。他们的不同仅限于在内存中放置字节的顺序,比如我们将0x1234abcd写入到以0×0000开始的内存中,则结果如下表:

 

Address

big-endian

little-endian

0×0000

0x12

0xcd

0×0001

0x34

0xab

0×0002

0xab

0x34

0×0003

0xcd

0x12

第二到第九字节对矢量数据基本信息进行了定义。第二与第三个字节规定了矢量数据的类型,如例子中的0100代表Point;第四与第五个字节规定了矢量数据的维数,如例子中的0020代表该点是二位的;第六到第九个字节规定了矢量数据的空间参考SRID,如例子中的E61000004326的整数十六位进制表达;第十个字节开始,每16个字节就代表一个坐标对,如例子中的000000000000F03F是浮点型1的十六进制表达。

posted on 2015-10-17 10:22  Moral  阅读(14017)  评论(0编辑  收藏  举报

导航