主要是sql查询符合在圆形,多边形区域经纬度的数据

article/2025/9/26 11:54:50

主要是sql查询符合在圆形,多边形区域经纬度的数据
image-20200923094240216

查询

圆形

中心点 + 距离

drop table if exists demo;
CREATE TABLE `demo` (`id` int(5) NOT NULL AUTO_INCREMENT COMMENT '主键',`shop_name` varchar(50) DEFAULT NULL COMMENT '商品名称',`lng` DECIMAL( 11, 8 ) DEFAULT NULL COMMENT '经度',`lat` DECIMAL( 10, 8 ) DEFAULT NULL COMMENT '纬度',`address` text COMMENT '位置名称',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='demo';INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('4', 'xxx公司', '113.94080600', '22.56090600', '技术大厦');
INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('5', '科陆电子烟', '113.94154900', '22.56113500', '科陆电子科技大厦');
INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('6', '酷派信息港', '113.94554300', '22.56051200', '酷派信息港');
INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('7', '松坪山公园', '113.94728100', '22.55851100', '松坪山公园');
INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('8', '航天微电机大厦', '113.93847800', '22.56067100', '航天微电机大厦');
INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('9', '蓝马智造园', '113.93478700', '22.56027400', '蓝马智造园');
INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('10', '万科智城', '113.94206100', '22.57062800', '万科智城');
INSERT INTO `demo` (`id`, `shop_name`, `lng`, `lat`, `address`) VALUES ('11', '洪浪北', '113.91020200', '22.57442700', '洪浪北');
-- 地球半径:6371
-- distance:距离(公里)
SELECT  *,(  6378.138 * acos (  cos ( radians(21.785367) )  * cos( radians( lat ) )  * cos( radians( lng ) - radians(118.356734) )  + sin ( radians(21.785367) )  * sin( radians( lat ) )  )  ) AS distance  -- 距离      
FROM demo
HAVING distance < 463 -- 筛选距离小于463km的(可不写),如果没查到数据就是没有小于463km的
ORDER BY distance -- 根据距离远近来排序 默认升序 (可不写)
LIMIT 0 , 20;  -- 显示前20条数据(可不写)eg:
SELECT  *,(  6378 * acos (  cos ( radians(21.785367) )  * cos( radians( lat ) )  * cos( radians( lng ) - radians(118.356734) )  + sin ( radians(21.785367) )  * sin( radians( lat ) )  )  ) AS distance  
FROM demo
HAVING distance < 463 
ORDER BY distance 
LIMIT 0 , 20;  

结果:

image-20200923095137116

多边形

DROP TABLE IF EXISTS `geom`;
CREATE TABLE `geom`  (`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,`lnglat` varchar(255) NOT NULL COMMENT '经纬度',PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;INSERT INTO `geom` VALUES (1, "1,1");
INSERT INTO `geom` VALUES (2, "2,2");
INSERT INTO `geom` VALUES (3, "3,3");
INSERT INTO `geom` VALUES (4, "4,4");
INSERT INTO `geom` VALUES (5, "5,5");
INSERT INTO `geom` VALUES (6, "6,6");select`geom`.id, `geom`.lnglat,SUBSTRING_INDEX(`geom`.lnglat,",",1) lng,SUBSTRING_INDEX(`geom`.lnglat,",",-1) lat
from geom 
where MBRWithin(ST_GeomFromText(CONCAT( 'POINT(',SUBSTRING_INDEX(`geom`.lnglat,",",1),' ',SUBSTRING_INDEX(`geom`.lnglat,",",-1), ')')),GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))'));-----------------------------------------------------------------------------------------下面是简写
pt 代表 POINT(1 1)
select AsText(pt) from geom where MBRWithin(pt,GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))'));
select AsText(pt) from geom where MBRContains(GeomFromText('Polygon((0 0,0 3,3 3,3 0,0 0))'),pt);

结果:

image-20200923095221680


http://chatgpt.dhexx.cn/article/kAWdj7g7.shtml

相关文章

mysql计算相关系数_用sql实现相关系数的计算

登录后查看更多精彩内容~ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 静言_GRMC 于 2018-5-25 13:07 编辑 平时工作中要用到好多统计查询功能,一直用sql比较顺手,最近需要做相关系数方面的统计,发现除了Oracle自带了函数外,ms sql和mysql都没有自带计…

【SQL数据库基础05-2】常见约束与标识列

文章目录 常见约束01 基本概念1.1 含义&#xff1a;1.2 分类&#xff1a;六大约束1.3 添加约束的时机&#xff1a;1.4 约束的添加分类&#xff1a;1.5 主键和唯一的大对比&#xff1a;1.6 外键&#xff1a; 02 具体讲解2.1 创建表时添加约束1.添加列级约束2.添加表级约束 2.2 修…

关系数据库标准语言SQL视图模块

目录 一. 视图的特点 二. 基于视图的操作 2.1 建立视图 1&#xff09;行列子集视图举例&#xff1a; 2&#xff09;基于多个基表的视图&#xff1a; 3&#xff09;基于视图的视图&#xff1a; 4&#xff09;带表达式的视图&#xff1a; 5&#xff09;建立分组视图&am…

Oracle的视图,索引,约束,事务,数据库范式

&#x1f345;程序员小王的博客&#xff1a;程序员小王的博客 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 如有编辑错误联系作者&#xff0c;如果有比较好的文章欢迎分享给我&#xff0c;我会取其精华去其糟粕 &#x1f345;java自学的学习…

(数据库系统概论|王珊)第三章关系数据库标准语言SQL-第一节:SQL概述

pdf下载&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】&#xff08;考研复试&#xff09;数据库系统概论第五版&#xff08;王珊&#xff09;专栏学习笔记目录导航及课后习题答案详解 文章目录 一&#xff1a;SQL的产生与发展二&#xff1a;SQL特点&#xff08;1&a…

第三章 关系数据库标准语言 SQL

第三章 关系数据库标准语言 SQL 文章目录 第三章 关系数据库标准语言 SQL3.1 SQL 概述3.1.1 SQL 的特点 3.2 学生-课程数据库3.3 数据定义3.3.2 基本表的创建、删除与修改1. 基本表的创建2. 数据类型3. 插入数据4. 修改数据&#xff08;1&#xff09; 修改某一个元组的值(2) 修…

(九)密度聚类、层次聚类和轮廓系数[机器学习代码实现]

机器学习课程总结&#xff0c;本系列文章以代码和注释为主。 理论部分搬至博客上比较耗费时间&#xff0c;所以缺少理论部分。但是也欢迎大家一起探讨学习。 如果需要理论部分的讲义&#xff0c;可私信&#xff08;个人觉的讲的很好很全&#xff09;。 文章目录 问题需…

Oracle 数据库中的 索引、约束、视图

约束&#xff1a;就是指对插入数据的各种限制&#xff0c;约束既可在建表的时候直接声明&#xff0c;也可以为已经建好的表添加约束。 视图&#xff1a;就是一个封装了各种复杂查询的语句&#xff0c;就称之为视图。 索引&#xff1a;是一种用于提升查询效率的数据库对象。通过…

数据库原理与应用(SQL)——2、关系数据库(E-R图、关系模式、关系运算、关系代数)

目录 关系 关系运算 元组、域关系演算表达式 题目 关系代数表达式——例 元组演算表达式——例 域演算表达式——例 关系数据库是以二维表形式组织数据&#xff0c;应用数学方法处理数据库组织的方法。目前关系数据库系统在数据管理中已占据了主导地位。 关系 关系&…

Oracle约束 SQL语句分类 集合运算 索引 相关知识点讲解

ORACLE 约束&#xff1a; 数据库用来确保数据满足业务的手段&#xff0c;强制数据符合某些特定条件或者规范才可以插入 主键约束&#xff1a; primary key PK唯一约束&#xff1a;unique非空约束&#xff1a;not null外键约束&#xff1a;foreign key FK检查约束&#xff1a;…

SQL对数据进行统计、常用集合函数

学生表&#xff1a; 1、统计记录个数 1&#xff09; count&#xff08;【all】*&#xff09;【as 列别名】 返回表中的记录数 执行&#xff1a;SELECT COUNT (* ) FROM 学生表 结果为&#xff1a; 执行&#xff1a;SELECT COUNT (* ) as 学生总人数 FROM 学生表…

关系数据库SQL数据查询

关系数据库SQL数据查询 数据查询 一、单表查询 1.查询仅涉及一个表&#xff0c;选择表中的若干列 [例1] 查询全体学生的学号与姓名。SELECT Sno,SnameFROM Student; [例2] 查询全体学生的姓名、学号、所在系。SELECT Sname,Sno,SdeptFROM Student;查询全部列 选出所有属…

样本轮廓系数(原理、sklearn.metrics.silhouette_score、silhouette_samples参数介绍)

一、轮廓系数含义&#xff1a; 轮廓系数&#xff08;Silhouette Coefficient&#xff09;&#xff0c;是聚类效果好坏的一种评价方式。 最佳值为1&#xff0c;最差值为-1。接近0的值表示重叠的群集。负值通常表示样本已分配给错误的聚类&#xff0c;因为不同的聚类更为相…

java上位机开发(开篇)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 目前对于java语言&#xff0c;很多人都认为太简单。其实这是不对的&#xff0c;因为某种意义上来说所&#xff0c;java语言就像学习日语一样&#…

Qt之上位机开发实战(一)

一、Qt三大金刚 1、qt下的串口编程 2、qt下的网络编程 3、qt下的GPIO 本章节先介绍一下qt下的串口编程&#xff0c;首先我们新建一个Widget项目 其中接受框使用Plain Text Edit&#xff08;设置只读&#xff09;&#xff0c;串口号等按钮使用Combo Box&#xff0c;发送框使…

C# | 上位机开发新手指南(二)上位机通信

上位机开发新手指南&#xff08;二&#xff09;上位机通信 文章目录 上位机开发新手指南&#xff08;二&#xff09;上位机通信前言串口通信应用场景与控制器通信与传感器通信与仪器仪表通信与智能家居设备通信 常见协议ModbusCAN&#xff08;Controller Area Network&#xff…

C# 西门子PLC上位机开发环境搭建

一、安装软件 1. TIA_Portal_STEP7 15 博途&#xff0c;西门子的自动化开发软件 2. SIMATIC_S7PLCSIM_V15_1 西门子的仿真软件 3. NetToPLCsim C#程序是不能和仿真通信的&#xff0c;只有利用此软件&#xff0c;C#程序才能连接到仿真 二、配置软件 1. 博途 点击 创建新…

java上位机开发(网络编程)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 所谓的网络编程&#xff0c;一般就是指UDP、TCP编程。传统的方法就是用api或者sdk直接编程&#xff0c;这种方法对于简单的协议是可以的。但是对于…

上位机开发(详细设计)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 所谓软件详细设计,它的上面对应的是架构设计,下面对应的是程序开发。架构设计有可能涉及多个软件,比如既可能涉及上位机这端,也可能涉及到mcu这端。详细设计的话,一般要落实到…

android ble 上位机,BLE的Android上位机开发(下)

原标题&#xff1a;BLE的Android上位机开发(下) ELLO! 大家好&#xff01;马上就更新下篇了呢~哈哈&#xff01;(上篇的地址&#xff1a;BLE的Android上位机开发(上))废话不多说了&#xff0c;先上主角吧&#xff01;代码如下&#xff01; [Java] 纯文本查看复制代码 ? 01 02 …