MySQL实施了OGC建议的具有Geometry类型的SQL环境的一个子集。该术语指的是用一组集合类型扩展的环境。具有几何值的SQL列是作为拥有集合类型的列实施的。该规范描述了SQL几何类型集合,以及作用在这些类型上用于创建和分析几何值的函数。关于MySQL空间存储和查询的概念介绍,可以参考这篇博客,写的很详细:
https://blog.csdn.net/zzq900503/article/details/17142621
point
Point(1 1)
multipoint
MULTIPOINT (1 1,2 2,3 3)
linestring
LINESTRING(1 1,2 2,3 3)
multilinestring
MULTILINESTRING ((1 1,2 2,3 3),(2 2,2 3,2 4))
polygon
POLYGON((1 1,1 2,2 2,2 1,1 1))
POLYGON((1 1,,,),(2 2,,,),(3 3,,,))
multipolygon
MULTIPOLYGON(((1 1,1 2,2 2,2 1,1 1)),((2 2,2 3,3 2,2 2)))
INSERT into 表明(字段名) VALUES(ST_GeomFromText(‘上方列举的数据格式‘))
以插入一个point为例:
INSERT into test(point) VALUES(ST_GeomFromText(‘Point(5 5)‘))
插入时使用ST_GeomFromText,也可使用GeomFromText,区别暂时没有研究。该方法是返回源字符串的相应类型的几何值
空间数据相关方法
部分geo对象可用
缓冲区
ST_Buffer(A,length) –> 通过A几何体,生成他周边范围为length距离的面
5.7.7后可以添加策略影响缓冲区的计算,设置的语句是ST_Buffer_Strategy()
举例生成缓冲区
ST_Buffer(point, 5, ST_Buffer_Strategy(‘point_square‘))
ST_Buffer(line, 5, ST_Buffer_Strategy(‘join_miter‘, 10), ST_Buffer_Strategy(‘end_flat‘))
包含、覆盖、重叠三个方法不清楚具体的区别
注意:每个方法前的MBR、ST可要可不要,在mysql5.7.6之后,不带MBR、ST的方法开始弃用
查询样例:
- 查询在指定面中的点sql
select * from test where MBRContains(ST_GeomFromText(‘Polygon((0 0,0 5,5 5,5 0,0 0))‘),point)
- 查询所有point点的x坐标sql
SELECT ST_X(point) FROM test
原文:https://www.cnblogs.com/MisMe/p/13637552.html