zoukankan      html  css  js  c++  java
  • 空间数据的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的十六进制表达。

  • 相关阅读:
    PorterDuff及Xfermode初识
    Android内存优化之——static使用篇
    Realm for Android快速入门教程
    Android 你应该知道的学习资源 进阶之路贵在坚持
    Google 发布 Android 性能优化典范
    Android Studio 打包及引用 aar
    Android CoordinatorLayout + AppBarLayout(向上滚动隐藏指定的View)
    elevation 和 translationZ的区别
    rsync+inotify实时数据同步多目录实战
    rsync+inotify实时数据同步单目录实战
  • 原文地址:https://www.cnblogs.com/qdhotel/p/4887032.html
Copyright © 2011-2022 走看看