地理空间数据Geometry在MySQL中使用(二)
提取属性类
获取维度信息
Dimension(g)
返回对象g的维度信息
创建对象 |
SET @g1 = geomFromText('POINT(1 3 )'); SET @l1 = geomFromText('LINESTRING(15 15, -2000 20)'); SET @p1 = geomFromText('POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))'); SET @mp1 = geomFromText('MULTIPOINT(0 0, 20 20, 60 60)'); SET @ml1 = geomFromText('MULTILINESTRING((10 10, 20 20), (15 15, 30 15))'); SET @mpl1 = geomFromText('MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)), ((5 5, 7 5, 7 7, 5 7, 5 5)))'); SET @gm1 = geomFromText('GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))'); |
查询 |
SELECT Dimension(@g1),Dimension(@l1),Dimension(@p1),Dimension(@mp1),Dimension(@ml1),Dimension(@mpl1),Dimension(@gm1); |
查询结果 |
点:0 线:1 多边形:2 |
获取最小边界矩形
Envelope(g)
返回对象g的最小边界矩形(MBR)。结类型为Polygon值。
创建对象 |
SET @l1 = geomFromText('LINESTRING(1 1, 3 3)'); |
查询 |
SELECT envelope(@l1); |
查询结果 |
获取类型信息
GeometryType(g)
以字符串形式返回几何类型的名称,如POINT,LINESTRING
创建对象 |
SET @l1 = geomFromText('LINESTRING(1 1, 3 3)'); |
查询 |
SELECT GeometryType(@l1); |
查询结果 |
对象是否封闭
IsClosed(g)
返回对象g是否封闭
创建对象 |
SET @l1 = geomFromText('LINESTRING(1 1, 3 3)'); |
查询 |
SELECT IsClosed(@l1); |
查询结果 |
对象是否简单
IsSimple(g)
返回对象g是否简单
创建对象 |
SET @l1 = geomFromText('LINESTRING(1 1, 3 3)'); |
查询 |
SELECT IsSimple(@l1); |
查询结果 |
Point类
获取点的X坐标
X(p)
以双精度数值返回点p的X坐标值(经度)。
创建对象 |
SET @g1 = geomFromText('POINT(1.111 3.333 )'); |
查询 |
SELECT X(@g1); |
查询结果 |
获取点的Y坐标
Y(p)
以双精度数值返回点p的Y坐标值(纬度)。
创建对象 |
SET @g1 = geomFromText('POINT(1.111 3.333 )'); |
查询 |
SELECT Y(@g1); |
查询结果 |
获取两点的距离
st_distance(g1, g2)
计算两点之间的直线距离
创建对象 |
SET @g1 = geomFromText('POINT(1 3 )'); SET @g2 = geomFromText('POINT(1 5 )'); |
查询 |
SELECT st_distance(@g1, @g2) |
查询结果 |
获取两点之间的地理距离
st_distance_sphere(g1, g2)
计算两点之间的地理距离,单位米,例如记录店铺与用户间的距离
创建对象 |
SET @g1 = geomFromText('POINT(1 3 )'); SET @g2 = geomFromText('POINT(1 5 )'); |
查询 |
SELECT st_distance_sphere(@g1, @g2) |
查询结果 |
LineString类
获取线长
GLENGTH(line)
返回对象line的长度
创建对象 |
SET @l1 = geomFromText('LINESTRING(1 1, 3 3, 5 5)'); |
查询 |
SELECT GLENGTH(@l1); |
查询结果 |
获取线段包含的点的数目
NUMPOINTS (line)
返回对象line包含的点的数目
创建对象 |
SET @l1 = geomFromText('LINESTRING(1 1, 3 3, 5 5)'); |
查询 |
SELECT NUMPOINTS (@l1); |
查询结果 |
获取线的终点
EndPoint(line)
返回对象line的最后一个点Point
创建对象 |
SET @l1 = geomFromText('LINESTRING(1 1, 3 3, 5 5)'); |
查询 |
SELECT EndPoint(@l1); |
查询结果 |
获取线的起点
StartPoint(line)
返回对象line的第一个点Point
创建对象 |
SET @l1 = geomFromText('LINESTRING(1 1, 3 3, 5 5)'); |
查询 |
SELECT StartPoint(@l1); |
查询结果 |
获取线的第N个点
PointN(line, N)
返回对象line中第N个点,N从1开始
创建对象 |
SET @l1 = geomFromText('LINESTRING(1 1, 3 3, 5 5)'); |
查询 |
SELECT PointN(@l1, 2); |
查询结果 |
Polygon类
获取多边形的面积
area(poly)
返回对象poly的面积
创建对象 |
SET @p1 = geomFromText('POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))'); |
查询 |
SELECT area(@p1); |
查询结果 |
获取多边形的外环
ExteriorRing(poly)
返回对象poly的外环,类型为LineString
创建对象 |
SET @p1 = geomFromText('POLYGON((1 1, 3 1, 2 4, 1 1))'); |
查询 |
SELECT ExteriorRing(@p1); |
查询结果 |
获取多边形的第N个内环
InteriorRingN(poly, N)
返回对象poly的第N个内环,N从1开始
创建对象 |
SET @p1 = geomFromText('POLYGON((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))'); |
查询 |
SELECT InteriorRingN (@p1, 1); |
查询结果 |
获取多边形的内环个数
NumInteriorRings(poly)
返回对象poly的内环个数
创建对象 |
SET @p1 = geomFromText('POLYGON((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))'); |
查询 |
SELECT NumInteriorRings(@p1); |
查询结果 |
集合类
获取指定位置的几何对象
GEOMETRYN(g,N)
获取集合对象g的第N个对象
创建对象 |
SET @mp1 = geomFromText('MULTIPOINT(0 0, 20 20, 60 60)'); |
查询 |
SELECT GEOMETRYN(@mp1,1); |
查询结果 |
获取集合中包含的几何对象数量
NUMGEOMETRIES (g)
获取集合对象g中的几何对象数量
创建对象 |
SET @mp1 = geomFromText('MULTIPOINT(0 0, 20 20, 60 60)'); |
查询 |
SELECT NUMGEOMETRIES(@mp1); |
查询结果 |
创建新的几何对象
合并
st_union(@g1, @g2)
将g1和g2合并为一个集合类对象
创建对象 |
SET @g1 = geomFromText('POINT(1.111 3.333 )'); SET @l1 = geomFromText('LINESTRING(1 1, 3 3, 5 5)'); |
查询 |
SELECT st_union(@g1,@p1); |
查询结果 |
差异
st_difference(@g1,@g2)
返回几何对象,该对象表示了几何值g1与g2的点集合差异
创建对象 |
SET @g1 = geomFromText('POINT(1.111 3.333 )'); SET @l1 = geomFromText('LINESTRING(1 1, 3 3, 5 5)'); |
查询 |
SELECT st_difference(@g1,@p1); |
查询结果 |
交集
st_intersection(g1,g2)
返回几何对象,该对象表示了几何值g1与g2的点集合交集
创建对象 |
SET @p1 = geomFromText('POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))'); SET @p2 = geomFromText('POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))'); |
查询 |
SELECT st_intersection(@p1,@p2); |
查询结果 |
差集
ST_SymDifference(g1,g2)
返回几何对象,该对象表示了几何值g1与g2的差集
创建对象 |
SET @p1 = geomFromText('POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))'); SET @p2 = geomFromText('POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))'); |
查询 |
SELECT ST_SymDifference(@p1, @p2); |
查询结果 |
获取对象之间的空间关系
根据包含关系生成标记列
st_contains(g1, g2)
返回1: g1完全包含g2;返回0: g1未包含g2
创建对象 |
SET @p1 = geomFromText('POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))'); SET @p2 = geomFromText('POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))'); |
查询 |
SELECT st_contains(@p2,@p1); |
查询结果 |
根据相交关系生成标记列
st_crosses(g1, g2), st_intersects(g1, g2)
返回1: g1与g2相交;返回0:g1与g2未相交
创建对象 |
SET @l1 = geomFromText('LINESTRING(1 1, 3 3, 5 5)'); SET @l2 = geomFromText('LINESTRING(3 0, 3 3, 3 5)'); |
查询 |
SELECT st_crosses(@l1,@l2),st_intersects(@l1,@l2); |
查询结果 |
根据相交关系生成标记列(反向标记)
st_disjoint(g1, g2)是st_crosses的反函数
创建对象 |
SET @l1 = geomFromText('LINESTRING(1 1, 3 3, 5 5)'); SET @l2 = geomFromText('LINESTRING(3 0, 3 3, 3 5)'); |
查询 |
SELECT st_disjoint(@l1,@l2),st_intersects(@l1,@l2); |
查询结果 |
根据包含关系生成标记列(反向标记)
st_within(g1, g2)
g1在g2内则返回1,否则返回0
创建对象 |
SET @p1 = geomFromText('POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))'); SET @p2 = geomFromText('POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))'); |
查询 |
SELECT st_within(@p1,@p2); |
查询结果 |
根据交叉关系生成标记列
ST_Intersects(g1, g2)
g1和g2有交叉和重叠则返回1,否则返回0
创建对象 |
SET @p1 = geomFromText('POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))'); SET @p2 = geomFromText('POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))'); |
查询 |
SELECT st_intersects(@p1, @p2) |
查询结果 |
根据相等关系生成标记列
ST_Equals(g1, g2)
g1和g2相等则返回1,否则返回0
创建对象 |
SET @p1 = geomFromText('POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))'); SET @p2 = geomFromText('POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))'); |
查询 |
SELECT ST_Equals(@p1, @p2) |
查询结果 |
根据接触关系生成标记列
ST_Touches (g1, g2)
g1和g2相接处则返回1,否则返回0
创建对象 |
SET @p1 = geomFromText('POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))'); SET @p2 = geomFromText('POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))'); |
查询 |
SELECT ST_Touches(@p1, @p2) |
查询结果 |
获取最小边界矩形的空间关系
包括如下函数,使用方法同获取对象之间空间关系的函数:
MBRCONTAINS
MBRDISJOINT
MBREQUAL
MBRINTERSECTS
MBROVERLAPS
MBRTOUCHES
MBRWITHIN
地理空间数据Geometry在MySQL中使用(二)相关推荐
- 地理空间数据Geometry在MySQL中使用(一)
在MySQL中,Geometry等几何对象可以用来表示地理位置,即用几何对象表示地理空间数据. 在MySQL中支持的几何数据类型包括Geometry.Point.LineString.Polygon以 ...
- 城市地理空间数据可视化
城市地理空间数据是跟城市中一切与地理空间分布有关的各种要素的图形信息.属性信息以及相互空间关系的总称. 城市地理空间数据的可视化表达就是根据相应的专题数据或是指标,采用一定的算法,对空间要素进行分类分 ...
- MySQL中地理位置数据扩展geometry的使用心得
最近学习了些MySQL geometry数据存储和计算,在这里记录下. 1. 环境 geometry推荐在5.6版本以上使用,尽管大部分功能在5.5已经可用,除了距离计算函数st_distance等新 ...
- 测试面试问道MySQL_Mysql精华总结,解决测试人员面试中碰到的一切Mysql问题(二)...
五.MySQL查询 问题1:count() 和 count(1)和count(列名)区别 答: 执行效果上 count()包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL coun ...
- 一、TCL事务控制语言 二、MySQL中的约束 三、多表查询(重点) 四、用户的创建和授权 五、MySQL中的索引...
一.TCL事务控制语言 ###<1>事务的概念 事务是访问并可能更新数据库中各种数据项的执行单元. 事务是一条SQL语句,一组SQL语句,或者整个程序. 事务是恢复和并发控制的基本单位. ...
- mysql 地理_MySQL geometry地理位置数据存储和计算
最近学习了些MySQL geometry数据存储和计算,在这里记录下. 1. 环境 geometry推荐在5.6版本以上使用,尽管大部分功能在5.5已经可用,除了距离计算函数st_distance等新 ...
- MySQL中的关键字用法(二)
MySQL中的关键字的用法(二) limit:偏移量和数量 注意limit和offset的区别,下面有写到offset,注意区分: 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时 ...
- 在mysql中显示数据库数据类型_MySQL(二) 数据库数据类型详解
序言 今天去健身了,感觉把身体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这里讲清楚了,以后在看到什么数据类型,咱度应该认识,下面就跟着我的节奏去把这个拿下吧. ---WZY 一 ...
- mysql中出现 xC4 xDD_mysql数据库调优总结(二)
第五.查询优化 1.查询慢的原因:网络因素.CPU.IO.上下文切换.系统调用.生成统计信息.锁等待时间等 2.优化数据库访问:查询性能地下的原因是访问的数据太多,某些查询不可避免的需要筛选大量的数据 ...
最新文章
- 微信开放JS-SDK,助力网页开发[转自微信官方]
- 自然语言处理NLP国内研究方向机构导师
- Putty中文乱码的解决方法
- 不安全的食品,如何“安全地”上了货架?
- 报表查询——自动刷新数据,双击明细打开关联作业
- Silverlight开发历程—模糊特效与投影特效
- 计算机网络专科升本科,目前专科升本科有哪几种途径?
- mysql怎么加固_mysql安装及加固
- 创业失败感悟第二十七天
- MySQL分页查询优化
- 智能优化算法:海鸥优化算法-附代码
- java收到邮件后短信提醒_java邮件发送和短信发送(二)
- matlab创建数组
- 一个单位球体积理清二三重积分计算与体积的求解方法(含旋转体体积)
- 算法之显著性检测《Saliency Detection: A Spectral Residual A》
- 半连续性:上半连续与下半连续
- 2.10 MapReduce文件合并
- Unity Shader 内置函数
- android 休眠锁
- GPU通用计算与CUDA
热门文章
- 快、准、狠!秒杀Excel的报表工具,十分钟教你做好数据填报
- 帆软报表插件开发之fine-decision中的GlobalRequestFilterProvider扩展
- 案例学习BlazeDS+Spring之十二:Traderdesktop
- oracle 用户创建日期,oracle限制一个用户空闲时间
- Vivado设计流程(五)工程实现
- 目标检测——各个框架下Tensor和矩阵的维度次序
- C#中的System.Speech命名空间初探
- 软工实践-第三次会议
- Yii2框架之旅(六)
- python_day24_class_类_继承