天天看點

MySQL引擎特性GIS-R-TREE

MySQL引擎特性GIS-R-TREE

    Geohash用于代表位置的經緯度編碼成一個字元串,支援WGS 84 Coordinate System 

    MySQL支援的空間資料類型包括GEOMETRY,POINT,LINESTRING,POLYGON.其中GEOMETRY可以表示任意一種空間類型,其他幾種則需要固定有效的存儲格式如(MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION)

    兩種标準插入資料:

    1、WTK文本格式,在插入資料時直接用文本插入,如point(1,2)、LINESTRING(0 0, 10 10, 20 25, 50 60),内部會轉換成特定的格式存儲,通過ASTEXT()轉換成WKT的結果格式

    2、WKB标準的資料,通過函數GeomFromWKB進行插入轉換,如point(1 2)包含21位元組,在從表中查取資料時,通過ASBINARY()将結果轉換成WKB各式

    #在INNODB存儲引擎中使用的存儲為BLOB類型,存儲的資料格式為WKB格式,再加上4位元組的SRID(Spatial Reference Identifier.空間關系标示)

MBR介紹

    R-TREE專門用來表示空間資料類型,存儲的記錄類型是該空間資料所能表示的最小邊界的矩形,簡稱MBR(最小邊框矩形minimum bounding rectangle)

    MBR記錄能包圍這些空間的最小矩形,對于水準或垂直的直線,MBR實際上記錄的是直線,POINT話MBR表示的是一個退化成點的矩形

R-TREE部分特點:

       1、葉子節點記錄包含了MBR以及指向的聚集索引記錄,非葉子節點記錄包含了指向葉子節點的指針,及對應葉子節點記錄所組成的MBR,目前隻支援二維資料的索引

   2、SPATIAL INDEX的鍵值的列必須顯示定義為NOT NULL,隻支援定義一個空間資料類型的列

   3、R-TREE采用一種和B-TREE截然不同的資料檢索方式,檢索過程中主要通過SSN(SPLIT SEQ NUM)來判斷是否有資料頁發生了分裂

   4、RTREE中存儲的并不是真正的資料,而是基于鍵值列的資料建構的MBR,是以在插入資料前需要計算根據傳遞過來的WKB格式計算出MBR,是以必須通過聚集索引擷取真正的地理資料

   5、目前不支援緩存R-TREE的資料變更操作,也不支援自适應哈希,無法使用NEXT-KEY來防止幻讀,是以引入Predicate Lock來防止幻讀

關于空間資料類型的分析計算函數(可以從官方文檔上獲得全部資訊):

    1、ST_GEOMFROMTEXT用于将空間資料從可讀的文本類型轉換成内部存儲的二進制類型

    2、ST_ASTEXT将空間資料轉換成可讀的文本類型

    3、POINT(arg1,arg2)函數使用者代表地理空間上某個點的位置,arg1為經度,arg2為次元

    4、ST_DISTANCE_SPHERE:計算兩個地點的球面距離,機關為米

    5、MBRWITHIN:該函數為求出你周圍的目的地目标,MBRWITHIN(g1,g2)意義:如果g1在g2的範圍内則傳回1否則傳回0

    6、MBRCONTAINS:表示某個多變形内是否包含某個點,或某距離内包含某點

    7、MBRINTERSECTS:使用者判斷兩個空間類型是否存在重疊或者交叉

    8、MBRDISJOINT:判斷是否相交,不相交傳回1

    9、MBROVERLAPS:當g1和g2存在重疊時傳回1,重疊指的是兩個空間類型的交叉部分産生相同次元的幾何圖形,但不等于g1或g2

    10、MBREQUAL:是否相等

    11、MBRTOUCHES:存在重合但不相交時傳回1,如某個點在一條直線上傳回1

本文轉自 DBAspace 51CTO部落格,原文連結:http://blog.51cto.com/dbaspace/1981227