空间信息可视化——WebGIS前端实例(二)

news2025/4/16 3:04:47

技术栈:原生HTML

源代码:CUGLin/WebGIS: This is a project of Spatial information visualization

5 水质情况实时监测预警系统

5.1 系统设计思想

水安全是涉及国家长治久安的大事。多年来,为相应国家战略,诸多地理信息领域的优秀学者们挺身而出。庞爱萍等通过多时空尺度农业用水安全压力指数为农业用水安全评价提供新的思路和方法[2],闻豪等基于基于水贫困指数WPI计算模型研究区域经济发展和水安全的多元耦合关系[3],张城等基于VIC模型量化了渭河流域水资源供需平衡关系[4],邓捷铭等则给出了区域水安全评价指标体系。[5]GIS以其强大的分析和构建能力,在水资源安全领域的应用方兴未艾。

基于这样的时代背景,水质情况实时监测预警系统的设计思想应运而生,旨在依托先进的传感器技术、物联网技术和数据分析手段,全面、准确地监测我国各水域的水质状况,并实时发出预警信息。

5.2 贫困县数据处理

5.2.1 数据获取

本系统旨在进行水质情况的检测,主要数据来源于中国环境检测总站的数据集。(网址:监测报告-中国环境监测总站)此外,还需要一些矢量边界数据,该数据和4.2.1中相同,来源于阿里云的地图选择器,按照需求下载对应区域的GeoJSON数据即可。(阿里云选择器网址:DataV.GeoAtlas地理小工具系列)

5.2.2 数据处理

限于笔者经历和篇幅,这里并未对整个中国的地表水环境全部进行整理入库,而只是摘取了其中较为重要且可视化效果效果较好的数据进行整理和应用,同时清洗了部分可能出现问题的数据,最终得到了完善且便于应用的数据集。

本系统主要应用到的数据如表5.2-1所示。

表5.2-1 应用数据表

数据名称

数据类型

数据来源

矢量边界数据

GeoJSON

阿里云地图选择器

水质情况数据

JavaScript

中国环境检测总站

5.3 系统设计

5.3.1 总体设计

本系统的项目文件夹为水质情况实时监测预警系统,项目包含3个文件夹和index文件,分别是CSS文件夹,负责存放有关的CSS样式文件;Data文件夹,负责存放项目中所使用到的数据文件;JS文件夹,负责存放项目中所使用到JavaScript文件。同时在主文件夹中还包含index.html文件,该文件是项目的入口HTML文件,程序从此处开始进入并运行。项目结构图如图5.3-1所示。

图5.3-1 项目结构

项目大致流程主要分为数据获取、输出处理、程序编写、系统测试四大主要部分。如图5.3-2所示。

图5.3-2 项目流程图

5.3.2 界面设计

系统界面主要由两个部分组成:地图部分、图表部分。地图部分主要用于显示基础地图,表达出地域的位置信息及底图附带的其他包含信息,图表部分主要负责表达出不同年份不同地域的,交互部分主要负责进行页面的交互,实现地图和图表的动态切换,此外还可以监听鼠标事件实现动态交互功能。

5.3.3 逻辑设计

逻辑设计主要涉及四大方面的内容:数据读取、地图制作、表格绘制、交互响应。数据读取应当是页面加载后最先完成的部分,主要负责利用数据读取库从文件中读取相应的数据存储为JavaScrpit对象。地图制作主要负责利用LeafLet及其相关插件绘制并渲染地图,实现地图的相关功能。表格绘制主要负责利用echarts-4.2.1.min.js库绘制当前状态下的统计图表。交互相应主要负责利用Jqurey库、echarts库等实现页面的交互功能。

5.4 程序汇编

5.4.1 开发环境

此处的开发环境和全国贫困县可视化系统的开发环境一致,不再赘叙。

5.4.2 主界面汇编

HTML文件主要由Head、Body和Script三个部分组成。Head部分主要负责引入所需要的CSS和JS文件。Body部分主要为HTML的整体框架结构。Body部分包含id为content和content-body的div容器,分别承载图表和地图,content下又分诸多容器用于显示不同的图表类型。而写在HTML部分的JavaScript部分主要是读取当前时间并显示到系统界面上。HTML的架构如图5.4-1所示。

图5.4-1 HTML架构图

5.4.3 逻辑函数汇编

整个程序的逻辑函数全部汇编于“JS/index.js”中,主要编写了基础图元加载、表格绘制和交互操作处理的事务逻辑:程序会首先加载对应的矢量边界数据,然后将该数据通过Jqurey.js库转换为Geojson数据准备进行加载。与此同时,程序会读取相应部分的数据,使用echarts.js库将不同样式不同区域的表格将绘制到界面中。系统整体的逻辑流程如图5.4-2所示。

图5.4-2 系统逻辑流程图

5.5 系统展示

本系统的主要呈现形式就是一个数据可视化大屏。中心界面为全国区域地图,而左侧和右侧则是应用echart.js库实现的各种类型的可视化数据表格。如图5.5-1所示。

图5.5-1 水质情况实时检测系统

这里左侧的“水质量分布情况”可以通过点击调整,而企业污染排放情况也具备鼠标悬停的浮动显示逻辑,右侧的“长江流域水流量”表格采用了动态显示的技术,可以通过点击取消显示某一部分的内容,从而便于用户专注兴趣数据,中心数据地图中也写入了鼠标浮动逻辑,当鼠标悬停在某一区域时会显示该区域名称并改变区域颜色。主要的交互逻辑参考说明如图5.5-2所示。

图5.5-2 交互逻辑流程图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2335660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3微前端架构全景解析:模块联邦与渐进式集成

一、微前端核心模式 1.1 主应用与微应用通讯机制 1.2 架构模式对比 维度iFrame方案Web Components模块联邦组合式微前端样式隔离完全隔离Shadow DOM构建时CSS作用域动态样式表通信复杂度困难(postMessage)自定义事件依赖共享Props传递依赖共享不共享按需加载自动共享显式声明…

多模态大语言模型arxiv论文略读(十九)

MLLMs-Augmented Visual-Language Representation Learning ➡️ 论文标题:MLLMs-Augmented Visual-Language Representation Learning ➡️ 论文作者:Yanqing Liu, Kai Wang, Wenqi Shao, Ping Luo, Yu Qiao, Mike Zheng Shou, Kaipeng Zhang, Yang Yo…

【蓝桥杯选拔赛真题101】Scratch吐丝的蜘蛛 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 scratch吐丝的蜘蛛 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 四、程序编写 五、考点分析 六、推荐资料 1、scratch资料 2、python资料 3、C++资料 scratch吐丝的蜘蛛 第十五届青少年蓝桥杯s…

游戏引擎学习第221天:(实现多层次过场动画)

资产: intro_art.hha 已发布 在下载页面,你会看到一个新的艺术包。你将需要这个艺术包来进行接下来的开发工作。这个艺术包是由一位艺术家精心制作并打包成我们设计的格式,旨在将这些艺术资源直接应用到游戏中。它包含了许多我们会在接下来的直播中使用…

前端基础之《Vue(4)—响应式原理》

一、什么是响应式 1、响应式英文reactive 当你get/set一个变量时&#xff0c;你有办法可以“捕获到”这种行为。 2、一个普通对象和一个响应式对象对比 &#xff08;1&#xff09;普通对象 <script>// 这种普通对象不具备响应式var obj1 {a: 1,b: 2} </script>…

Go学习系列文章声明

本次学习是基于B站的视频&#xff0c;【Udemy高分热门付费课程】Golang&#xff1a;完整开发者指南&#xff08;基础知识和高级特性&#xff09;中英文字幕_哔哩哔哩_bilibili 本人会尝试输出视频中的内容&#xff0c;如有错误欢迎指出 next page: Go installation process

Go:程序结构

文章目录 名称声明变量短变量声明指针new 函数变量的生命周期 赋值多重赋值可赋值性 类型声明包和文件导入包初始化 作用域 名称 命名规则&#xff1a; 通用规则&#xff1a;函数、变量、常量、类型、语句标签和包的名称&#xff0c;开头须是字母&#xff08;Unicode 字符 &a…

Python 二分查找(bisect):排序数据的高效检索

二分查找&#xff1a;排序数据的高效检索 第二天清晨&#xff0c;李明早早来到了图书馆。今天他的研究目标是bisect模块&#xff0c;特别是其中的bisect_left和bisect_right函数。这些函数实现了二分查找算法&#xff0c;用于在已排序的序列中高效地查找元素或确定插入位置。 …

【数据结构】堆排序详细图解

堆排序目录 1、什么是堆&#xff1f;1.1、什么是大顶堆1.2、什么是小顶堆 2、堆排序的过程3、堆排序的图解3.1、将数组映射成一个完全二叉树3.2、将数组转变为一个大顶堆3.3、开始进行堆排序 4、堆排序代码 1、什么是堆&#xff1f; 堆的定义&#xff1a;在一棵完全二叉树中&a…

CST1016.基于Spring Boot+Vue高校竞赛管理系统

计算机/JAVA毕业设计 【CST1016.基于Spring BootVue高校竞赛管理系统】 【项目介绍】 高校竞赛管理系统&#xff0c;基于 DeepSeek Spring AI Spring Boot Vue 实现&#xff0c;功能丰富、界面精美 【业务模块】 系统共有两类用户&#xff0c;分别是学生用户和管理员用户&a…

安卓性能调优之-掉帧测试

掉帧指的是某一帧没有在规定时间内完成渲染&#xff0c;导致 UI 画面不流畅&#xff0c;产生视觉上的卡顿、跳帧现象。 Android目标帧率&#xff1a; 一般情况下&#xff0c;Android设备的屏幕刷新率是60Hz&#xff0c;即每秒需要渲染60帧&#xff08;Frame Per Second, FPS&a…

GPT-SoVITS:5 步实现 AI 语音克隆

在 AI 技术高速迭代的今天&#xff0c;语音合成早已突破”机械朗读“的局限 —— 从短视频创作者的虚拟配音、游戏角色的个性化声线&#xff0c;到智能客服的自然交互&#xff0c;GPT-SoVITS正凭借其强大的多模态融合能力&#xff0c;成为实现”AI 声音克隆“与“情感化语音生成…

记录:安装 Docker Desktop 时直接设置安装路径及容器存储路径

近期学用 deepseek 本地知识库的构建&#xff0c;准备尝试几个不同的 RAG 工具&#xff0c;结果基本都需要 Docker 支持&#xff0c;故又重新拾起 Docker 来安装&#xff0c;刚好看到个不用目录链接就可以直接设置安装路径的方法&#xff0c;就记录一下&#xff0c;以免以后忘…

算法训练之贪心

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

Vagrant 安装指南:从零开始搭建开发环境

Vagrant 是一款强大的虚拟化工具&#xff0c;能够帮助开发者快速创建和管理轻量级的、可复制的开发环境。它通过与 VirtualBox、VMware 或 Hyper-V 等虚拟机提供程序结合使用&#xff0c;让你在本地轻松运行虚拟机。本文将详细介绍如何在 Windows、macOS 和 Linux 系统上安装 V…

APIGen-MT:高效生成多轮人机交互Agent数据的两阶段框架

APIGen-MT&#xff1a;高效生成多轮人机交互数据的两阶段框架 引言 随着人工智能技术的飞速发展&#xff0c;AI代理&#xff08;Agent&#xff09;已从简单的聊天机器人发展为能够执行复杂现实任务的系统&#xff0c;例如管理金融交易、安排预约和处理客户服务等。然而&#x…

【NLP】 21. Transformer整体流程概述 Encoder 与 Decoder架构对比

1. Transformer 整体流程概述 Transformer 模型的整个处理流程可以概括为从自注意力&#xff08;Self-Attention&#xff09;到多头注意力&#xff0c;再加上残差连接、层归一化、堆叠多层的结构。其核心思想是利用注意力机制对输入进行并行计算&#xff0c;从而避免传统 RNN …

《Vue Router实战教程》21.扩展 RouterLink

欢迎观看《Vue Router 实战&#xff08;第4版&#xff09;》视频课程 扩展 RouterLink RouterLink 组件提供了足够的 props 来满足大多数基本应用程序的需求&#xff0c;但它并未尝试涵盖所有可能的用例&#xff0c;在某些高级情况下&#xff0c;你可能会发现自己使用了 v-sl…

开发一个答题pk小程序的大致成本是多少

答题 PK 小程序通常指的是一种允许用户之间进行实时或异步答题竞赛的应用程序&#xff0c;可能结合PK答题、积分系统、排行榜等功能。 一、首先&#xff0c;确定答题 PK 小程序的基本功能模块。这可能包括用户注册登录、题库管理、题目类型&#xff08;单选、多选、判断等&am…

GPT-2 语言模型 - 模型训练

本节代码是一个完整的机器学习工作流程&#xff0c;用于训练一个基于GPT-2的语言模型。下面是对这段代码的详细解释&#xff1a; 文件目录如下 1. 初始化和数据准备 设置随机种子 random.seed(1002) 确保结果的可重复性。 定义参数 test_rate 0.2 context_length 128 tes…