县域烟花禁燃监管 GIS 实践:基于 Java 与高德地图的销售点盘点 —— 以新晃县为例

县域烟花禁燃监管 GIS 实践:基于 Java 与高德地图的销售点盘点 —— 以新晃县为例

目录

一、前言

1. 背景描述

2. 聚焦新晃县

二、Java 实现高德检索

1. 接口定义

核心接口参数定义

2. 数据获取

核心实现代码

POI类说明

三、成果展示

1. Excel 展示

2、表格展示        

四、总结


一、前言

1. 背景描述

        春节期间烟花爆竹禁燃禁放是保障公共安全、改善空气质量的重要举措,而禁燃政策落地的核心环节之一,是对县域范围内烟花爆竹销售点的精准盘点与动态监管。传统的人工排查方式存在效率低、数据更新不及时、空间位置可视化差等问题,难以满足县域精细化监管的需求。在高德地图中查询烟花销售专卖店的信息如下:

        地理信息系统(GIS)技术能够将空间位置与业务数据深度融合,而高德地图 API 提供了成熟的地理编码、POI 检索等能力,结合 Java 语言的跨平台、高稳定性特性,可快速搭建一套轻量化的县域烟花销售点盘点系统,实现销售点位置检索、数据整合、成果输出的全流程自动化,为禁燃监管决策提供数据支撑。

2. 聚焦新晃县

        新晃侗族自治县隶属于湖南省怀化市,地处湘黔边界,县域内乡镇分布分散、地形复杂,烟花爆竹销售点多分布于乡镇集市、村级小卖部等场景,人工盘点耗时耗力且易出现遗漏。

        本次实践以新晃县为研究对象,依托 Java 开发语言和高德地图 API,针对该县春节烟花禁燃后的销售点开展盘点工作,验证 GIS 技术在县域基层监管中的实用性,也为同类县域的烟花禁燃监管提供可复用的技术方案。

二、Java 实现高德检索

1. 接口定义

        首先需在高德开放平台注册开发者账号,申请 Web 服务 API Key(注意区分「Web 服务」与「前端 JS」Key),本次核心使用高德的 POI 搜索接口(/v5/place/text),用于检索新晃县范围内的烟花爆竹销售点。关于如何申请开发者账号和申请API Key,可以翻阅之前的博客进行查询。

        核心接口参数定义
package com.yelang.project.thridinterface; import com.burukeyou.uniapi.http.annotation.HttpApi; import com.burukeyou.uniapi.http.annotation.param.QueryPar; import com.burukeyou.uniapi.http.annotation.request.GetHttpInterface; import com.burukeyou.uniapi.http.core.response.HttpResponse; @HttpApi(url = "https://restapi.amap.com/v5") public interface AmapSearchService { @GetHttpInterface("/place/text") public HttpResponse<String> getSearch(@QueryPar("keywords") String keywords,@QueryPar("types") String types,@QueryPar("region") String region,@QueryPar("page_size") String page_size,@QueryPar("page_num") String page_num ,@QueryPar("show_fields")String show_fields, @QueryPar("key") String key); }

2. 数据获取

        基于 UniHttp实现 HTTP 请求,解析高德返回的 JSON 数据,提取销售点的核心信息(名称、地址、经纬度、联系方式)。

核心实现代码
package com.yelang.project.unihttp; import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import com.burukeyou.uniapi.http.core.response.HttpResponse; import com.google.gson.Gson; import com.yelang.common.utils.StringUtils; import com.yelang.common.utils.geo.CoordinateTransformUtil; import com.yelang.common.utils.poi.ExcelUtil; import com.yelang.project.education.domain.amap.AmapPoi; import com.yelang.project.education.domain.amap.AmapSearchVO; import com.yelang.project.flightaware.TestFlightawareDetails.FlightHistory; import com.yelang.project.thridinterface.AmapSearchService; @SpringBootTest @RunWith(SpringRunner.class) public class AmaPOISearchCase { private static final String AMAP_CLIENT_AK = "yourkey"; @Autowired private AmapSearchService amapSearchService; /** * - 查询烟花销售点 add by 夜郎king * @throws InterruptedException */ @Test public void searchChangshaFireworks() throws InterruptedException { String keywords = "烟花"; String types = "060000"; String page_size = "25"; String region = "431227"; String show_fields = "children,business,indoor,navi,photos"; HttpResponse<String> result = null; Gson gson = new Gson(); int scrapingIndex = 1; int dataCount = 0; List<AmapPoi> amapPoiData = new ArrayList<AmapPoi>(); do { result = amapSearchService.getSearch(keywords, types,region, page_size,String.valueOf(scrapingIndex),show_fields,AMAP_CLIENT_AK); System.out.println(result.getBodyResult()); if(StringUtils.isNotEmpty(result.getBodyResult())) { AmapSearchVO searchVO = gson.fromJson(result.getBodyResult(), AmapSearchVO.class); amapPoiData.addAll(searchVO.getPois());//将所有数据添加到Excel中 dataCount = searchVO.getCount(); scrapingIndex ++; } Thread.sleep(3000L);//休眠3000秒 } while (dataCount > 0); System.out.println("一共抓取数据页数:" + scrapingIndex); System.out.println(amapPoiData.size()); if(amapPoiData.size() > 0) { // excel工具包 ExcelUtil<AmapPoi> util = new ExcelUtil<AmapPoi>(AmapPoi.class); util.exportExcel(amapPoiData, "新晃侗族自治县烟花销售点列表"); System.out.println("finished"); } } }
POI类说明

        这里给出检索POI类的关键JavaBean说明:

package com.yelang.project.education.domain.amap; import java.io.Serializable; import java.util.List; import com.yelang.framework.aspectj.lang.annotation.Excel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; /** * -单个 poi 内包含的完整返回数据 * @author 夜郎king * */ @Data @ToString @AllArgsConstructor @NoArgsConstructor public class AmapPoi implements Serializable{ private static final long serialVersionUID = 8477368531294599663L; @Excel(name = "名称") private String name;//poi 名称 @Excel(name = "唯一标识") private String id;//poi 唯一标识 @Excel(name = "经纬度") private String location;//poi 经纬度 @Excel(name = "所属类型") private String type;//poi 所属类型 @Excel(name = "分类编码") private String typecode;//poi 分类编码 @Excel(name = "所属省份") private String pname;//poi 所属省份 @Excel(name = "所属城市") private String cityname;//poi 所属城市 @Excel(name = "所属区县") private String adname;//poi所属区县 @Excel(name = "详细地址") private String address;//poi 详细地址 @Excel(name = "所属省份编码") private String pcode;//poi 所属省份编码 @Excel(name = "所属区域编码") private String adcode;//poi 所属区域编码 @Excel(name = "所属城市编码") private String citycode;//poi 所属城市编码 private List<AmapChildrenPoi> children;//子 POI 信息 private AmapBusiness business;//poi 商业信息 private AmapIndoor indoor;//室内相关信息 private AmapNavi navi;//导航位置相关信息 private List<AmapPhotos> photos;// poi 图片相关信息 }

三、成果展示

1. Excel 展示

        将检索到的新晃县烟花爆竹销售点数据导出为 Excel,便于监管部门线下查看、核对和存档。基于 自定义注解的实现快速导出,核心代码如下:

if(amapPoiData.size() > 0) { // excel工具包 ExcelUtil<AmapPoi> util = new ExcelUtil<AmapPoi>(AmapPoi.class); util.exportExcel(amapPoiData, "新晃侗族自治县烟花销售点列表"); System.out.println("finished"); }

        导出结果如下:

2、表格展示        

        提取关键信息后,可以转为以下关键表格,具体如下:

名称经纬度详细地址
彩云烟花爆竹专营店109.220368,27.358348320国道柏树林便桥往波洲方向下来500米
浏阳中洲烟花(贡溪四哥店)109.163442,27.119872贡溪镇贡溪村牛场斜对面
唐光清烟花爆竹109.137099,27.183113扶罗敬老院
浏阳花炮连锁(贡溪店)109.170480,27.117722贡溪镇贡溪村委会门口
浏阳烟花贡溪敏哥专卖店109.166282,27.119753贡溪镇贡溪村芒井168号
浏阳花炮连锁(扶罗旗舰店)109.142700,27.195404G242扶罗汽车站北侧约210米
浏阳花炮109.074211,27.312052320国道西北侧
庆泰花炮(晃州西路店)109.149341,27.345548新晃金米立再生资源有限公司南侧140米
浏阳电子花炮销售总部108.897645,27.035767中国邮政(凳寨乡邮政所)北侧160米
浏阳东方红烟花109.144014,27.191250242国道西南侧
中洲烟花(晃州西路店)109.152110,27.345960中国石化新晃服务区南加油站西南侧230米
浏阳中洲烟花(新晃侗族自治县G242店)109.126095,27.426852马溪冲村民小组东南侧
政翔烟花109.141175,27.349175晃州镇大树湾村退役军人服务站东南侧
多多烟花爆竹专卖店109.159611,27.375502云盘路与242国道交叉口东南440米
中洲烟花109.142630,27.195561浏阳花炮连锁(扶罗旗舰店)西北侧
浏阳烟花鞭炮专营109.217475,27.345625五妹批发部南侧210米
宏伟名烟名酒烟花爆竹专店(X064店)109.232416,27.279789064县道与242国道交叉口南120米
中洲烟花(X064店)109.262424,27.193034中寨敬老院东侧60米
花海烟花爆竹经营有限公司109.188200,27.371315907乡道与侗寨路交叉口东500米
新晃县花千树烟花爆竹经营有限公司109.225346,27.337023塘洞村杨柳坪组

四、总结

        以上就是本文的主要内容。本文以新晃县为例的县域烟花禁燃监管 GIS 实践,通过 Java 调用高德地图 POI 检索接口,实现了烟花爆竹销售点的自动化盘点,相比传统人工方式,大幅提升了数据获取效率和准确性:

  1. 技术层面:Java + 高德地图 API 的组合轻量化、易部署,无需搭建复杂的 GIS 服务器,适合县域基层监管部门的技术落地能力;本次实践基于 Java 调用高德地图 POI 接口,实现了新晃县烟花销售点的自动化盘点,解决了传统人工盘点效率低、可视化差的问题;
  2. 业务层面:导出的 Excel 成果可直接对接监管工作,经纬度数据还可进一步导入高德地图 Web 端,实现销售点的可视化标注,辅助禁燃巡查路线规划;核心流程为「接口配置→数据检索→Excel 导出」,技术方案轻量化、易复用,适配县域基层监管的落地需求;
  3. 拓展性:该方案可快速适配其他县域,仅需修改行政编码和检索关键词,即可复用至其他品类(如危化品、农资)的县域监管场景。成果不仅可直接服务于禁燃监管工作,且方案可快速迁移至其他县域或其他品类的监管场景。

        后续可进一步优化:增加销售点数据的增量更新(避免重复检索)、对接县域政务系统实现数据自动上报、增加违规销售点的位置对比分析等,让 GIS 技术更好地服务于县域基层治理。行文仓促,定有不足之处,欢迎各位朋友在评论区批评指正,不胜感激。

Read more

Flutter 三方库 brick_offline_first_with_supabase 深度鸿蒙离线缓存架构适配解析:极速搭建边缘物理存储与高可用同步中枢-适配鸿蒙 HarmonyOS ohos

Flutter 三方库 brick_offline_first_with_supabase 深度鸿蒙离线缓存架构适配解析:极速搭建边缘物理存储与高可用同步中枢-适配鸿蒙 HarmonyOS ohos

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 brick_offline_first_with_supabase 深度鸿蒙离线缓存架构适配解析:极速搭建边缘物理存储与高可用同步中枢协同引擎 在开发需要高可用性和强离线能力的鸿蒙应用时,如何平衡云端实时性与本地响应速度是核心挑战。brick_offline_first_with_supabase 是一套成熟的离线优先(Offline First)数据流方案。本文将探讨该库在 OpenHarmony 环境下的深度集成与适配。 前言 什么是离线优先?它意味着应用的所有读写操作首选本地数据库,并由系统在后台自动处理与云端(Supabase)的增量同步。在鸿蒙这个强调无缝连接和万物互联的系统中,确保应用在电梯、地库等弱网环境下依然“丝滑”可用,是构建精品级鸿蒙应用的必修课。brick 库通过自动化的代码生成,极大地降低了这一架构的开发门槛。 一、原理解析 1.1 基础概念 该库主要集成了三层架构: * SqliteProvide

By Ne0inhk
2025年PostgreSQL 详细安装教程(windows)

2025年PostgreSQL 详细安装教程(windows)

前言 PostgreSQL 是一个功能强大的开源关系型数据库管理系统(ORDBMS),以下是对它的全面介绍: 基本概况 * 名称:通常简称为 "Postgres" * 类型:对象-关系型数据库管理系统 * 许可:开源,采用类MIT许可证 * 首次发布:1996年(起源于1986年的POSTGRES项目) * 最新版本:PostgreSQL 16(截至2023年9月发布) 核心特性 1. 标准兼容性 * 完全符合ACID(原子性、一致性、隔离性、持久性) * 高度兼容SQL标准 2. 高级功能 * 复杂查询 * 外键 * 触发器 * 可更新视图 * 事务完整性 * 多版本并发控制(MVCC) 3. 扩展性 * 支持自定义数据类型 * 自定义函数 * 使用不同编程语言编写代码(如PL/pgSQL, PL/Python,

By Ne0inhk
MySQL 表约束核心指南:从基础约束到外键关联(含实战案例)

MySQL 表约束核心指南:从基础约束到外键关联(含实战案例)

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 表约束核心概念 * 二. 基础约束:NULL/NOT NULL 与 DEFAULT * 2.1 空属性约束(NULL/NOT NULL) * 2.2 默认值约束(DEFAULT) * 2.3 列描述(COMMENT) * 2.4 零填充约束(ZEROFILL) * 三. 核心约束:主键、自增长与唯一键 * 3.1 主键约束(PRIMARY KEY) * 3.

By Ne0inhk
2G 内存云服务器部署 Spring Boot + MySQL 实战:从踩坑到上线

2G 内存云服务器部署 Spring Boot + MySQL 实战:从踩坑到上线

2G 内存云服务器部署 Spring Boot + MySQL 实战:从踩坑到上线 前言 最近把自己的全栈博客项目部署到了腾讯云的入门级服务器(2核2G),过程中踩了不少坑。本文记录完整的部署过程和问题排查思路,希望对同样在小规格服务器上部署 Java 项目的同学有所帮助。 项目技术栈: * 后端:Java 17 + Spring Boot 3.2.3 + Spring Security + JPA * 数据库:MySQL 8.0 * 前端:Flutter Web * 反向代理:Nginx 1.26 * 容器:Docker 28.4 服务器配置: * 腾讯云轻量应用服务器 * 2 核 CPU / 2GB 内存 / 50GB

By Ne0inhk