空間數據的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的十六進制表達。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM