实时即未来,大数据项目车联网之电子围栏业务逻辑分析(18)
theme: smartblue
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情
1. 电子围栏业务逻辑分析
1.1 电子围栏简介
l 什么是电子围栏?
地理围栏是一个虚拟的空间围栏,可以帮助开发者检测人或物何时进入或离开预定义区域,并支持实时报警功能。
适用于追踪观测某对象是否在预期的空间范围内。
l 电子围栏分析的意义?
n 通过大数据找到某人14天内曾经去过的地方是通过电信信号,定位某人手机信号在14天内曾经长时间停留过的地方,同样的道理,通过大数据找车辆,是根据车辆位置数据找到车辆。当设置以北京市天安门为中心,找到半径为10公里内曾经出现过以及现在正出现在此范围的车辆,那么这个半径为10公里,天安门为中心点的区域就组成了一个无形的围栏(电子围栏)
n 对中心点设置了电子围栏的区域进行监控,监控进出围栏的车辆,某个区域的车辆进行监控筛选,符合政府、车企等组织或机构对区域车辆监控的要求
1.2 电子围栏应用场景
地理围栏服务适用于需要针对特定区域,监控用户位置与区域关系的场景中。包括但不限于:
l 签到打卡类场景,在用户打卡操作前,判断用户是否已经在对应的地理围栏区域内;
l 共享单车类场景,当用户骑车离开合法使用区域时,第一时间获知;或当用户关锁支付时,判断用户是否停在了合法区域内;
l 线下门店促销场景,当获取到用户定位在促销门店区域的附近时,向用户发送引导进入店铺的促销信息。
电子围栏应用场景,以北京天安门为中心点,设置半径10公里的范围,得到此中心点范围内的车辆监控,把此次围栏称之为“天安门电子围栏”。监控车辆,包含监控车辆驾驶进入“天安门电子围栏”,车辆行驶出“天安门电子围栏”。
l 选择电子围栏中心点
l 电子围栏中心点
n 具有明确的地理位置信息
n 天安门:[39.908821, 116.397469]
l 半径,以中心点加半径计算出范围
l 计算车辆位置是否在电子围栏范围内
l 车辆是否在电子围栏内的状态
1.3 创建电子围栏
l 获取中心点经纬度:https://developer.amap.com/tools/picker
l 中心点由业务系统页面录入,中心点信息包含:
n 电子围栏名称、电子围栏有效开始时间、电子围栏有效结束时间、中心点详细地址、电子围栏半径、中心点经度、中心点纬度、激活状态、是否置顶
参考:
高德地图绘制电子围栏:https://developer.amap.com/demo/javascript-api/example/overlayers/circle-draw-and-edit
经纬度拾取的地址:
https://developer.amap.com/tools/picker
测距地址:
https://developer.amap.com/demo/javascript-api/example/mouse-operate-map/measure-distance
1.4 围栏规则数据结构
l 通过整体中间表数据结构物理模型图,熟悉业务规则
l 围栏规则设置由业务系统页面录入数据,电子围栏规则数据存Mysql数据库中,表名:electronic_fence_setting
l 字段:
n 电子围栏名称、中心点地址、半径、经度、维度、有效开始时间、有效结束时间、激活状态、是否置顶
l 建表语句:
CREATE TABLE `electronic_fence_setting` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id',
`name` varchar(255) COLLATE utf8mb4_bin NOT NULL COMMENT '电子围栏名称',
`address` varchar(255) COLLATE utf8mb4_bin NOT NULL COMMENT '中心点地址',
`radius` float NOT NULL COMMENT '电子围栏半径 单位km',
`longitude` double NOT NULL COMMENT '中心点经度',
`latitude` double NOT NULL COMMENT '中心点纬度',
`start_time` date NOT NULL COMMENT '有效期开始时间',
`end_time` date NOT NULL COMMENT '有效期结束时间',
`status` int(11) NOT NULL DEFAULT '0' COMMENT '激活状态 1 激活 0 未激活 2删除',
`default_num` int(11) DEFAULT NULL COMMENT '1 默认并置顶数据 0非置顶',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=77 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=COMPACT COMMENT='实时监控-电子围栏设置';
l 数据样例:
l 存储已存在电子围栏中的车辆信息表:electronic_fence_vins
n 字段:电子围栏id(setting_id)、车架号(vin)
n 建表语句:
CREATE TABLE `electronic_fence_vins` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`setting_id` int(11) DEFAULT NULL,
`vin` varchar(50) COLLATE utf8mb4_bin DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `Index 3` (`vin`,`setting_id`) USING BTREE,
KEY `FK_t_zd_electronic_fence_vins_t_zd_electronic_fence_setting` (`setting_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=596 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=COMPACT COMMENT='实时监控-电子围栏车辆信息';
l 数据样例:
1.5 电子围栏分析结果数据结构
电子围栏分析结果数据由电子围栏分析任务执行,并写入结果到mysql中的电子围栏分析结果electric_fence表中(也可以存储在mongodb中,由于结果数据量在业务开发时还不大)
l 字段:
n 车架号、进电子围栏时间、出电子围栏时间、位置时间、位置纬度、位置经度、电子围栏ID、电子围栏名称、中心点地址、中心点纬度、中心点经度、电子围栏半径、终端时间、插入数据的时间
l 建表语句:
-- ----------------------------
-- Table structure for electric_fence
-- ----------------------------
DROP TABLE IF EXISTS `electric_fence`;
CREATE TABLE `electric_fence` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id',
`vin` varchar(255) NOT NULL COMMENT '车架号',
`inTime` varchar(25) DEFAULT NULL COMMENT '进电子围栏时间',
`outTime` varchar(25) DEFAULT NULL COMMENT '出电子围栏时间',
`gpsTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '位置时间',
`lat` double NOT NULL COMMENT '位置纬度',
`lng` double NOT NULL COMMENT '位置经度',
`eleId` int(11) DEFAULT NULL COMMENT '电子围栏ID',
`eleName` varchar(255) NOT NULL COMMENT '电子围栏名称',
`address` varchar(255) NOT NULL COMMENT '中心点地址',
`latitude` double NOT NULL COMMENT '中心点纬度',
`longitude` double NOT NULL COMMENT '中心点经度',
`radius` float NOT NULL COMMENT '电子围栏半径',
`terminalTime` varchar(255) DEFAULT NULL COMMENT '终端时间',
`processTime` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '插入数据的时间',
PRIMARY KEY (`id`),
KEY `vin` (`vin`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='电子围栏';
l 数据样例:
- 点赞
- 收藏
- 关注作者
评论(0)