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不相交。

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