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

举报
夜郎king 发表于 2026/07/09 09:02:39 2026/07/09
【摘要】 本文以新晃县为例的县域烟花禁燃监管 GIS 实践,通过 Java 调用高德地图 POI 检索接口,实现了烟花爆竹销售点的自动化盘点,相比传统人工方式,大幅提升了数据获取效率和准确性

目录

一、前言

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.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 五妹批发部南侧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 塘洞村杨柳坪组

四、总结

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

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

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

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。