ST_DWITHIN函數用於判斷兩個地理對象之間的最短距離是否小於或等於指定的距離值。
命令格式
BOOLEAN ST_DWITHIN(GEOGRAPHY <value1>, GEOGRAPHY <value2>, DOUBLE <distance>)參數說明
value1、value2:必填。GEOGRAPHY資料類型的地理對象。可根據需求使用ST_GEOGPOINT、ST_GEOGFROMWKB、ST_GEOGFROMTEXT、ST_MAKELINE和ST_MAKEPOLYGON函數來構造GEOGRAPHY類型對象。
distance:必填。DOUBLE類型。距離閾值,單位為米。
傳回值說明
返回BOOLEAN類型。返回規則如下:
若value1中任意一點到value2中任意一點的最短距離小於或等於distance,則返回TRUE;否則返回FALSE。
若value1或value2為空白的地理對象,則返回FALSE。
使用樣本
樣本1:判斷兩個地理點之間的最短距離是否在給定閾值內。
-- 返回FALSE,兩個點之間的距離約為157249.63米,大於給定閾值157249.0 SELECT ST_DWITHIN(ST_GEOGFROMTEXT('POINT(0 0)'), ST_GEOGFROMTEXT('POINT(1 1)'), 157249.0); -- 返回TRUE,兩個點之間的距離小於給定閾值157249.7 SELECT ST_DWITHIN(ST_GEOGFROMTEXT('POINT(0 0)'), ST_GEOGFROMTEXT('POINT(1 1)'), 157249.7);樣本2:空地理對象處理
-- 返回FALSE,因為有一個地理對象是empty SELECT ST_DWITHIN(ST_GEOGFROMTEXT('POINT(0 0)'), ST_GEOGFROMTEXT('POINT EMPTY'), 157249.7);樣本3:判斷點是否在多邊形內部(距離為0)
-- 返回TRUE,因為POINT(0 0)在POLYGON內部,最短距離為0 SELECT ST_DWITHIN(ST_GEOGFROMTEXT('POINT(0 0)'), ST_GEOGFROMTEXT('POLYGON((-1 -1, 1 -1, 1 1, -1 1, -1 -1))'), 0.0);