跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
Javajava算法

基于 Java 与高德地图 API 的县域烟花销售点自动化盘点方案

县域烟花禁燃监管面临人工盘点效率低、数据更新慢等痛点。本方案利用 Java 结合高德地图 POI 检索接口,实现销售点信息的自动化采集与导出。通过配置行政区域编码与关键词,系统可批量获取名称、经纬度及地址信息并生成 Excel 报表。该轻量化方案无需复杂 GIS 服务器,便于基层监管部门快速落地,支持后续可视化标注与违规点位分析,为禁燃政策执行提供精准数据支撑。

雪落无声发布于 2026/3/27更新于 2026/4/252 浏览
基于 Java 与高德地图 API 的县域烟花销售点自动化盘点方案

一、前言

1. 背景描述

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

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

2. 聚焦新晃县

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

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

二、Java 实现高德检索

1. 接口定义

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

核心接口参数定义
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.thridinterface.AmapSearchService;

@SpringBootTest
@RunWith(SpringRunner.class)
public class AmaPOISearchCase {
    private static final String AMAP_CLIENT_AK = "yourkey";
    @Autowired
    private AmapSearchService amapSearchService;

    /**
     * - 查询烟花销售点
     */
    @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<>();

        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());
                dataCount = searchVO.getCount();
                scrapingIndex++;
            }
            Thread.sleep(3000L); // 休眠避免触发频率限制
        } while (dataCount > 0);

        System.out.println("一共抓取数据页数:" + scrapingIndex);
        System.out.println(amapPoiData.size());

        if (amapPoiData.size() > 0) {
            // excel 工具包
            ExcelUtil<AmapPoi> util = new ExcelUtil<>(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;

@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.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 服务器,适合县域基层监管部门的技术落地能力;解决了传统人工盘点效率低、可视化差的问题。
  2. 业务层面:导出的 Excel 成果可直接对接监管工作,经纬度数据还可进一步导入高德地图 Web 端,实现销售点的可视化标注,辅助禁燃巡查路线规划;核心流程为「接口配置→数据检索→Excel 导出」,技术方案轻量化、易复用,适配县域基层监管的落地需求。
  3. 拓展性:该方案可快速适配其他县域,仅需修改行政编码和检索关键词,即可复用至其他品类(如危化品、农资)的县域监管场景。

后续可进一步优化:增加销售点数据的增量更新(避免重复检索)、对接县域政务系统实现数据自动上报、增加违规销售点的位置对比分析等,让 GIS 技术更好地服务于县域基层治理。

目录

  1. 一、前言
  2. 1. 背景描述
  3. 2. 聚焦新晃县
  4. 二、Java 实现高德检索
  5. 1. 接口定义
  6. 核心接口参数定义
  7. 2. 数据获取
  8. 核心实现代码
  9. POI 类说明
  10. 三、成果展示
  11. 1. Excel 展示
  12. 2. 表格展示
  13. 四、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Claude Skills 开源仓库精选与安装配置实战指南
  • Webmin CVE-2019-15107 漏洞从后门到修复的时间线分析
  • AI 大模型在专利翻译领域的应用与实践
  • 本地使用ComfyUI运行Stable Diffusion 3.5
  • Arduino BLDC 基于串口指令的远程控制工业巡检机器人
  • 变分自编码器(VAE)原理与 PyTorch 实战实现
  • 生成式大模型与判别式大模型的联系与区别
  • 后端开发入门:HTML 基础语法与实战
  • AIGC 产品经理的定义、职责及与 AI 产品经理的区别
  • Qwen3-Embedding-4B 本地化部署与 llama.cpp 集成实战
  • RAG 系统中数据量对问答效果的影响及优化方案
  • 大语言模型(LLM)入门学习路径与核心技术解析
  • Qwen3.5 核心特性详解:原生多模态与推理能力升级
  • 二分查找算法详解与经典例题实战
  • C++ 入门:命名空间(namespace)详解
  • 程序员如何实现薪资跃迁:从技术深耕到职业突破
  • 两两交换链表中的节点
  • 微信集成本地 AI Agent 框架 QClaw 使用指南
  • Python 基础语法进阶:条件判断与循环控制详解
  • Git 基础指令与本地仓库操作指南

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online