县域烟花禁燃监管 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

Spring AI:Java 生态的 AI 赋能革命,企业级智能应用新标杆

Spring AI:Java 生态的 AI 赋能革命,企业级智能应用新标杆

目录 一、核心定位:不止是框架,更是生态连接器 二、核心架构与关键能力:简化复杂 AI 应用构建 1. 对话交互核心:ChatClient 2. 语义理解基础:EmbeddingClient 与 VectorStore 3. 提示工程利器:PromptTemplate 4. 1.1 版本核心突破 三、典型场景落地:赋能全行业智能升级 四、未来展望:Java 生态的 AI 普及之路 当生成式 AI 与大型语言模型(LLMs)重塑软件开发范式,如何让 AI 能力无缝融入成熟的企业级技术体系,成为全球开发者面临的核心命题。Spring AI 的横空出世,为 Java 生态带来了颠覆性解决方案 —— 它以

By Ne0inhk
Java 中间件:Dubbo 服务降级(Mock 机制)

Java 中间件:Dubbo 服务降级(Mock 机制)

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕Java中间件这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * Java 中间件:Dubbo 服务降级(Mock 机制) * 什么是服务降级? * Dubbo Mock 机制简介 * Mock 的触发条件 * Dubbo Mock 的配置方式 * 1. XML 配置方式 * 2. 注解配置方式(推荐) * 3. 自定义 Mock 类 * 4. 强制 Mock(force) * Mock 机制的工作原理 * 实战案例:电商系统中的服务降级 * 场景描述 * 1. 定义服务接口 * 2. 实现

By Ne0inhk

OpenClaw(小龙虾)B 端企业级应用实战:CentOS 7 快速部署指南,拥有你的第一个 AI 运维员工

大家好,我是独孤风。 春节期间,OpenClaw(小龙虾)彻底火了,人人都在谈论如何“养一只自己的小龙虾”。 过去一年,我们见识了太多能言善辩的大模型,但它们大多停留在“动嘴”阶段。你问它怎么重启服务器,它给你列出 1234 步骤,最后还得你自己去敲键盘。而 OpenClaw 的爆火,是因为它彻底解决了 “执行” 的问题。 它不是一个只会聊天的对话框,而是一个住在你服务器里、拥有操作权限、能 7x24 小时不间断工作的 “数字员工”。  但是,目前的大部分应用还是停留在助手阶段,帮助我们做一些简单的事务性的工作。在 B 端企业级场景下,应用几乎是没有的。那么OpenClaw能不能在B端应用呢?它的出现能否直接改写了运维与开发的成本结构呢?这篇文章我们就来实战一下,实现一个最基本的OpenClaw小龙虾AI运维员工。 正文共:6013字 25图 预计阅读时间:16分钟 文末联系作者,加入AI学习交流群 一、

By Ne0inhk
【分治法 BFS 质因数分解】P12255 [蓝桥杯 2024 国 Java B] 园丁|普及+

【分治法 BFS 质因数分解】P12255 [蓝桥杯 2024 国 Java B] 园丁|普及+

本文涉及知识点 数论:质数、最大公约数、菲蜀定理 C++BFS算法 P12255 [蓝桥杯 2024 国 Java B] 园丁 题目描述 小明是一位尽职尽责的园丁。这天他负责维护一棵树,树上有 n n n 个结点 1 , 2 , … , n 1, 2, \ldots, n 1,2,…,n,根结点为 1 1 1,结点 i i i 的权值为 a i a_i ai 。他需要更改一些结点的权值为任意正整数,使得对于任意一个至少有 2 2

By Ne0inhk