MySQL空间查询

news2024/11/22 20:28:16

MySQL空间查询

文章目录

  • MySQL空间查询
    • 1. 空间数据支持
    • 2. 空间函数支持
    • 3. 操作示例
      • 3.1 创建表结构
      • 3.2 插入数据
      • 3.3 查询空间相交数据
    • 4. 参考链接

1. 空间数据支持

MySQL 具有对应于 OpenGIS 类的空间数据类型。一些空间数据类型包含单个几何值:

  • GEOMETRY
  • POINT
  • LINESTRING
  • POLYGON

GEOMETRY可以存储任何类型的几何值。其他单值类型(POINTLINESTRINGPOLYGON)将它们的值限制为特定的几何类型。

其他空间数据类型包含值的集合:

  • MULTIPOINT
  • MULTILINESTRING
  • MULTIPOLYGON
  • GEOMETRYCOLLECTION

GEOMETRYCOLLECTION可以存储任何类型的对象的集合。其他集合类型(MULTIPOINTMULTILINESTRINGMULTIPOLYGON)将集合成员限制为具有特定几何类型的成员。

示例:要创建一个名为 的表,该表geom具有一个名为g可以存储任何几何类型的值的列,请使用以下语句:

CREATE TABLE geom (g GEOMETRY);

2. 空间函数支持

下表列出了每个空间函数并提供了每个函数的简短描述。

表 1空间函数

姓名描述介绍
GeomCollection()从几何构造几何集合
GeometryCollection()从几何构造几何集合
LineString()从点值构造 LineString
MBRContains()一个几何体的 MBR 是否包含另一个几何体的 MBR
MBRCoveredBy()一个 MBR 是否被另一个 MBR 覆盖
MBRCovers()一个 MBR 是否覆盖另一个
MBRDisjoint()两个几何形状的 MBR 是否不相交
MBREquals()两个几何结构的MBR是否相等
MBRIntersects()两个几何图形的 MBR 是否相交
MBROverlaps()两个几何形状的MBR是否重叠
MBRTouches()两个几何形状的 MBR 是否接触
MBRWithin()一个几何体的 MBR 是否在另一个几何体的 MBR 内
MultiLineString()从 LineString 值构造 MultiLineString
MultiPoint()从点值构造多点
MultiPolygon()从 Polygon 值构造 MultiPolygon
Point()从坐标构造点
Polygon()从 LineString 参数构造多边形
ST_Area()返回多边形或多边形区域
ST_AsBinary(),ST_AsWKB()从内部几何格式转换为 WKB
ST_AsGeoJSON()从几何生成 GeoJSON 对象
ST_AsText(),ST_AsWKT()从内部几何格式转换为 WKT
ST_Buffer()返回距几何体给定距离内的点的几何体
ST_Buffer_Strategy()为 ST_Buffer() 生成策略选项
ST_Centroid()将质心作为一个点返回
ST_Collect()将空间值聚合到集合中8.0.24
ST_Contains()一个几何体是否包含另一个
ST_ConvexHull()返回几何的凸包
ST_Crosses()一个几何图形是否与另一个几何图形相交
ST_Difference()两个几何的返回点集差
ST_Dimension()几何尺寸
ST_Disjoint()一个几何图形是否与另一个几何图形不相交
ST_Distance()一个几何体与另一个几何体的距离
ST_Distance_Sphere()地球上两个几何之间的最小距离
ST_EndPoint()线串终点
ST_Envelope()返回几何的 MBR
ST_Equals()一个几何体是否等于另一个
ST_ExteriorRing()返回多边形的外环
ST_FrechetDistance()一个几何体与另一个几何体的离散 Fréchet 距离8.0.23
ST_GeoHash()产生一个 geohash 值
ST_GeomCollFromText(), ST_GeometryCollectionFromText(),ST_GeomCollFromTxt()从 WKT 返回几何集合
ST_GeomCollFromWKB(),ST_GeometryCollectionFromWKB()从 WKB 返回几何集合
ST_GeometryN()从几何集合中返回第 N 个几何
ST_GeometryType()返回几何类型的名称
ST_GeomFromGeoJSON()从 GeoJSON 对象生成几何图形
ST_GeomFromText(),ST_GeometryFromText()从 WKT 返回几何
ST_GeomFromWKB(),ST_GeometryFromWKB()从 WKB 返回几何
ST_HausdorffDistance()一个几何体与另一个几何体的离散 Hausdorff 距离8.0.23
ST_InteriorRingN()返回多边形的第 N 个内环
ST_Intersection()返回点集两个几何的交集
ST_Intersects()一个几何图形是否与另一个几何图形相交
ST_IsClosed()几何是否封闭且简单
ST_IsEmpty()几何是否为空
ST_IsSimple()几何是否简单
ST_IsValid()几何是否有效
ST_LatFromGeoHash()从 geohash 值返回纬度
ST_Latitude()点返回纬度8.0.12
ST_Length()返回 LineString 的长度
ST_LineFromText(),ST_LineStringFromText()从 WKT 构建 LineString
ST_LineFromWKB(),ST_LineStringFromWKB()从 WKB 构造 LineString
ST_LineInterpolatePoint()沿 LineString 给定百分比的点8.0.24
ST_LineInterpolatePoints()沿 LineString 给定百分比的点8.0.24
ST_LongFromGeoHash()从 geohash 值返回经度
ST_Longitude()返回点的经度8.0.12
ST_MakeEnvelope()围绕两点的矩形
ST_MLineFromText(),ST_MultiLineStringFromText()从 WKT 构建 MultiLineString
ST_MLineFromWKB(),ST_MultiLineStringFromWKB()从 WKB 构建 MultiLineString
ST_MPointFromText(),ST_MultiPointFromText()从 WKT 构造多点
ST_MPointFromWKB(),ST_MultiPointFromWKB()从 WKB 构造多点
ST_MPolyFromText(),ST_MultiPolygonFromText()从 WKT 构建多边形
ST_MPolyFromWKB(),ST_MultiPolygonFromWKB()从 WKB 构建多边形
ST_NumGeometries()返回几何集合中的几何数
ST_NumInteriorRing(),ST_NumInteriorRings()返回多边形中的内环数
ST_NumPoints()返回 LineString 中的点数
ST_Overlaps()一个几何图形是否与另一个几何图形重叠
ST_PointAtDistance()沿 LineString 给定距离的点8.0.24
ST_PointFromGeoHash()将 geohash 值转换为 POINT 值
ST_PointFromText()从 WKT 构造点
ST_PointFromWKB()从 WKB 构造点
ST_PointN()从 LineString 返回第 N 个点
ST_PolyFromText(),ST_PolygonFromText()从 WKT 构造多边形
ST_PolyFromWKB(),ST_PolygonFromWKB()从 WKB 构建多边形
ST_Simplify()返回简化几何
ST_SRID()返回几何的空间参考系统 ID
ST_StartPoint()线串起点
ST_SwapXY()交换 X/Y 坐标的返回参数
ST_SymDifference()两个几何的返回点集对称差
ST_Touches()一个几何体是否接触另一个
ST_Transform()变换几何坐标8.0.13
ST_Union()两个几何图形的返回点集并集
ST_Validate()返回验证几何
ST_Within()一个几何体是否在另一个几何体中
ST_X()返回 Point 的 X 坐标
ST_Y()返回 Point 的 Y 坐标

3. 操作示例

效果如下:

在这里插入图片描述

3.1 创建表结构

DROP TABLE IF EXISTS target_polygon;
CREATE TABLE `target_polygon` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `out_line` geometry NOT NULL SRID 4326, -- 指定4326(WGS-84)坐标系
  PRIMARY KEY (`id`),
  SPATIAL INDEX (`out_line`) -- 空间索引,提高空间查询速度
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在这里插入图片描述

3.2 插入数据

# 插入源格式为GeoJSON的数据
INSERT INTO target_polygon VALUES (1,ST_GeomFromGeoJSON('{"type":"Polygon","coordinates":[[[117.205262,31.870465],[117.254387,31.872216],[117.242555,31.847807],[117.216171,31.845654],[117.205262,31.870465]]]}')); -- 注意首尾点闭合,否则插入报错
INSERT INTO target_polygon VALUES (2,ST_GeomFromGeoJSON('{"type":"Polygon","coordinates":[[[117.307531,31.841532],[117.354107,31.833384],[117.339544,31.799192],[117.306117,31.815102],[117.307531,31.841532]]]}'));
INSERT INTO target_polygon VALUES (3,ST_GeomFromGeoJSON('{"type":"Polygon","coordinates":[[[117.353999,31.737498],[117.40432,31.745964],[117.395446,31.723819],[117.357326,31.721851],[117.353999,31.737498]]]}'));

在这里插入图片描述

3.3 查询空间相交数据

# 定义查询多边形
SET @queryPolygon = CONCAT('{"type":"Polygon","coordinates":[[[117.293996,31.884109],[117.493224,31.883049],[117.441397,31.694935],[117.295797,31.702517],[117.293996,31.884109]]]}');
# 使用变量,查询相交部分
select *,ST_AsGeoJSON(out_line) geojson from target_polygon where ST_INTERSECTS( out_line, ST_GeomFromGeoJSON(@queryPolygon) ); -- 将查询结果转为GeoJSON格式

在这里插入图片描述

4. 参考链接

[1]. MySQL 8.0 Manual-空间数据类型

[2]. MySQL 8.0 Manual-空间函数参考

[3]. MySQL 8.0 Manual-创建空间索引

[4]. MySQL 8.0 Manual-空间 GeoJSON 函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/519219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PCS-2022-VVC中帧内和帧间预测的统一快速划分算法

本文来自PCS 2022的论文《Unified Fast Partitioning Algorithm for Intra and Inter Predictions in Versatile Video Coding》 介绍 VVC (Versatile Video Coding) 标准采用了比HEVC (High Efficiency Video Coding) 标准更灵活的划分结构,在HEVC的四叉树划分结构…

前端CSS经典面试题总结

前端CSS经典面试题总结 2.1 介绍一 下 CSS 的盒子模型?2.2 css 选择器优先级?2.3 垂直居中几种方式?2.4 简明说一下 CSS link 与 import 的区别和用法?2.5 rgba和opacity的透明效果有什么不同?2.6 display:none和visib…

在大模型的喧嚣中,SAS向企业AI押注70亿

ChatGPT和GPT所代表的大模型,已经在国内形成了海啸效应,几乎所有顶级科技企业都在想方设法进入大模型赛道。大模型的最大价值在于普遍提升个人生产力,而各行各业的公司都在积极寻找应用大模型和生成式AI的机会,以普遍提升全员生产…

IntelliJ IDEA 安装及配置详细教程

IDEAIntelliJ IDEA 安装及配置详细教程 1、下载2、安装3、IDEA使用设置3.1 进入设置界面3.2 JDK配置3.3 主题样式设置3.4 字体样式设置3.5 编辑器背景颜色设置3.6 字符集和配置文件编码格式设置3.7 设置鼠标悬浮提示 4、idea配置maven5、idea创建springboot工程 IntelliJ IDEA …

MYSQL02高级_目录结构、默认数据库、表文件、系统独立表空间

文章目录 ①. MySQL目录结构②. 查看默认数据库③. MYSQL5.7和8表文件③. 系统、独立表空间 ①. MySQL目录结构 ①. 如何查看关联mysql目录 [rootmysql8 ~]# find / -name mysql /var/lib/mysql /var/lib/mysql/mysql /etc/selinux/targeted/tmp/modules/100/mysql /etc/seli…

服务(第二十篇)mysql高级查询语句(一)

准备环境: 两张表:location和store_info; 1、查询语句类型 ①SELECT "字段" FROM "表名"; 只查看表中的指定字段; 还可以根据查询的字段位置进行排序; ②SELECT DISTINCT "字段…

C语言生成随机数【简易抽卡代码为例】

文章目录 前言一、生成随机数rand() 函数srand()函数time()函数生成一个真正的随机数 二、使用小技巧三、使用代码实例(简易抽卡)总结 前言 本文将详细解释如何在C语言中生成随机数,并介绍应用的小技巧 一、生成随机数 c语言生成一个真正的…

ESP32 partition(分区表)(15)

提示:本博客作为学习笔记,有错误的地方希望指正,主要参考乐鑫技术手册说明结合实例代码分析,结合理论知识学习后示例分析以及常见问题说明。 文章目录 一、ESP32 Partition概述二、内置分区表三、创建自定义分区表四、生成二进制分…

设备树(属性)简介

1 设备树 简单的整理记录; 学习参考内容: Linux 笔记 https://xuesong.blog.csdn.net/article/details/109522945?spm1001.2014.3001.5502正点原子-左盟主 驱动开发网络资料:IT界小生 https://www.zhihu.com/column/itlife 1.1 设备树简介…

springboot+freemarker+restful

什么是freemarker? FreeMarker是一种模板引擎,它可以用于生成各种类型的文档,比如HTML、XML、PDF、Word等。它可以通过简单的模板语法和数据模型来生成文档内容。与传统的JSP相比,FreeMarker的语法更加简洁和易读,并且可以很好地…

女生学习软件测试怎么样?

在IT技术行业,女生学习还是有很大优势的。女生相较于男生更有耐心,包容性强,心思细腻,对细节把控更好,同时还能帮助团队男女平衡,活跃气氛。 编程是一个只要你肯学习就会有回报的行业,不论男生…

1W字理解Java虚拟机——JVM

目录 一、初识JVM 二、JVM执行流程 三、内存区域划分(JVM运行时数据区) 3.1 本地方法栈(线程私有) 3.2 程序计数器(线程私有,无并发问题) 3.3 JVM虚拟机栈(线程私有&#xff0…

【小程序】微信云托管对象存储管理

微信云托管对象存储用于存放数据或文件,一般用于较大数据或较大文件上传时的中转对象,避免直接上传到服务端,影响服务性能。 对象存储 开通了云托管平台后会自动开通对象存储功能。简单理解就是一个文件目录即可。 存储文件 文件名称&…

串口全双工通信与串口中断

1.串口通信编程 STC-ISP串口助手的使用: 文本模式和HEX模式的区别:文本模式就是那些可打印的字符。HEX模式就是这些可打印字符对应的16进制。它们都对应相同的ASCII码(用十进制表示)。 很多小白在程序编写完成后调试时会搞不清楚…

利用notepad++处理数据,再用excel做则线图

1、利用串口调试XCOM V2.8得到数据 2、利用Notepad编辑数据 利用正则表达式 删除时间戳 移除空行 继续删掉不要的数据 3、用excel生成折线图 复制数据到excel excel自动根据上文公式填充计算 输入0.1和0.2 框选0.1和0.2,下拉

JavaScript-jQuery的使用 + JS的案例

目录 点击更换图片 猜数字 搜索页面展示 表白墙 点击更换图片 我们先看下面这个例子: 使用input里面的button按钮, 并且利用函数, 将一个搜狗logo转换为百度logo: <!DOCTYPE html> <html lang"en"> <head><meta charset&…

Maven下载安装及IDEA配置Maven的超详细教程

Maven下载安装及IDEA配置Maven的超详细教程 1、IntelliJ IDEA 下载、安装及配置过程2、maven下载、安装、配置过程2.1 mavan下载2.2 安装2.3 配置 3、在IDEA中配置Maven3.1 进入设置界面3.2 maven配置 4、IDEAmaven创建工程示例 Maven是一个能使我们的java程序开发节省时间和精…

ssl证书过期

SSL证书验证网站所有者的身份&#xff0c;并为其访问者建立与服务器的安全加密连接。它保护他们的安全和隐私。 但SSL证书并非永远有效。与您的驾驶执照或护照一样&#xff0c;SSL证书也有过期日期。过期日期后&#xff0c;服务器的身份不再受信任。 为什么网站安全证书会过期…

C++ 类与对象中类的深入知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏

绪论 本章我们接着对类和对象进行探索&#xff0c;这是一个在我们c中比较重要的知识点&#xff0c;下面我们才是我们类和对象的更加深入且困难的知识点&#xff0c;希望你能通过这篇文章对类其有更加深入的了解。 话不多说安全带系好&#xff0c;发车啦&#xff08;建议电脑观看…

使用Taskflow完成简历信息提取

构建模型的步骤&#xff1a; 首先要进行数据处理&#xff0c;抽取简历文件中的数据。 首先要准备数据集&#xff0c;大赛提供的数据集中多为word文档&#xff0c;都为.docx格式&#xff0c; docx文件是基于 XML 的&#xff0c;可以包含文本&#xff0c;对象&#xff0c;样式&…