跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava算法

县域烟花禁燃监管 GIS 实践:Java 调用高德地图 API 盘点销售点

基于 Java 语言结合高德地图 POI 检索接口,构建了一套县域烟花爆竹销售点的自动化盘点方案。针对新晃县地形复杂、人工排查效率低的问题,通过 HTTP 请求获取销售点名称、经纬度及地址信息,并导出为 Excel 表格。该方案无需搭建复杂 GIS 服务器,轻量易部署,有效提升了数据获取的准确性与可视化能力,为禁燃监管决策提供数据支撑,同时具备跨县域迁移的拓展性。

月亮邮递员发布于 2026/3/30更新于 2026/10/2690 浏览
县域烟花禁燃监管 GIS 实践:Java 调用高德地图 API 盘点销售点

县域烟花禁燃监管 GIS 实践:Java 调用高德地图 API 盘点销售点

一、背景与目标

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

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

本次实践以湖南省怀化市新晃侗族自治县为研究对象。该县地处湘黔边界,乡镇分布分散、地形复杂,烟花爆竹销售点多分布于乡镇集市、村级小卖部等场景。通过技术手段验证 GIS 在基层监管中的实用性,能为同类县域的烟花禁燃监管提供可复用的技术方案。

二、Java 实现高德检索

1. 接口定义

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

我们定义了一个接口来封装 HTTP 请求参数,包括关键词、类型、区域范围、分页大小及返回字段等。

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 数据,提取销售点的核心信息(名称、地址、经纬度、联系方式)。这里需要注意控制请求频率,避免触发平台的限流机制。

核心逻辑如下:设置关键词为'烟花',类型为'060000'(零售店),区域为新晃县行政代码,循环抓取直到数据获取完毕。

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.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) {
            ExcelUtil<AmapPoi> util = new ExcelUtil<>(AmapPoi.class);
            util.exportExcel(amapPoiData, "新晃侗族自治县烟花销售点列表");
            System.out.println("finished");
        }
    }
}

3. 数据结构设计

为了便于后续导出和处理,我们需要定义对应的 JavaBean 来映射 POI 返回的数据。关键字段包括名称、唯一标识、经纬度、详细地址及分类编码等。

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;
    @Excel(name = "唯一标识")
    private String id;
    @Excel(name = "经纬度")
    private String location;
    @Excel(name = "所属类型")
    private String type;
    @Excel(name = "分类编码")
    private String typecode;
    @Excel(name = "所属省份")
    private String pname;
    @Excel(name = "所属城市")
    private String cityname;
    @Excel(name = "所属区县")
    private String adname;
    @Excel(name = "详细地址")
    private String address;
    @Excel(name = "所属省份编码")
    private String pcode;
    @Excel(name = "所属区域编码")
    private String adcode;
    @Excel(name = "所属城市编码")
    private String citycode;
    
    private List<AmapChildrenPoi> children;
    private AmapBusiness business;
    private AmapIndoor indoor;
    private AmapNavi navi;
    private List<AmapPhotos> photos;
}

三、成果展示

1. Excel 导出

将检索到的销售点数据导出为 Excel 文件,便于监管部门线下查看、核对和存档。利用自定义注解配合工具包,可以快速完成批量导出。

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塘洞村杨柳坪组

四、总结

本方案通过 Java 调用高德地图 POI 检索接口,实现了烟花爆竹销售点的自动化盘点。相比传统人工方式,大幅提升了数据获取效率和准确性。

在技术层面,Java 结合高德地图 API 的组合轻量化、易部署,无需搭建复杂的 GIS 服务器,适合县域基层监管部门的技术落地能力。核心流程为「接口配置→数据检索→Excel 导出」,解决了传统人工盘点效率低、可视化差的问题。

在业务层面,导出的 Excel 成果可直接对接监管工作,经纬度数据还可进一步导入高德地图 Web 端,实现销售点的可视化标注,辅助禁燃巡查路线规划。该方案不仅可直接服务于禁燃监管工作,且具备快速迁移至其他县域或其他品类(如危化品、农资)监管场景的拓展性。

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

目录

  1. 县域烟花禁燃监管 GIS 实践:Java 调用高德地图 API 盘点销售点
  2. 一、背景与目标
  3. 二、Java 实现高德检索
  4. 1. 接口定义
  5. 2. 数据获取与处理
  6. 3. 数据结构设计
  7. 三、成果展示
  8. 1. Excel 导出
  9. 2. 数据概览
  10. 四、总结

更多推荐文章

查看全部
  • 即梦 AI 基础操作指南:绘画与视频生成
  • 构建与 GitHub 深度集成的自动化工作流指南
  • Java 后端实习复盘:企业级项目实战与代码规范分享
  • Web 团队开发 App 是否应选用 Capacitor
  • NativeScript-Vue 跨平台原生应用开发实战
  • 大模型智能体(Agent)核心概念与架构解析
  • Java 基础核心知识点总结:深拷贝、泛型、对象与反射
  • AI 辅助编程边界:当 Copilot 尝试编写测试
  • Whisper-Large-V3-Turbo 语音识别模型一键部署指南
  • Python 使用 Pandas 自动化处理 Excel 数据教程
  • 万维网(WWW)发展脉络与核心原理解析
  • Qwen3-1.7B 流式响应实战验证与前端集成教程
  • 插入排序原理及 Java 实现详解
  • C++ 多态核心解析:虚函数重写与动态绑定原理
  • AI 大模型新型智算中心技术体系深度分析
  • 无人机电源管理系统:升压降压电路设计
  • Visual C++ 6.0 在 Windows 11 下的安装与兼容性配置
  • 7 个 Python 实战项目代码示例
  • OpenClaw 多机器人协作方案:组建虚拟员工团队
  • Qwen3-VL-WEBUI 地标识别:旅游 AI 助手部署教程

相关免费在线工具

  • 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