MySql的空間函數操作

MySql版本 > 5.6

# 計算兩個座標點之間的距離
# st_distance 計算的結果單位是度,需要乘111195(地球半徑6371000*PI/180)是將值轉化爲米。
# /1000000 是將值轉化爲Km
SELECT b.*, (st_distance (point (b.lng,b.lat),point (116.368368,40.035424))*111195/1000000 )as juli FROM test_table b HAVING juli < 14 ORDER BY juli ASC


# 判斷座標點是否在多個面中 ST_Contains 的結果 1:表示在面內,0:不在面內
SELECT (ST_Contains (ST_GeomFromText('MultiPolygon (((116.244539 40.076175,116.244909 40.075457,116.245446 40.074242,116.250338 40.075551,116.249281 40.07762,116.248664 40.077677,116.247908 40.077677,116.247291 40.077608,116.246519 40.077415,116.245945 40.077181,116.245532 40.07698,116.245113 40.076713,116.244539 40.076175)))'),point (b.lng,b.lat)))as state, b.* FROM test_table b HAVING state = 1 ORDER BY id

知識拓展:

在MySQL中支持地理空間位置的幾何表示,可存儲的數據類型包括Geometry,Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon、GeometryCollection。其中Geometry可以支持任何一種空間類型的表示。

如下是各種空間幾何對象的座標文本表示(Well-known text, WKT):

常見的幾何圖形元素:

常見的空間幾何元素:

多個同類或異類元素間的組合:

多個元素組合:

對於空間幾何數據的存儲和傳輸,除了WKT這種文本標記語言,MySQL中還常用到一種二進制格式(Well-Known Binary ,WKB),以及數據庫內部存儲的幾何格式。這些格式最初是由Open Geospatial Consortium(OGC)組織定義的,遵循OGC標準,MySQL對中其SQL with Geometry Types環境下的一個子集實現了空間擴展。

常用的空間計算函數

1、判斷兩點之間的距離

ST_Distance(g1,g2),返回g1和g2之間的距離。如果任一參數是NULL或空幾何,則 return value 爲NULL。

2、圖形1是否完全包含圖形2

ST_Contains(g1,g2),返回 1 或 0 以指示g1是否完全包含g2。還可以用ST_Within(g2,g1)達到相同的效果。

3、不相交

ST_Disjoint(g1,g2),返回 1 或 0 以指示g1是否在空間上與(不相交)g2不相交。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章