GEO地图数据分布处理

news/2025/2/9 6:09:15 标签: MySQL, 地图

需求

已知访问用户经纬度数据,根据经纬度统计每个省的访问总数

地区经纬度分布表

CREATE TABLE `area_geo` (
  `id` int(11) NOT NULL,
  `name` varchar(250) NOT NULL COMMENT '地区名',
  `ext_name` varchar(255) NOT NULL COMMENT '地区扩展名',
  `geo` geometry NOT NULL COMMENT '地区核心经纬度',
  `polygon` geometry NOT NULL COMMENT '地区经纬度范围',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

地区经纬度初始化数据

见文档顶端附件资源

定时任务&存储过程统计

基于地图数据统计的性能问题,考虑通过MySQL定时任务单独将地图数据进行统计结果保存,然后通过DBT脚本关联输出到数据仓库,创建访问数据存储表、存储过程、和定时任务

--开启定时器(或者通过MySQL配置永久性开启)
set global event_scheduler=1;
--查看开启情况,是否为ON
show variables like '%event_sche%';

--存储过程创建
DROP PROCEDURE IF EXISTS `area_geo_visit_data_pro`;
delimiter ==
CREATE PROCEDURE `area_geo_visit_data_pro`()
BEGIN
    DELETE FROM area_geo_visit_data;
	INSERT into area_geo_visit_data(event_time,module,label,cnt)
	SELECT
		CURDATE() as event_time,
		'VISIT_MAP' as module,
		c.name as label,
		SUM(b.cnt) as cnt
	FROM
		(
		SELECT
				a.location_longitude,
				a.location_latitude,
				COUNT(1) as cnt
		FROM
				matomo.matomo_log_visit a
		group by
			a.location_longitude,
			a.location_latitude
		)b ,
		matomo.area_geo c
	WHERE
		st_intersects(ST_GeomFromWKB(c.polygon),
		(st_geometryfromtext(concat('POINT(', CAST(b.location_longitude AS char) , ' ', CAST(b.location_latitude AS char) , ')'),0)))
	GROUP BY
		c.name ;
END
==
delimiter ;

--定时任务创建(统计频率可以根据需要设置,目前是与dbt脚本执行频率保持一致)
CREATE EVENT IF NOT EXISTS area_geo_visit_data_event 
ON SCHEDULE EVERY 24 HOUR 
ON COMPLETION PRESERVE
DO
CALL area_geo_visit_data_pro();

效果

在这里插入图片描述


http://www.niftyadmin.cn/n/5164943.html

相关文章

docker搭建mysql环境

1. 基础环境 名称描述CentOS 7.6Linux操作系统版本docker 20.10.5docker版本mysql 8.0.29mysql镜像版本 2. 下载安装 使用docker命令下载mysql镜像 [rootzhouwei ~]# docker pull mysql:8.0.29查看docker仓库是否已经下载了mysql镜像 [rootzhouwei ~]# docker images将mys…

解决问题:-1: error: LNK1104: 无法打开文件“D3dx9.lib”

解决问题:-1: error: LNK1104: 无法打开文件“D3dx9.lib” 先安装Microsoft DirectX SDK (June 2010),安装包名字叫DXSDK_Jun10.exe, Microsoft DirectX SDK 2010 版本下载 http://www.microsoft.com/en-us/download/details.aspx?id6812 Version: Date…

基于MATLAB的关节型六轴机械臂轨迹规划仿真

笛卡尔空间下的轨迹规划,分为直线轨迹规划和圆弧轨迹规划,本文为笛卡尔空间下圆弧插值法的matlab仿真分析 目录 1 实验目的 2 实验内容 2.1标准D-H参数法 2.2实验中使用的Matlab函数 3 全部代码 4 仿真结果 1 实验目的 基于机器人学理论知识&…

mybatis嵌套查询子集合只有一条数据

我们再用mybatis做嵌套查询时&#xff0c;有时会遇到子集合只有1条数据的情况&#xff0c;例如下这样&#xff1a; 数据库查询结果 xml <resultMap id"userMap" type"com.springboot.demo.test.entity.User"><id column"uid" property…

雨云 宿迁 14900KF 高防云服务器性能测评

雨云游戏云上线了用I9 13900KF做CPU的VPS服务器&#xff0c;雨云游戏云VPS的14900KF和13900KF机型是纯大核的&#xff08;屏蔽小核&#xff09;保证你的VPS不会被分配到小核上而导致性能下降&#xff0c;水冷散热&#xff0c;超频至6.3Ghz&#xff0c;超高单核性能。 适合开我…

Linq-to-SQL的性能优化

Linq-to-SQL的性能优化,根据我的个人实践和效果降序排列,如下: 1. 预编译 CompiledQuery (如果执行次数不止一次的话) /// <summary>/// Utility class to store compiled queries/// </summary>public static class QueriesUtility{ /// <summary> …

使用Redis实现文章阅读量、收藏、点赞数量记录功能

目录 一、前言二、业务分析三、Redis数据结构选择分析和实现3.1、三个数据缓存都分别使用 字符串 结构计数器存储对应数量值3.2、三个数据缓存使用一个 Hash 结构存储3.3、阅读量使用字符串结构计算器&#xff0c;收藏和点赞分别使用 Set 集合存储 四、总结 一、前言 在博客中会…

django+drf+vue 简单系统搭建 (2) - drf 应用

按照本系统设置目的&#xff0c;是为了建立一些工具用来处理简单的文件。 1. 准备djangorestframework 关于drf的说明请参见&#xff1a;Django REST Framework教程 | 大江狗的博客 本系列直接使用drf的序列化等其他功能。 安装 conda install djangorestframework conda i…