基于Vue、Vite与CesiumJS的江西省铜矿资源WebGIS系统设计

基于Vue、Vite与CesiumJS的江西省铜矿资源WebGIS系统设计

**技术说明:**本文围绕江西省铜矿资源信息分布系统进行WebGIS开发复盘,重点整理Vue与Vite前端架构、CesiumJS三维地图引擎、空间数据组织、图层展示、交互查询、资源分布可视化及系统测试等技术要点。内容用于地理信息系统、三维地图应用和空间数据可视化方法交流,不涉及矿产项目推广或商业宣传。

摘要

在当今资源短缺的背景下,自然资源管理和可持续发展的重要性日益凸显。自然资源是支撑生态平衡和人类生存的基石,而作为重要的自然资源,矿产资源不仅是现代社会经济发展的重要物质基础,也是人类生存和发展的重要保障,其合理利用与保护不仅影响着环境质量,也关系到社会经济的稳定发展;另一方面,地缘政治颇有复燃之势,全球正面临不断加剧的国际环境变化,作为我国战略性矿产之一的铜矿资源及其相关产业,与国家战略资源安全的维护与保障息息相关,而地理信息系统(GIS)作为空间数据收集、整合和分析的强大工具,能够为实现战略性重要资源管理的科学化、精细化和可持续化发展决策提供有力支持。

本文采用 Vue + Vite 的核心技术架构,借助基于 JavaScript 的开源三维 Cesium 地图引擎,围绕架构设计、系统功能、关键技术等内容,设计并实现江西省铜矿资源信息分布系统。

关键词:WebGIS;CesiumJS;铜矿资源;可持续发展

Abstract

In the context of current resource scarcity, the importance of natural resource management and sustainable development has become increasingly prominent. Natural resources serve as the cornerstone for maintaining ecological balance and human survival. As critical natural assets, mineral resources not only constitute a vital material foundation for modern socioeconomic development but also serve as essential safeguards for human survival and progress. Their rational utilization and conservation significantly impact environmental quality and influence the stable development of society and economy. Furthermore, against the backdrop of resurging geopolitical tensions and intensifying global environmental changes, copper mineral resources---one of China's strategic minerals---and their related industries are closely tied to national strategic resource security. Geographic Information Systems (GIS), as powerful tools for spatial data collection, integration, and analysis, provide robust support for scientific, refined, and sustainable decision-making in strategic resource management.

This study employs a core technical architecture based on Vue + Vite, leveraging the open-source JavaScript-based 3D Cesium mapping engine. Focusing on architectural design, system functionalities, and key technologies, this research designs and implements an information distribution system for copper mineral resources in Jiangxi Province.

Key words:

WebGIS; CesiumJS; copper mineral resources; sustainable development

1. 引言

1.1 研究背景与意义

铜是重要的基础原材料,是关系国计民生和国民经济发展的战略资源1。近年来,我国铜产业迅速发展,已成为全球最大的铜产品生产国和消费国2。随着新能源汽车、新型信息技术等战略性新兴产业快速发展,铜资源需求激增3,与此同时,全球铜资源和储量波动显著,由于新矿发现减少和现有矿山枯竭,铜矿资源的整体储量呈下降趋势4;全球铜资源供应收紧,海外供应受干扰,我国铜冶炼产能扩张,原料短缺与产能释放并存,亟需提高供应链韧性并确保矿产资源的及时供应5

江西省作为我国铜产业的核心阵地,铜矿资源得天独厚,其探明的铜工业储量占全国铜工业储量的1/3,铜矿资源居全国之首。省内拥有多个大中型铜矿山,这些铜矿矿产分布在江西不同地区,形成了一个相对完整的铜矿资源分布网络;因此,探明江西省铜矿产业在全球经济一体化下的发展态势,有助于相关部门推动相关产业稳定运行、探索产业链协同优化的科学路径,为区域经济高质量发展提供决策支持,从而保障国家战略资源安全,在全球资源竞争中掌握主动权6

江西省行政区划范围及其地形地貌概况如图 1.1所示:

图 1.1 江西省行政区划范围及其地形地貌概况图

江西省铜矿矿产分布及其开采状况如图 1.2 所示,可见,江西省铜矿矿产资源分布具有一定程度的集中性,且主要集中分布在赣北、赣东北和赣南;且未利用资源较多。

图 1.2 江西省铜矿产业链相关企业分布图

江西省铜矿产业链相关企业分布情况如图 1.3 所示,其中,上游企业主要以开采矿产和废杂铜回收利用为主要职能,中游企业主要是以对于铜精矿或者废杂铜等原材料进行粗炼和精炼的冶炼为主要职能,下游企业则是以对铜资源进行深加工为主要职能,铜加工产品有铜棒、铜管、铜板、铜箔、铜线以及铜基合金等多种类型;据图可见,铜矿相关企业的空间分布与铜矿矿产的空间分布有一定的规律性:上游企业的空间分布和铜矿矿产的空间分布有一定的相似性,中游企业的空间分布较为零散,且集聚程度较低,下游企业的空间分布则呈现较为明显的带状分布(萍乡-宜春-南昌-鹰潭-上饶)和集中分布(九江北部、赣州西部),可能与交通条件、劳动力资源等条件相关。

图 1.3 江西省铜矿产业链相关企业分布图

2. 研究方案

2.1 研究方法

本论文采取文献调研分析法、学术讨论法、软件开发实验法等方法完成研究内容和目标。

文献调研分析法指主要集中在论文启动前一个月的文献调研,通过调研了解当前国内外与矿产资源分布和管理相关的地理信息系统的现状和江西省铜矿产业发展历史等相关背景文化,从而对系统可能包含的模块和功能做出假设和预想,再结合技术路线进一步细化系统研究、设计和实现方案;论文主题确定后尽可能多地收集相关数据,如通过检索全国地质资料馆网,收集整理江西省矿产资源分布数据、检索天眼查网站,收集整理江西省铜矿产业链相关企业、查阅近些年的《江西省统计年鉴》,从而收集整理相关的铜矿资源产量指标和数据。

学术讨论法指向专家老师们请教关于地理信息系统在矿产资源分布信息系统中的应用方向和内容等。

软件开发实验法指基于windows操作系统、Chromium 和 NodeJS 等 WebGIS 开发环境,进行系统的开发实现。

2.2 数据准备

表 2.1 数据来源

数据名称 数据类型 数据来源
江西省铜矿矿产地分布 矢量点数据 全国地质资料馆(http://219.142.81.124/Map/List)
江西省铜矿产业相关企业 矢量点数据 爱企查(https://www.tianyancha.com/)
江西省行政区划范围(省市县三级) 矢量面数据 天地图国家地理信息公共服务平台(https://cloudcenter.tianditu.gov.cn/administrativeDivision)
江西省精炼铜数据 表格数据 江西省统计年鉴

3. 技术路线

本研究经过了查阅文献、方案设计与撰写、数据库建设、系统架构设计以及系统实现五个步骤。查阅文献阶段,主要是了解地理信息系统在矿产资源分布信息管理、分析中的应用,以及目前行业内较为主流的 WebGIS 开发模式与技术栈选型,同时针对系统中可能涉及的相关技术、算法、分析方法等进行调查研究;通过总结,最终确定论文的研究方案和研究方法;接着便进入系统各模块设计和实现阶段,耗时较多,主要包括前期数据库的建设、后期系统功能设计的实现、调试和更改,以及论文撰写。具体研究流程步骤如图3.1所示:

图 3.1 研究流程图

4. 系统架构设计

通过前期对目前行业内主流的 WebGIS 开发模式与技术栈选型所作的调查研究,结合本研究中系统的特殊性,如需要从服务器端获取大量地图切片资源等,最终决定将单页面应用(Single Page Application, SPA)作为本系统的网页应用程序模型,保证网页应用实时动态更新的同时,允许用户在不刷新整个页面的情况下与网页进行交互,从而减少了不必要的服务器请求,以提供更流畅的交互反应和更平滑的用户体验,而且,单页面应用模型更适合目前主流的前后端分离的开发架构,后端只需负责通过RESTful API提供相关的数据服务接口,前端只需负责调用特定接口,并将其结果渲染至页面中,实现逻辑分层,即表现逻辑位于客户端, 服务器端的事务处理可以只涉及数据7,职责分明,各司其职,且易于维护;以此为基础,选用基于标准 HTML、CSS 和 JavaScript 构建的渐进式开发框架 VueJS,并借助开发工具Visual Studio Code来开发用户界面,在保证动态交互能力的同时,兼顾了静态内容的快速加载。具体技术路线如图4.1所示:

图 4.1 系统技术路线

对于地图框架的选择,本研究决定选用 CesiumJS 来提供跨平台和跨浏览器的三维地理空间数据可视化功能;CesiumJS是一款利用现代 Web 技术,如 HTML5、WebGL和 WebAssembly,基于 JavaScript 开发的 WebGL 三维地球和地图可视化库。同时,配合面向矢量数据的地理空间处理库 TurfJS 协同进行空间分析操作8

对于后端框架的技术选型,本研究决定选用 NodeJS 作为系统的后端实现方式,借助其单线程异步处理模式,执行速度快且内存管理高效,能够高效处理大量并发请求的同时,又能避免传统多线程模型的资源竞争问题,适用于本系统应用对实时快速响应的需求;同时,借助其全球最大的开源库生态系统,可以快速集成功能模块,以缩短开发周期,并且,借助以其为基础的开发框架 ExpressJS,能够为系统提供轻量级路由、中间件管理和模块化架构,快速搭建RESTful API和微服务;另外,NodeJS 还具有多平台兼容性,支持 Windows、Linux、macOS 等操作系统,后期可以轻松部署至云服务器或容器环境(如Docker),适配多种开发场景。

对于数据库的选择,考虑到本研究中矿产资源、企业的分布皆为地理空间数据,具有地理空间属性,同时,又考虑到MySQL的空间索引功能较弱,而MongoDB虽然支持地理空间索引,但在复杂事务处理上不如关系型数据库等条件,本研究最终决定选用广泛应用于地质勘探、自然资源管理领域的 PostgreSQL + PostGIS 作为本系统的数据库技术选型,以 PostgreSQL 作为具有高性能和高扩展性的、强大的对象关系型数据库,以支持复杂事务查询为基础,空间数据库扩展 PostGIS 作为辅助,以专门处理地理空间数据9;同时,PostgreSQL能够在运行时添加新的数据类型、函数和访问方法的机制,所以,即便PostGIS所谓相对独立的开发扩展,仍然可以非常紧密地集成到PostgreSQL数据库中10;PostGIS 的核心优势,包括但不仅限于:支持shapefile数据的导入导出11、通过 R-Tree 索引加速空间查询,以显著提升数据渲染和空间分析效率、自身集成了较为丰富的空间分析函数等。

对于服务器端技术选型,本系统采用Nginx技术进行反向代理和负载均衡,借助反向代理解决系统前后端、Docker 不同容器服务之间跨域、访问错误等问题,确保前端请求能够正确到达后端服务、后端数据能够畅通到达前端页面;同时,后续可以通过Nginx将请求分发到多个后端服务器上,以减轻单个服务器的压力,提高系统的稳定性12

对于运行环境的技术选型,本系统以建立微服务架构为中心思想,即将单一应用程序划分成一组小而微的独立服务,不同服务可以采用不同的语言编写,其间通信与交互通过 RESTful API 实现,与传统面向服务架构(SOA)相比,微服务功能粒度更细,服务边界更明确13;同时,为保障本系统在多种环境下的可靠运行,选用当下较受青睐的 Docker 容器化技术,以实现服务标准化封装与部署,将较复杂的系统拆分为前端、后端及数据库容器,具有高内聚、松耦合、易扩展的特点,每个服务可独立部署、独立扩展;其具体优势如下所述:

环境一致性保障

考虑到地理信息系统的开发依赖环境纷繁复杂,传统的部署方式不仅效率较低,且易出现"开发环境正常,生产环境报错"的问题;基于 Docker 特定的 Dockerfile 定义,可以将系统依赖,如PostgreSQL 15 + PostGIS 3.3、Node.js 22、Vue 3等封装为统一镜像,通过容器镜像固化所有依赖,如操作系统、运行时、库版本等,确保从开发到部署的全流程环境一致性,避免因环境差异导致的依赖不相容或系统模块崩溃等问题。

模块解耦

将本系统解耦为前端工程服务、后端服务、数据库服务,即通过建立相应容器将系统中的异构模块隔离开来,同时,允许各模块独立运行、升级和扩展,降低耦合风险。

微服务架构设计

将系统拆分为可视化、业务逻辑、数据库三大容器,分别负责地图渲染及执行用户操作、提供 RESTful API 接口、空间数据存储与查询;如此以来,在执行复杂空间分析任务、占用大量 CPU/内存资源时,可以避免系统中其它容器服务的稳定性,同时,亦能保证各容器之间能够通过自定义网络建立通信14

快速部署与跨平台适配

通过 docker-compose 编排可视化、业务逻辑、数据库容器服务,容器化屏蔽底层操作系统差异,能够在本地服务器与阿里云ECS环境中均实现一键部署,"一次构建,随处运行"。

5. 系统模块实现

经过上述准备,本研究决定将系统包含三大主要模块,分别对应地理信息系统的基础地图操作与数据展示功能、空间分析功能、数据图表分析功能:

5.1要素展示模块:

5.1.1功能概述:

目标:直观呈现江西省行政区划范围、铜矿矿产资源和铜矿产业相关企业的空间分布与属性特征。

核心功能:

支持自然地形渲染、传统二维、卫星影像多类型底图展示;

多尺度地图展示,支持全省范围概览和具体铜矿矿产、铜矿企业点要素位置、属性详查;

分层可视化:将江西省行政区划范围矢量要素、江西省铜矿矿产资源和铜矿产业相关企业矢量要素分层叠加,利于后续查询、分析等操作;

支持数据以"切片"的形式显示,即在不同的缩放程度下,显示不同级别的行政区划范围数据。

5.1.2技术实现:

本系统通过前后端分离、协同实现行政区划矢量数据的动态加载与渲染,其核心流程如下:将存储在 PostGIS 空间数据库中的江西省行政区划范围、铜矿矿产资源和铜矿产业相关企业矢量要素数据,通过 NodeJS 中的 ExpressJS 和 pg 扩展编写相应的接口,指向相应的数据,从而将数据库中特定数据暴露给前端服务;然后,前端向相应的接口发送请求,以获取相应的数据,并将其渲染至页面中相应位置;下面以获取江西省县级行政区划矢量数据并渲染的具体实现代码为例,阐述该过程中的关键实现,如下图图 5.1所示:

图5.1前端渲染数据过程图

初步获取空间数据及解析

首先,前端基于 FetchAPI 向相应的RESTful接口发送 GET 请求,所获取的响应数据采用 GeoJSON 格式,包含几何坐标、各下辖行政区名称、地级市归属等属性字段,实现空间数据与属性数据的一体化传输;

坐标规范化处理

在实践过程中发现从 PostGIS 处理、返回的同一个面状矢量要素数据(即 MultiPolygon 类型)的几何结构存在差异性,如南昌市新建区存在"飞地"的现象,即2个不相毗邻的矢量面要素数据,而且这种差异性具有随机性的特征,所以在根据每一段地理坐标将数据渲染至页面相应位置之前,需要校验该要素数据的坐标对数及其完整性,如存在问题,应先自动补全缺失的顶点坐标,或者合并多个坐标环,以确保符合 Cesium 的渲染数据输入规范;

实体渲染和样式配置

在解决了多边形几何结构的差异性问题后,再通过 Cesium Entity API 动态创建多边形要素:设置半透明红色填充及黑色边界线,既突出行政区划范围,又不遮挡底图和其它矢量要素标记;将原始属性数据绑定至实体,为后续属性展示、空间查询等操作提供元数据基础;

动态构建空间索引

创建以各县级行政区名称为键的实体索引,以支持后续通过县名快速定位 Cesium 实体,从而优化了交互查询的效率;另一方面,通过县名高效实现目标行政区划的显隐控制,满足后续查询、叠加分析等可视化需求;

前端获取并渲染江西省区县级矢量数据的关键代码实现如下:

export const getQXPolygon = async (map, polygonEntities, countyData) => { try { const response = await fetch('http://localhost:3000/jx_quxian', { method: 'GET', headers: { 'Content-Type': 'application/json' } }) const entities = await response.json() const countyEntityMap = new Map() entities.forEach(entity => { let flatCoordinates = \[\] if (entity.gid == 53 || entity.gid == 75) { flatCoordinates = ...entity.geom.coordinates\[0.flat(),...entity.geom.coordinates1.flat()] } else { flatCoordinates = entity.geom.coordinates0.flat() } if (flatCoordinates.length % 2!== 0) { flatCoordinates.push(flatCoordinatesflatCoordinates.length - 1) } entity.flatCoordinates = flatCoordinates }) entities.forEach(entity => { const cesiumEntity = map.value.entities.add({ polygon: { hierarchy: Cesium.Cartesian3.fromDegreesArray(entity.flatCoordinates.flat()), material: Cesium.Color.RED.withAlpha(0.5), outline: true, outlineColor: Cesium.Color.BLACK, height: 1000, }, properties: entity, show: false }) countyData.push({ county: entity.xianji, city: entity.diji }) if (!countyEntityMap.has(entity.xianji)) { countyEntityMap.set(entity.xianji, \[\]) } countyEntityMap.get(entity.xianji).push(cesiumEntity) polygonEntities.value.push(cesiumEntity) }) return countyEntityMap } catch (error) { console.error('failed to loaded the jx_quxian multipoltgon:', error) return new Map() } }

5.2 空间分析模块:

5.2.1 功能概述

空间分析模块是本系统的核心功能之一,旨在通过地理计算揭示江西省铜矿资源与相关产业要素的空间分布规律,从而为相关管理部门进行资源评估、产业规划和决策制定提供参考。具体功能包括:

条件查询

根据特定条件(按照级别查询特定行政区划范围、按照产业链环节查询特定企业、按照利用现状查询特定矿产点)实现快速查询特定矢量要素,如:根据选定的特定县名称,执行条件查询得到目标县矢量要素,并将其它矢量要素隐藏,以突出目标矢量要素,同时,通过叠置分析得到该矢量要素范围内的铜矿矿产地分布点要素和铜矿产业相关企业分布点要素数据,并在页面中以表格形式,将这些点要素数据的属性数据展示出来;根据选定的产业链环节(上游、中游、下游),执行条件查询得到所有满足该条件的企业点分布,并隐藏其它点要素数据;根据选定的利用现状描述(生产矿区、开采矿区、停采矿区等),执行条件查询得到所有满足该条件的铜矿矿产地分布,并隐藏其它点要素数据;

核密度分析

从空间分布的角度分析江西省内铜矿产业链,如探勘、开采、加工、贸易等相关企业的聚合特征。主要从两个维度来分析:一是上中下游企业分布密度对比(如采矿企业集中于赣东北,加工企业分布于南昌周边);一是将密度热力与交通网络、城市建设等叠加分析,以揭示产业布局的驱动因素。

5.2.2技术实现

条件查询:

通过空间索引优化与几何计算相结合的策略,实现行政区划内铜矿资源与产业要素的高效检索。关键数据流程如下图图5.2所示:

图 5.2 空间查询数据逻辑流程图

提高查询效率的关键实现细节:

与传统查询采用全量点遍历的算法相比,本系统通过分三层过滤机制,以提升空间查询效率:首先通过检索得到目标面要素数据,其次,借助在初始化数据时建立的网格空间索引,快速遍历、筛选各个代表其区域内部点要素数据的网格,然后,对于面要素数据,通过计算其矢量边界,得到目标多边形的最小外包络矩形15,即能够将该不规则多边形所有点和线全部包围的最小矩形,据此进行初步范围的筛选;最后,借助 TurfJS 的点面要素查询算法进行网格内各个点要素数据的精确位置关系的判断,部分关键实现代码如下:

对点要素数据建立网格空间索引

pointEntities.value.forEach(point => { const pos = point.position.getValue(Cesium.JulianDate.now()); const carto = Cesium.Cartographic.fromCartesian(pos); const lon = Cesium.Math.toDegrees(carto.longitude).toFixed(4) const lat = Cesium.Math.toDegrees(carto.latitude).toFixed(4) const gridKey = `{lon},{lat}` if (!spatialIndex.value.has(gridKey)) { spatialIndex.value.set(gridKey, \[\]) } spatialIndex.value.get(gridKey).push({ entity: point, rawData: point.properties.getValue() }) })

建立最小外包络矩形,并查询点要素数据是否在面内

const queryPointsInPolygon = async (countyName) => { const countyEntity = polygonEntities.value.find(e => { const props = e.properties.getValue() return props?.xianji === countyName }) const positions = countyEntity.polygon.hierarchy.getValue().positions const degreesArray = positions.map(pos => { const carto = Cesium.Cartographic.fromCartesian(pos) return Cesium.Math.toDegrees(carto.longitude), Cesium.Math.toDegrees(carto.latitude) }) const polygon = turf.polygon(degreesArray) const bbox = turf.bbox(polygon) const bboxPolygon = turf.bboxPolygon(bbox) const results = \[\] const resultsKCD = \[\] spatialIndex.value.forEach((points, key) => { const lng, lat = key.split(',').map(Number) const pt = turf.point(lng, lat) if (turf.booleanPointInPolygon(pt, bboxPolygon)) { points.forEach(p => { if (turf.booleanPointInPolygon( turf.point(p.rawData.lng, p.rawData.lat), polygon )) { results.push(p.rawData) } }) } }) spatialKCDIndex.value.forEach((points, key) => { const lng, lat = key.split(',').map(Number) const pt = turf.point(lng, lat) if (turf.booleanPointInPolygon(pt, bboxPolygon)) { points.forEach(p => { if (turf.booleanPointInPolygon( turf.point(p.rawData.point_x, p.rawData.point_y), polygon )) { resultsKCD.push(p.rawData) } }) } }) currentPoints.value = results currentKCDPoints.value = resultsKCD }

以上饶市为例,具体查询结果如图所示:根据选定的市名称,点击查询,执行条件查询得到目标市级矢量要素对象,并将其它矢量要素隐藏,以突出显示目标矢量要素,同时,通过叠置分析得到该矢量要素范围内的铜矿矿产地分布点要素和铜矿产业相关企业分布点要素,并在页面中以表格形式,将这些点要素的统计数据和属性数据展示出来:

图5.3 执行条件查询后的结果图(以上饶市为例)

核密度分析实现

基于Cesium-Heatmap插件实现动态核密度分析图渲染,支持参数动态调整(半径、透明度),关键步骤如下:

数据预处理:提取目标点要素数据的经纬度坐标,动态计算核密度分析图数据的地理范围,即其矩形范围,并以此为约束,过滤无效数据,同时避免核密度分析图渲染到地图外区域。

核密度分析图配置:根据用户所选择的点要素类型(矿产/企业分布),根据点要素的实际分布情况设置核密度分析图显示梯度颜色与权重参数。

动态渲染:通过CesiumHeatmap库生成热力图的Canvas画布,再将Canvas作为Cesium矩形的纹理材质,通过地理坐标范围定位到地图区域。

通过将密度计算任务分配至 Web Worker子线程,避免主线程阻塞,以平衡内存与计算效率。

核密度分析图关键触发逻辑代码实现:

const toggleHeatmap = (pointType) => { const validPoints = \[\]; let minLon = validPoints0.x let maxLon = validPoints0.x let minLat = validPoints0.y let maxLat = validPoints0.y validPoints.forEach(point => { minLon = Math.min(minLon, point.x) maxLon = Math.max(maxLon, point.x) minLat = Math.min(minLat, point.y) maxLat = Math.max(maxLat, point.y) }) const buffer = 0.05 const width = maxLon - minLon const height = maxLat - minLat const west = minLon - width * buffer const east = maxLon + width * buffer const south = Math.max(minLat - height * buffer, -89.9999) const north = Math.min(maxLat + height * buffer, 89.9999) const canvas = document.getElementsByClassName('heatmap-canvas')0 map.value.entities.add({ name: 'heatmap', rectangle: { coordinates: Cesium.Rectangle.fromDegrees(west, south, east, north), material: new Cesium.ImageMaterialProperty({ image: canvas, transparent: true }) } }) const pointSource = pointType === 'qy'? pointEntities.value: pointKcdEntities.value; pointSource.forEach(point => { try { const pos = point.position.getValue(Cesium.JulianDate.now()) const carto = Cesium.Cartographic.fromCartesian(pos) const lon = Cesium.Math.toDegrees(carto.longitude) const lat = Cesium.Math.toDegrees(carto.latitude) if (isValidCoordinate(lon, lat)) { validPoints.push({ x: lon, y: lat, value: 100 * Math.random() }) } } catch (e) { console.warn("Invalid point position:", point) } }) const createOptimizedCanvas = () => { const canvas = document.createElement('canvas') const ctxOptions = 'willReadFrequently' in CanvasRenderingContext2D.prototype? { willReadFrequently: true }: undefined canvas.getContext('2d', ctxOptions) return canvas } heatmapInstance.value = new CesiumHeatmap(map.value, { canvasCreator: createOptimizedCanvas, points: validPoints, heatmapOptions: { radius: pointType === 'qy'? heatmapRadius.value: heatmapKCDRadius.value, maxOpacity: pointType === 'qy'? heatmapOpacity.value: heatmapKCDOpacity.value, gradient: pointType === 'qy'? gradientQY: gradientKCD, backstore: true } }) }

核密度分析图如下所示:

图5.4 江西省铜矿产业链相关企业核密度分布图

根据分析结果图5.4,可观察到以下空间分异特征:

产业链上游(采矿与初加工)企业布局分散,主要分布于赣州、九江和宜春; 中游(冶炼与加工)企业呈多中心分布,一级集聚区呈多点分布,主要集中分布在鹰潭、上饶、宜春、赣州和南昌部分县区;下游(终端制造)企业高度聚集,一级集聚区呈带状和中心集聚分布,在抚州、宜春、鹰潭、上饶、南昌、以及赣州部分县区;主要的影响驱动因素可能为:对铜矿资源的空间分布具有一定的依赖性、东西走向横贯江西的铁路交通等条件。

图 5.5江西省铜矿矿产地核密度分布图

由图5.5可见,江西省铜矿生产矿区较为零散,主要分布在上饶、赣州和九江北部;建设矿区与采空区皆仅分布在九江北部;上饶、景德镇、九江、新余、抚州和赣州分布有大量未利用矿产地资源;且未利用资源在数量上远大于已开发利用的铜矿资源。

综上所述,可以发现江西省铜矿产业具有明显的空间集聚效应,其中铜矿产业链相关企业在鹰潭-上饶、九江北部和赣州市范围内分布最多、密度最高,表明该区域凭借资源与产业优势,上游、中游和下游产业发达,形成产业集群,拥有相对较为完整的产业链。

5.3 数据分析模块:

据江西省统计年鉴数据,2019-2023年,全省近5年精炼铜产量总体保持增长,年平均增长率9.8%,其中2023年精炼铜产量达到198.50万吨。进而,根据江西省的铜矿石产量,假设以湿法冶金等工艺冶炼出精炼铜(品位=0.5%,选矿回收率=80%、冶炼回收率=95%),可以估算出铜矿资源的自给率(自给率=矿石产量*品位*选矿回收率*冶炼回收率/精炼铜产量),结果如表5.1、5.2所示。

表5.1 近5年江西省精炼铜产量、矿石产量和自给率

年份 精炼铜(万吨) 矿石产量(万吨) 自给率
2019年 142.36 5820.5 17.0%
2020年 150.74 5593.1 15.4%
2021年 160.41 5565.6 14.5%
2022年 187.54 4926.6 10.9%
2023年 198.50 4770.7 10.0%

表5.2 近5年江西省精炼铜产量、矿石产量和自给率组合图表

可以发现,江西省近5年的精炼铜自给率逐年下降,截至2023年底自给率仅10%左右,这显然给江西铜产业的供应链稳定性和成本控制带来巨大挑战。

5.3.1平均最近邻分析

本研究采用平均最近邻工具量化江西省铜矿企业的空间分布模式。首先,为确保空间统计分析的精度,须先将铜矿企业点数据投影至UTM Zone 50N平面坐标系,以消除地理坐标系下弦距计算的潜在误差。所有距离计算结果均以米为单位,并通过欧氏距离方法进行验证16。平均最近邻分析结果如图5.6所示,通过分析结果发现,江西省铜矿企业的空间分布呈现高度聚集的模式。

图5.6平均最近邻分析结果报告

其中最近邻比率(NNR)约为 0.35,表明实际平均距离仅为随机分布期望值的35%,该值小于1,表明点分布呈现聚集模式,而且在通常情况下,该值越接近0,聚集程度越高,即存在较为明显的空间聚集效应;其计算公式如下所示:

其中NRR代表最近邻比率,OMD代表观测平均距离,EMD代表期望平均距离(若NNR < 1,表明聚集分布;NNR ≈ 1为随机;NNR > 1为离散);

z值约为 -34.72,统计显著性极强,排除了随机分布的可能性;观测平均距离(2902.41米)显著小于期望平均距离(8286.80米),进一步支持聚集结论。这一结果与核密度分析中"鹰潭-上饶为核心集聚区"的发现一致,表明铜矿企业在空间上高度集中,呈显著的聚集模式,可能与资源富集区、产业链协同效应及政策引导密切等因素相关。

5.3.2全局空间自相关分析(Moran's I)

本研究采用全局Moran's I指数,分析江西省铜矿企业密度的空间关联性。空间关系定义为适用于行政区分析的"面共享边或角"(Contiguity Edges Corners),权重标准化方法为行标准化(ROW),确保每行的权重和为1。分析结果如图5.7显示:

图5.7全局空间自相关(Moran's I)分析报告

由分析结果可知,江西省铜矿企业空间分布密度的Moran's I指数为0.118,表明铜矿企业空间分布存在一定程度的正向空间自相关(I > 0);

z值为 5.07(|z| > 2.58),远高于一般显著性水平(如2.58对应95% 置信水平),可以推出分析结果在统计上高度显著,即在99%置信水平下拒绝"空间随机分布"的零假设;

p < 0.001,由此推知观察到的空间模式极不可能是随机产生的,具有统计学上的显著性,进一步支持了拒绝零假设的结论。

期望指数为 -0.01,表示在完全随机分布的情况下,Moran's I的期望值为接近于0的负数,而实际观测到的值 0.118 明显高于期望值,进一步验证了空间聚集的存在;

最后,方差值为0.000642,这反映了Moran's I指数的变异性较低,分析结果较为稳定。

此结果亦与核密度分析(图5.4)及LISA聚类(图5.8)中"鹰潭-上饶为核心集聚区"的结论一致,高密度区域(如鹰潭、上饶)倾向于邻近其他高密度区域,进一步验证了铜矿资源分布的空间依赖性和集聚性特征。

5.3.3局部空间自相关分析(LISA聚类)

本研究采用Anselin Local Moran's I工具,结合邻接权重矩阵,识别江西省铜矿企业密度的局部空间关联模式,一方面提供局部尺度细节,以补充全局Moran's I指数;另一方面,通过识别热点和冷点区域,为区域差异化政策的制定提供参考依据。其中,聚类类型包括高-高(HH)、低-低(LL)、高-低(HL)及低-高(LH)。分析结果如图5.8所示;由图可知:

高-高(HH)聚类:鹰潭市、南昌市西湖区(图5.7),表明这些区域铜矿企业密度高且邻近区域同样高密度,形成核心产业集群;

低-低(LL)聚类:九江市修水区、吉安市安福县、泰和县、抚州市南丰县、赣州市宁都、兴国、于都、安远、会昌、定南县域(图5.8),反映资源开发潜力较低,可能与矿产资源条件或产业基础不足有关;

分析结果图中未出现高-低(HL)及低-高(LH)区域,即高值区域被其他高值包围,低值区域被低值包围,高值与低值区域之间缺乏明显的过渡带(如中密度区域较少),反映了江西省铜矿企业密度在空间上呈现显著的正向自相关性。

图5.8江西省铜矿企业密度LISA聚类图

6. 总结与展望

本次实践成果主要体现在以下4个方面:

数据动态可视化与多源数据融合:系统基于CesiumJS引擎实现了江西省铜矿资源及产业空间分布的动态展示,支持多类型底图(地形、卫星影像)切换与分层叠加,直观呈现矿点、企业分布与地形地貌的空间关系。同时,整合了全国地质资料馆、爱企查、天地图等多源异构数据(矢量点、面数据及统计表格),通过PostGIS空间数据库实现高效存储与动态渲染,提高了传统WebGIS系统在地理场景中的表达力;

空间分析与决策支持功能:系统集成了作为WebGIS系统的空间查询、空间分析功能,例如,通过核密度热力图揭示产业链上下游企业的空间集聚特征(如鹰潭-上饶为高密度核心区),结合Moran's I指数验证全局空间自相关性(I=0.118, p<0.001),为资源规划,以及产业链优化布局提供科学依据;

微服务架构与容器化部署:采用VueJS + NodeJS + PostgreSQL/PostGIS的前后端分离技术栈,结合Docker容器化与Nginx反向代理,实现服务模块解耦与跨平台快速部署。通过微服务设计(地图渲染、业务逻辑、数据库独立容器),保障系统的稳定性,同时支持云端弹性扩展,降低运维复杂度;

面向产业实际的定制化功能:系统针对江西省铜矿资源管理痛点,设计了产业链协同分析模块(上游采矿、中游冶炼、下游加工企业分布对比)与资源自给率动态评估功能(基于近5年产量数据计算自给率,揭示供应链风险)。

总结:根据前述空间统计结果表明,江西省铜矿资源分布呈现极显著的空间聚集性(NNR ≈ 0.35, p < 0.001),热点区域集中于鹰潭、上饶等交通枢纽与资源富集区。结合最新的《铜产业高质量发展实施方案(2025---2027年)》政策文件,为促进江西省铜矿企业发展,提出以下一些建议:

(1)政策规划与引导:根据企业分布,引导上游企业聚集于赣南资源富集区,中下游企业布局在鹰潭、南昌等交通便利之地,实现上下游协同发展。同时,在资源富集区推动绿色矿山建设,采用绿色开采技术,实现开采与生态修复同步。严格把控行业准入,新改扩建项目需符合能耗和环保标准,避免盲目投资。

(2)科技创新支持:利用南昌、赣州高校资源,鼓励企业与高校、科研机构合作,研发低能耗、低排放的绿色技术,给予财政补助,加速技术应用。在铜产业集聚区建设绿色技术示范园区,推广节能减排技术与清洁生产工艺。

(3)完善基础设施建设:强化赣南、鹰潭、南昌等地交通基建,构建多式联运物流枢纽,提升运输效率,降低物流成本。推动清洁能源在产业集聚区的应用,助力企业节能改造,提高能源利用效率。

(4)在HH聚类区(如鹰潭-上饶)建立跨区域产业联盟,共享基础设施与技术资源,加强协同发展战略;合理规划LL聚类区的发展战略,因地制宜,发展特色产业;同时可能需要注意部分地区生态补偿:在资源富集区推行"绿色矿业"认证,平衡开发与生态保护

此外,还可通过优化产业结构、加强监管服务、提供资金支持、培养引进人才等举措,因地制宜,全方位推动江西铜矿企业高质量发展。

参考文献

李裕伟.战略性矿产资源清单、供需形势与对策J.科技导报,2024,42(05):26-37.

王佳琪.工信部:到2027年,力争国内铜矿资源量增长5%---10%N.中国信息化周报,2025-02-17(003).

李晶晶,杨武年,鲁庆.矿产资源两库衔接中各数据库对应关系清理J.价值工程,2013,32(33):315-317.

李洪羽.铜矿资源简要分析及新技术应用浅谈J.中国高新科技,2024,(20):93-95.

Lotfi R., Kargar B., Hoseini S. H., Nazari S., Safavi S., and Weber G. W., Resilience and sustainable supply chain network design by considering renewable energy, International Journal of Energy Research. (2021) 45, no. 12, 17749--17766.

Litvinenko, V. S., Petrov, E. I., Vasilevskaya, D. V., Yakovenko, A. V., Naumov, I. A., & Ratnikov, M. A. (2023). Assessment of the role of the state in the management of mineral resources. Journal of Mining Institute, 259, 95-111.

方敏,赵峰.单页面技术在试验数据管理系统中的研究与应用J.计算机系统应用,2019,28(04):111-118.

Netek, R., Pohankova, T., Bittner, O., & Urban, D. (2023). Geospatial Analysis in Web Browsers---Comparison Study on WebGIS Process-Based Applications. ISPRS International Journal of Geo-Information, 12(9), 374.

徐长庆,李雨晴,李德友,等.基于PostgreSQL与PostGIS的空间数据一体化方案设计与实现J.山东理工大学学报(自然科学版),2023,37(03).

赵雅鹏,江彬,樊伟平,等.基于开源Postgresql构建高性能管网分析服务J.城市勘测,2023,(06):175-177.

吴国超,王豹,鲍文月.基于开源框架的WebGIS平台关键问题研究J.城市勘测,2023,(02):45-48.

陈根深,刘刚,陈麒玉,等.基于多源数据集成与WebGIS的三维矿山空间数据管理系统关键技术及应用J.软件导刊,2023,22(11):18-28.

林航.Docker容器技术在微服务架构中的应用J.网络安全和信息化,2024,(07):59-62.

王悦.微服务架构在分布式云存储系统中的应用与关键技术研究J.湖南邮电职业技术学院学报,2024,23(04):70-75.

王淑青,陈军,潘健,等.基于最小包络矩形的不规则凸多边形的三角形处理算法J.计算机应用与软件,2016,33(11):197-199+220.

ESRI. (2023). How Average Nearest Neighbor works. ArcGIS Pro Documentation. Retrieved May 20, 2024, from

致谢

四年的读书生活在这个季节即将画上一个句号,而于我的人生却只是一个逗号,我将面对又一次征程的开始。四年的求学生涯,一路走来,幸得老师们的谆谆教诲、亲友们的倾力扶持,方使这段旅程既有耕耘之辛,亦结硕果之实,走得辛苦却也收获满囊。在论文即将付梓之际,思绪万千,久久不能平静,从开始进入课题到论文的顺利完成,有很多可敬的师长、同学、朋友给了我莫大的帮助,在这里请接受我最诚挚的谢意!

相关推荐
天丁o8 小时前
我把一套 Flowable + Spring Boot + Vue 的 BPM 流程引擎整理开源了:从流程设计器到待办闭环
spring boot·vue·工作流引擎·flowable·bpm流程引擎·流程审批
弹简特8 小时前
【Vue3速成】05-vue3官方库路由机制之路由守卫
vue·路由
小堂子这厢有礼了20 小时前
Chet.Admin 模块详解⑥:字典管理 + useDict 联动表单
vue·后台管理系统·vbenadmin·chet.admin
猫猫不是喵喵.1 天前
Vue3 hooks 函数
vue
NutShell Wang1 天前
Vite 8.1 深度拆解:Rolldown 统一打包器如何终结前端构建的「双引擎时代」
前端·rust·开源·vite·开发者工具·vibe coding
新中地GIS开发老师2 天前
WebGIS开发学生作品|低空航天管理与航线规划系统
前端·javascript·webgis·三维gis开发
Pu_Nine_93 天前
Vue3+TS+Express 转 Nuxt4 全栈开发笔记(Drizzle ORM + MySQL)
前端·vue·express·nuxt.js·全栈框架
脾气有点小暴4 天前
ECharts 伪 3D 柱状图完整注释 + 实现原理说明
前端·3d·信息可视化·vue·echarts
sugar__salt4 天前
Vue3 核心特性深度解析:v-model、ref 属性与 nextTick 完全指南
前端·javascript·vue.js·前端框架·vue