基于 Java 与高德地图的县域烟花销售点 GIS 盘点实践
县域烟花禁燃监管中,传统人工盘点效率低且可视化差。本方案利用 Java 结合高德地图 POI 检索接口,实现销售点数据的自动化获取、清洗与导出。通过配置行政区域编码与关键词,可快速完成新晃县等县域范围内的烟花爆竹销售点位置信息提取,生成 Excel 报表供监管部门使用。该轻量化方案无需复杂 GIS 服务器,支持增量更新与政务系统对接,适用于基层监管场景。

县域烟花禁燃监管中,传统人工盘点效率低且可视化差。本方案利用 Java 结合高德地图 POI 检索接口,实现销售点数据的自动化获取、清洗与导出。通过配置行政区域编码与关键词,可快速完成新晃县等县域范围内的烟花爆竹销售点位置信息提取,生成 Excel 报表供监管部门使用。该轻量化方案无需复杂 GIS 服务器,支持增量更新与政务系统对接,适用于基层监管场景。

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

地理信息系统(GIS)技术能够将空间位置与业务数据深度融合,而高德地图 API 提供了成熟的地理编码、POI 检索等能力,结合 Java 语言的跨平台、高稳定性特性,可快速搭建一套轻量化的县域烟花销售点盘点系统,实现销售点位置检索、数据整合、成果输出的全流程自动化,为禁燃监管决策提供数据支撑。
新晃侗族自治县隶属于湖南省怀化市,地处湘黔边界,县域内乡镇分布分散、地形复杂,烟花爆竹销售点多分布于乡镇集市、村级小卖部等场景,人工盘点耗时耗力且易出现遗漏。

本次实践以新晃县为研究对象,依托 Java 开发语言和高德地图 API,针对该县春节烟花禁燃后的销售点开展盘点工作,验证 GIS 技术在县域基层监管中的实用性,也为同类县域的烟花禁燃监管提供可复用的技术方案。
首先需在高德开放平台注册开发者账号,申请 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
);
}
基于 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.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";
;
;
;
HttpResponse<String> result = ;
();
;
;
List<AmapPoi> amapPoiData = <>();
{
result = amapSearchService.getSearch(keywords, types, region, page_size, String.valueOf(scrapingIndex), show_fields, AMAP_CLIENT_AK);
System.out.println(result.getBodyResult());
(StringUtils.isNotEmpty(result.getBodyResult())) {
gson.fromJson(result.getBodyResult(), AmapSearchVO.class);
amapPoiData.addAll(searchVO.getPois());
dataCount = searchVO.getCount();
scrapingIndex++;
}
Thread.sleep();
} (dataCount > );
System.out.println( + scrapingIndex);
System.out.println(amapPoiData.size());
(amapPoiData.size() > ) {
ExcelUtil<AmapPoi> util = <>(AmapPoi.class);
util.exportExcel(amapPoiData, );
System.out.println();
}
}
}
这里给出检索 POI 类的关键 JavaBean 说明:
package com.yelang.project.education.domain.amap;
import java.io.Serializable;
import java.util.List;
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;
private String name; // poi 名称
private String id; // poi 唯一标识
private String location; // poi 经纬度
private String type; // poi 所属类型
private String typecode; // poi 分类编码
private String pname; // poi 所属省份
private String cityname; // poi 所属城市
private String adname; // poi 所属区县
private String address; // poi 详细地址
private String pcode; // poi 所属省份编码
private String adcode; // poi 所属区域编码
private String citycode; // poi 所属城市编码
private List<AmapChildrenPoi> children;
AmapBusiness business;
AmapIndoor indoor;
AmapNavi navi;
List<AmapPhotos> photos;
}
将检索到的新晃县烟花爆竹销售点数据导出为 Excel,便于监管部门线下查看、核对和存档。基于自定义注解的实现快速导出,核心代码如下:
if (amapPoiData.size() > 0) {
ExcelUtil<AmapPoi> util = new ExcelUtil<>(AmapPoi.class);
util.exportExcel(amapPoiData, "新晃侗族自治县烟花销售点列表");
System.out.println("finished");
}
导出结果如下:

提取关键信息后,可以转为以下关键表格,具体如下:
| 名称 | 经纬度 | 详细地址 |
| 彩云烟花爆竹专营店 | 109.220368,27.358348 | 320 国道柏树林便桥往波洲方向下来 500 米 |
| 浏阳中洲烟花 (贡溪四哥店) | 109.163442,27.119872 | 贡溪镇贡溪村牛场斜对面 |
| 唐光清烟花爆竹 | 109.137099,27.183113 | 扶罗敬老院 |
| 浏阳花炮连锁 (贡溪店) | 109.170480,27.117722 | 贡溪镇贡溪村委会门口 |
| 浏阳烟花贡溪敏哥专卖店 | 109.166282,27.119753 | 贡溪镇贡溪村芒井 168 号 |
| 浏阳花炮连锁 (扶罗旗舰店) | 109.142700,27.195404 | G242 扶罗汽车站北侧约 210 米 |
| 浏阳花炮 | 109.074211,27.312052 | 320 国道西北侧 |
| 庆泰花炮 (晃州西路店) | 109.149341,27.345548 | 新晃金米立再生资源有限公司南侧 140 米 |
| 浏阳电子花炮销售总部 | 108.897645,27.035767 | 中国邮政 (凳寨乡邮政所) 北侧 160 米 |
| 浏阳东方红烟花 | 109.144014,27.191250 | 242 国道西南侧 |
| 中洲烟花 (晃州西路店) | 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 |
本方案以新晃县为例的县域烟花禁燃监管 GIS 实践,通过 Java 调用高德地图 POI 检索接口,实现了烟花爆竹销售点的自动化盘点,相比传统人工方式,大幅提升了数据获取效率和准确性:
后续可进一步优化:增加销售点数据的增量更新(避免重复检索)、对接县域政务系统实现数据自动上报、增加违规销售点的位置对比分析等,让 GIS 技术更好地服务于县域基层治理。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
| 五妹批发部南侧 210 米 |
| 宏伟名烟名酒烟花爆竹专店 (X064 店) | 109.232416,27.279789 | 064 县道与 242 国道交叉口南 120 米 |
| 中洲烟花 (X064 店) | 109.262424,27.193034 | 中寨敬老院东侧 60 米 |
| 花海烟花爆竹经营有限公司 | 109.188200,27.371315 | 907 乡道与侗寨路交叉口东 500 米 |
| 新晃县花千树烟花爆竹经营有限公司 | 109.225346,27.337023 | 塘洞村杨柳坪组 |