当前位置: 首页 > java >正文

【智慧城市】2025年中国地质大学(武汉)暑期实训优秀作品(3):基于Mapbox GL JS 构建的城市三维可视化系统

PART.1

项目背景

01

区域发展现状与需求

新加坡和马来西亚地理位置相邻,经济联系紧密,人员往来频繁,形成了独特的双城经济圈。

然而,在城市化快速推进的过程中,两地面临着交通拥堵、资源分配不均、环境治理难度加大等诸多共性问题。同时,随着人口的持续增加,对各类资源的需求也不断攀升,如何实现资源的优化配置成为亟待解决的问题。

02

智慧孪生技术发展机遇

智慧孪生技术作为一种将物理世界与数字世界精准映射的新兴技术,为解决城市发展中的复杂问题提供了全新的思路和方法。

它能够通过对城市各类数据的实时采集、分析和模拟,实现对城市运行状态的全面感知、精准预测和智能调控。在新马双城协同发展的大背景下,引入智慧孪生技术,构建智慧孪生城市,有望打破地域壁垒,实现两地资源的高效整合与协同管理,提升双城整体的运行效率和可持续发展能力。

image.png

我们参考F4map的设计思路,力求实现不同比例尺下的总体地图与详细地图的集成展示;

总体构想:

小比例尺调用mapbox api的已完成地图

大比例尺采用自制3D地图

PART.2

功能介绍与展示

01

核心技术构架

01 数据层

数据来源及数据处理:在openstreetmap上下载新加坡及马来西亚地区的城市建筑、道路、土地利用类型、河流以及湖泊等的shp数据,通过代码将其转化为json格式。

为实现瓦片化加载,利用代码将所需数据瓦片化处理,转成geojson格式输出;

对于不同区域的人口统计数据,通过收集新加坡政府统计局的公开数据获得。

02 核心引擎层

Mapbox GL JS 基础引擎:提供地图渲染的基础框架,支持 3 维地理空间数据的展示与交互。

自定义流式缓存模块:作为核心模块,负责瓦片数据的渐进式加载、智能缓存管理。通过流式缓存技术,实现瓦片数据的高效存储与调用,支持多 Worker 并行处理和智能负载均衡,优化瓦片加载效率。

image.png

03 功能应用层

不同缩放比例下的不同地图调度:小比例尺下调用mapbox api进行高效率总体地图展示,在大比例尺缩放下调用自己搭建的三维可视化地图,做到小比例尺下的总体概览和大比例尺下的细节展示。

瓦片加载与渲染模块:实现建筑物、道路、土地瓦片的加载与渲染。系统根据地图缩放级别动态加载或移除瓦片图层,确保性能和资源利用最优化。

交互功能模块:支持用户点击建筑物标签进行交互,以及地图的动态缩放等操作,提升用户体验。

组件数据展示模块:能够展示新加坡不同区域的统计数据,为智慧城市建设提供数据支撑。利用搜索框组建在小比例尺视图下进行地点查询。

04 监控与管理层

实时缓存统计模块:提供缓存大小、命中率、内存使用情况等实时统计信息,方便开发者监控系统性能。

模块化管理模块:采用模块化设计,将瓦片加载逻辑和缓存管理独立封装,便于系统的后续扩展和维护。

02

功能介绍与展示

小比例尺视图

image.png

大比例尺视图

image.png

日志管理

image.png

PART.3

技术亮点

不同比例尺下不同类型地图的切换

·定义14的缩放等级为边界值,大于14调用自制三维地图,小于14调用mapbox api,在不同缩放等级下呈现不同功能。

高效的流式缓存技术、优化的瓦片处理能力、精准的三维渲染技术

· 引入自定义的流式缓存,支持渐进式加载瓦片数据,改善用户体验。

· 进一步优化瓦片加载效率,确保系统在处理海量数据时仍能保持良好性能。

· 将建筑物数据渲染为三维模型,实现城市 3 维场景的精准呈现。

智能的瓦片管理、丰富的交互体验、实时的性能监控

· 系统可根据地图缩放级别动态加载或移除瓦片图层,平衡性能与资源利用,确保在不同缩放状态下都能高效展示地理信息。

· 用户可通过点击建筑物标签与 3 维模型进行交互,同时支持地图动态缩放等操作,增强用户与系统的互动性。

· 提供实时缓存统计信息,包括缓存大小、命中率、内存使用情况等,便于开发者及时监控和优化系统性能。

PART.4

项目总结

01

结果分析

1.在不同缩放比例下实现了新加坡与马来西亚地区的总体地图与三维城市地图集成;

2.通过大比例尺的自制三维地图,详细精准的展示了新加坡及马来西亚的城市细节信息,为智慧城市建设与设计提供可视化方案。

02

困难与挑战

1.不同类型数据的汇总统一问题,如何在图上不冲突,和谐地集成不同数据,包括建筑、土地类型、交通、植被、水域等信息;

2.如何美化展示不同类型信息,如利用交通数据制作道路网,利用建筑数据制作不同高度的立体,利用土地类型划分不同区域,为林地、绿化带附上立体的树木模型,为山地附上山地模型;

3.如何优化,让模型能更快加载,让瓦片加载的思路更合理。

03

实践意义

1.作为js的初学者,首要的意义在于将课堂知识学以致用,在实践中切实体会所学知识;

2.同时在项目的过程中,我们也学习到了很多,如数据收集,数据处理技巧,模型简易制作,不同类型数据的集成,以及流式缓存技术等等;

3.我们也遇到了许多困难,比如理解流式缓存的工作原理和瓦片数据的动态更新。通过小组成员的协作和讨论,我们逐步解决了问题。我们深刻体会到团队合作的重要性,每个人的贡献都不可或缺。

来源:【智慧城市】2025年中国地质大学(武汉)暑期实训优秀作品(3):基于Mapbox GL JS 构建的城市三维可视化系统

了解实训营戳↓下方小助手

http://www.xdnf.cn/news/20256.html

相关文章:

  • 基于单片机雏鸡家禽孵化系统/孵化环境监测设计
  • 【Go】P2 Golang 常量与变量
  • 从零构建企业级LLMOps平台:LMForge——支持多模型、可视化编排、知识库与安全审核的全栈解决方案
  • 亲历记:我如何用新系统终结了财务部的开票混乱
  • 全球汽车氮化镓技术市场规模将于2031年增长至180.5亿美元,2025-2031年复合增长率达94.3%,由Infineon和Navitas驱动
  • 中国生成式引擎优化(GEO)市场分析:领先企业格局与未来趋势分析
  • 安全沙箱配置针对海外vps容器隔离的验证方法
  • CAD:绘图功能
  • eda(电子设计自动化)行业的顶级技术机密,布局布线优化的遗传算法实现,以及国内为什么做不成商业EDA
  • RWA点亮新能源的数字未来
  • DJANGO后端服务启动报错及解决
  • 如何在没有权限的服务器上下载NCCL
  • Photoshop图层
  • 【分享】AgileTC测试用例管理平台使用分享
  • 入针点云在皮肤模型上的投影(去除肋骨)
  • HashMap多线程下的循环链表问题
  • 25高教社杯数模国赛【B题高质量成品论文+无盲点解析】第一弹
  • 单元测试:Jest 与 Electron 的结合
  • OpenCV C++ 核心:Mat 与像素操作全解析
  • CAN通信入门
  • 关于rust的所有权以及借用borrowing
  • 汽车 信息娱乐系统 概览
  • 【前端教程】JavaScript 实现图片鼠标悬停切换效果与==和=的区别
  • 寻找AI——初识3D建模AI
  • 中囯移动电视盒子(魔百和)B860AV2.1-A2和CM311-5-zg刷机手记
  • MacOS 通过Homebrew 安装nvm
  • 深度学习中的Zero-shot(零次学习)
  • 【Python基础】 18 Rust 与 Python print 函数完整对比笔记
  • 通过Gen AI SDK调用gemini 2.5 pro,单独上传pdf文件 | ai agent 开发笔记 2025.9.2 Day 2
  • 确保 SQL Server 备份安全有效的最佳实践