MYSQL 空间数据类型用法

摘要:
Geometry的主要相关类是此扩展中所有类型的基类。其他类型(如点、线串和多边形)是几何体的子类。LineString:由一系列点连接的线。它可以是实心平面形状,也就是说,它没有内部边界,也可以有孔,类似于按钮。

Geometry主要相关类

Geometry

是所有此扩展中类型得基类,其他类型如Point,LineString,Polygon都是Geometry的子类。Geometry有一些属性,这些属性是所有其他几何类的共有属性:

  • type: 类型(Point, LineString,...)
  • SRID: 该值确定了用于描述定义几何对象的坐标空间的空间坐标系统,参考链接:https://www.cnblogs.com/Joetao/articles/2086846.html
  • coordinates: 坐标值
  • interior, boundary, exterior: interior是几何对象所展空间的部分,boundary是几何对象的边界,exterior是几何对象未占有的空间。
  • MBR: 能够覆盖几何对象的最小矩形,可以想象成信封,它由几何对象中最大最小的坐标值组合而成:((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))
  • simple/nonsimple: 几何对象是否简单
  • closed/not closed: 几何对象是否封闭
  • dimension: 维度数(Point: 0, LineString: 1, Polygon: 2)

其他

Point: 顾名思义就是点,有一个坐标值,没有长度、面积、边界。
LineString: 线,由一系列点连接而成。

如果线从头至尾没有交叉,那就是简单的(simple)
如果起点和终点重叠,那就是封闭的(closed)

Polygon:多边形。可以是一个实心平面形,即没有内部边界,也可以有空洞,类似纽扣。
集合类: MultiPoint, MultiLineString, MultiPolygon, GeometryCollection .这4种类型都是集合类,是多个Point、LineString或Polygon组合在一起而成。

WKT(最常用的几何对象数据格式)

1, Point: POINT(121.213342 31.234532).经度(longitude)在前,维度(latitude)在后,用空格分隔
2, LineString: LINESTRING(121.342423 31.542423,121.345664 31.246790,121.453178 31.456862). 点与点之间用逗号分隔;一个点中的经纬度用空格分隔,与POINT格式一致
3, Polygon: POLYGON((121.342423 31.542423,121.345664 31.246790,121.453178 31.456862),(121.563633 31.566652,121.233565 31.234565,121.568756 31.454367)). 由一个表示外部边界的LineString和0个或多个表示内部边界的LineString组成,最简单的就是只有一个外边界的情况:POLYGON((0 0,10,0 10 10, 0 10))
4, 集合类格式

MULTIPOINT(0 0, 20 20, 60 60)
MULTILINESTRING((10 10, 20 20), (15 15, 30 15))
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))
GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))

几何对象创建函数

MYSQL中几何对象都有特定的格式,一般我们会将WKT串转换为对应格式,才能使用MYSQL提供的函数进行存储计算.常用的有(集合类的不常用暂不说明)
1, GeomFromText(wkt): 创建一个任何类型的几何对象Geometry
2, PointFromText(wkt): 创建一个Point对象
3, LineStringFromText(wkt): 创建一个LineString对象
4, PolygonFromText(wkt): 创建一个Polygon对象

常用SQL处理方式

1, 创建字段类型为geometry
2, 插入时使用"几何对象创建函数"将WKT串转换后存储,方便使用空间函数计算
3, 查询时使用AsText()函数将几何对象转换为WKT串,方便查看

常用处理空间关系的函数

st_contains(g1, g2)
返回1: g1完全包含g2;返回0: g1未包含g2

# 判断点在多边形内
SELECT st_contains(POLYGONFROMTEXT('POLYGON ((109.37258720397949 35.771076679229736,109.3732738494873 35.744125843048096,109.4192361831665 35.74468374252319,109.41404342651367 35.777857303619385,109.37220096588135 35.7754111289978,109.37258720397949 35.771076679229736))'),
GEOMFROMTEXT(CONCAT('Point(',m.gps_x,' ',m.gps_y,')'))) AS res
FROM biz_general_map m 

st_crosses(g1, g2), st_intersects(g1, g2)
返回1: g1与g2相交;返回0:g1与g2未相交

st_disjoint(g1, g2)
是st_crosses的反函数

st_within(g1, g2)
g1在g2内则返回1,否则返回0

常用处理函数

st_union(g1, g2)
将g1和g2合并为一个集合类对象

st_difference(g1, g2)
返回几何对象,该对象表示了几何值g1与g2的点集合差异

st_intersection(g1,g2)
返回几何对象,该对象表示了几何值g1与g2的点集合交集

免责声明:文章转载自《MYSQL 空间数据类型用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Git提交代码报错husky > pre-commitpowershell 发邮件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

centos关闭开机自启项

centos关闭开机自启项先来查看默认情况下Linux系统开启的服务有哪些,由于我们工作在文本模式3级别,因此只需要查找3级别上开启的服务即可。查看命令如下:[root@www~]#LANG=en 先调整成英文字符集,以方便下面命令过滤中文字符串[root@www~]#chkconfig--list|grep3:on可以看到,默认情况下开启了很多服务,我们需...

windows server2012 nVME和网卡等驱动和不识别RAID10问题

安装2012--不识别M.2nVME,下载官方驱动程序,并将其注入没有多个驱动程序的系统--添加ITSK通用驱动程序:|Win8012R2.x64网卡驱动程序无法打开--提取官方驱动程序EXE文件以添加网卡驱动程序不识别SATARAID10--超过2T,最大Legacy为2T。...

【转】QImage 图像格式小结

构造图像:,QImagemyImage1=QImage;根据文件名打开图像。如果图像本身是32位或24位,则程序中的图像是32位。如果图像本身是8位或1位,则程序中的对应图像是8位或者1位。宽度表示图像宽度,高度表示图像高度。...

arcgispro 计算字段示例

使用两个或四个空格来定义每个逻辑级别。Python计算表达式字段将使用感叹号(。简单计算简单字符串示例一系列Python字符串函数支持使用字符串。字符串字段中的字符可以通过索引和拆分操作访问“”bcd“”Python还支持使用format()方法的字符串格式!)常用Python字符串操作简单数学示例Python提供了处理数字的工具。...

libffi

Thisislibffi.info,由libffi.texi生产的bymakeinfo版本5.1。本手册适用于libffi,一个可移植的外国函数接口库。版权所有(C)200820102011redhat,股份有限公司。许可授予复制、分发...

js 设计模式

出乎意料的是,事件只有在离我很近并且需要发布的时候才能执行。5.适配器模式:很像接口传输。例如,后端的数据不能直接用于jsTree。使用适配器模式将数据传输到jsTree格式是编程的基本理念。我平时没注意到,但我不小心用了很多。...