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

WebGIS城市停水及影响范围可视化实践

目录

前言

一、相关信息介绍

1、停水信息的来源

2、停水包含的相关信息

二、功能简介

1、基础小区的整理

2、停水计划的管理

三、WebGIS空间可视化

1、使用到的组件

2、停水计划的展示

3、影响小区的展示

4、实际效果

四、总结 


前言

        城市停水,一个看似简单的问题,却可能引发一系列连锁反应,给市民的生活带来诸多不便。从家庭用水的中断到商业活动的停滞,再到公共设施的关闭,停水的影响范围广泛而深远。然而,信息的不对称和不透明往往加剧了停水带来的困扰。居民可能在停水发生后才得知情况,缺乏足够的时间做出应对措施,而城市管理者也难以准确评估停水的影响范围和程度。在这样的背景下,GIS(地理信息系统)技术的引入,为解决信息差问题提供了新的希望。

        首先,城市停水的困扰主要体现在以下几个方面:

  1. 生活不便:停水直接影响居民的日常用水,包括烹饪、清洁和个人卫生等基本需求。

  2. 经济影响:商业活动和工业生产依赖稳定的水资源,停水导致经济损失,甚至影响供应链。

  3. 健康风险:长期或频繁的停水可能导致水质下降,增加疾病传播的风险。

  4. 社会秩序:停水可能引发公众的不满和恐慌,影响社会稳定。

  5. 信息不对称:居民和企业往往在停水发生后才得知消息,缺乏准备时间,而管理者也难以及时准确地传达信息。

GIS技术的应用,为解决上述问题提供了新的途径:

  1. 实时监控与预警:GIS可以集成传感器数据,实时监控城市供水管网的状态,一旦发现异常,可以立即向相关部门和居民发出预警。

  2. 影响范围评估:通过GIS的空间分析功能,可以预测停水事件的影响范围,帮助管理者评估影响程度,制定应对措施。

  3. 资源优化分配:GIS可以帮助管理者了解水资源的分布和需求,优化水资源的分配,减少停水对特定区域的影响。

  4. 信息透明化:GIS可以将停水信息和影响评估结果直观地展示给公众,提高信息的透明度,减少恐慌和不满。

  5. 应急响应:GIS可以辅助制定应急供水计划,如确定临时供水点的位置,指导居民获取紧急用水。

  6. 长期规划:GIS可以辅助城市规划者分析供水系统的脆弱性,制定长期改进计划,提高系统的抗风险能力。

        通过GIS技术,我们不仅能够减少城市停水带来的即时困扰,还能够提高城市供水系统的韧性和可持续性。GIS的应用,使得信息传递更加迅速和准确,帮助居民和管理者更好地应对停水事件。此外,GIS还能够促进公众参与,提高公众对水资源管理的认识和参与度,共同构建更加和谐的城市水环境。

        总之,GIS技术为解决城市停水带来的信息差问题提供了强有力的工具。通过GIS,我们可以看到,尽管城市停水是一个复杂且具有挑战性的问题,但通过科技的力量,我们有希望将其带来的困扰降到最低,同时也为城市的可持续发展提供了新的思路和方法。

        本文即在此背景下产生,文章重点讲解如何将城市计划性停水信息和GIS空间知识进行融合。首先讲解城市计划性停水主要包含哪些知识,然后如何介绍管理一些基础知识,包括居民区的范围等。最后将以一个实例的方式介绍如何基于Leaflet来进行WebGIS的可视化展示。如果您也对本文涉及的领域感兴趣,不妨来这里看看。

一、相关信息介绍

        水是日常生活的基础资源,它是我们日常的物质生活中的重要组成部门。生活做饭需要水,洗衣服要用水,做饭需要用水,洗脸等需要水。试想一下,如果我们生活的小区停水后,是不是发生了许多的不便,我们需要去取水点统一打水。针对有时候的爆管或者是常规的维护,可能也会对用水安全产生一定的影响。虽然一些市政平台上会发出一些广告措施,但很多人还是由于信息的不对称,没有及时的掌握相关信息。这里我们首先来看一下一般的停水信息包含什么。

1、停水信息的来源

        为了避免停水给老百姓带来的生活困扰,可以让可能停水的区域进行提前存储水,将对生活的影响降到最低。通常生活所在地的水司,比如自来水公司等供水企业都会提前发布信息。这类信息通常称之为“计划性停水”。比如线路改造、官网冲洗等等。这里可以来看看,一般本地的供水企业如何来进行消息的发布。这里以长沙市为例,我们可以收到有计划性停水的信息来源可有以下几个地方。

        红网:是的,大家没有没有,大家可以在红网来看到转发的当地水司的停水信息。在某度或者某条的新闻媒体中查询到。

        这其中就包括了停水的相关重要信息,比如相关的小区、停水的起止时间(一般精确到小时)、重点影响的范围等等。

         水司官网:通常在供水的水司官网都可以看到公布的信息,因此大家可以在其网站上找到权威的信息。如下图所示:

        这里的计划性停水以“星城”长沙为例,在水司的官方网站上有明确的停水信息,这里摘录如下: 

为配合市政管网配套设施建设,我司将于2024年12月15日22:00至12月16日8:00进行山月路给水工程停水接驳工作,届时福元路(东二环-万家丽路)北侧将停水(重点影响单位及用户:富兴旺角、美丽新世界、学府华庭、保利和光尘樾、悦湖山等);邻近地区水压将减小。在恢复供水后,部分高远程区域以及二次供水泵房的楼栋,有可能延迟来水时间,请用户做好储水准备。提前通水,将不另行通知。供水客服热线96533为您提供全天候贴心服务!

2、停水包含的相关信息

        在介绍了相关的停水信息源之后,下面我们来分析一下在上面的计划性停水中都包含着于我们老百姓息息相关的信息。这里结合思维导图来进行详细的说明。

        可以在前面分享的停水信息中很直观的看到,供水企业发布的停水信息中包含的主要信息如上图的思维导图所示。包含的主要信息有: 停水原因、停水时间、停水大致范围、重点小区、公共附属信息。停水时间是一个很重要的时间维度的信息,而重点小区则是空间维度的信息。其它的信息都属于附加的信息。而作为一名空间技术的应用者,我们不难发现,这个空间维度信息其实可以用AOI或者POI的方式进行解决。因此如何基于AOI或者POI来解决上述的信息提示的困难问题,如何帮助我们的企业用户快速的进行信息的发布,而用水的使用者则可以快速的知道停水信息,从而更加合理的规划用水时间和是否需要储存水的评估。

二、功能简介

        为了实现上述的供水企业停水范围的可视化,首先我们汇总管理两个重要的数据,第一个我们的停水信息,主要包括停水原因及停水的计划起止时间。第二个数据是涉及的小区信息,对于小区信息可以是AOI数据,也可以是POI数据,根据需求是否需要满足精准查询,如果是AOI可以最好。当然,这些AOI数据需要进行动态管理,比如城市更新后,新建了小区,我们需要及时在系统中进行登记小区信息。这里对涉及的相关数据进行统一管理。

1、基础小区的整理

        对于供水企业,如果能拿到用水城市的的小区的范围数据就比较好,如果实在获取不到,也可以从互联网上下载POI数据,当前在高德或者百度地图也是有对应的AOI数据获取,为了简单,大家可以从官方获取相关的数据。

        大家可以将这些数据进行保存到空间数据库中,当然这是一件比较费时的工作,在刚开始的时候,由于缺乏基础数据从而导致数据效果不是很好。当我们把这些小区的AOI数据采集到空间数据库后,就形成整个城市的小区数据基础。而且这个库需要在后续定期更新也是一项重点的工作,只有跟城市的发展同步,才能在运用数据时得心应手,不会出现数据不准确的情况。在实际的工作过程当中,主要有以下三种情况需要考虑。第一种就是随着城市的发展,新建了一些小区,这种处理比较简单,只需要将数据及时采集入库即可。第二种是城市发展过程中,小区的名字变更或者小区范围的变更,这种数据也需要关注,此时需要把小区的名称或者空间范围进行及时更新才行。空间数据的更新可以重新导入数据或者将小区删掉后重新加入。第三种就是由于拆迁等情况,原来的小区在后续的供水中会进行删除,针对这种情况,为了保留原来的信息完整,我们可以设置一个使用的标记状态,这样就可以既能关联到原来的历史信息,又能不影响未来的业务开展。

2、停水计划的管理

        之前的内容中讲过,针对水司而言,我们可以在做停水计划的时候,就把相关联的小区信息进行关联,而如果是第三方信息,我们可以基于自然语言来进行信息的提取,然后将匹配的小区与空间库中的空间数据进行匹配,进而可以满足我们的影响小区的查询。通常停水都是一定时间段的,也不能是长时间的,因此我们的停水时间一定是较短的时间。有了这两方面的数据管理之后,我们就可以进行WebGIS应用的设计与实现了。

三、WebGIS空间可视化

        这里假设已经有了停水计划的信息梳理,也包含了停水影响范围内的小区信息。这里以Leaflet为例,重点讲述如何把停水计划和小区AOI信息在地图上展示出来。展望未来,我们可以基于用户的位置来自动判断当前是否有停水计划,同时也可以查询距离当前位置最近的停水小区。持续的停水时间等等,通过公众号、小程序、手机短信等电子通信手段来进行通知,通过一些可控的信息来减少信息差,提高用水用户的满意度。本节重点介绍如何在Leaflet中展示这些信息。

1、使用到的组件

        在正式介绍系统功能之前,我们来介绍一下这个功能需要用到的前端组件。

序号组件名称作用
1leaflet地图渲染组件
2leaflet-sidebar侧边栏展示组件
3jquery.jsDOM操作组件

2、停水计划的展示

        首先需要对停水计划的主要信息进行信息,这里我们采用居右展示的侧边栏来展示,实际项目中需要替换成实际的内容,这里以静态内容为示例。

<div class="center-flex">城市停水及影响范围可视化
</div>
<div id="sidebar" class="sidebar collapsed"><!-- Nav tabs --><div class="sidebar-tabs"><ul role="tablist"><li><a href="#home" role="tab" id="xz_info"><i class="fa fa-bars"></i></a></li></ul></div><!-- Tab panes --><div class="sidebar-content"><div class="sidebar-pane" id="home"><h1 class="sidebar-header">停水计划列表<span class="sidebar-close"><i class="fa fa-caret-right"></i></span></h1><p style="font-size:16px;color:#ff5200;">一、计划停水信息 &nbsp; </p><p style="font-size:16px;color:#ff5200;">停水原因:【幸福区】大型施工停水 &nbsp; </p><p style="font-size:16px;color:#ff5200;">开始时间:2024年12月15日22:00 &nbsp;</button></p><p style="font-size:16px;color:#ff5200;">结束时间:2024年12月16日08:00 &nbsp; </p><hr/><p style="font-size:16px;color:#002bff;">二、重点影响单位及用户&nbsp;: </p><p id = "lineDetails" style="padding-left: 5px;"></p></div></div>
</div>

3、影响小区的展示

        受影响小区我们采用边界展示以及DivIcon的方式进行展示,边界擦用Polygon的形式展示。关键的代码如下所示:

function loadRange(){showLayerGroup.clearLayers();var line1 = new Array();$("#lineDetails").html("");var detailsInfo = "";for(var i = 0;i < effectData.length;i++){var tempData = convertStr2DataArrayTrans(effectData[i].geo_shape);var name = effectData[i].name;L.marker([tempData[0][0], tempData[0][1]], {icon: L.divIcon({iconSize: null,className: '',popupAnchor:[5,5],shadowAnchor:[5,5],html: "<div class='marsBlackPanel'  animation-spaceInDown style='background:"+effectData[i].color+"'>"+"<div class='marsBlackPanel-text' style=''>【"+ name + "】/"+effectData[i].title+"</div>"+"<div class='marsBlackPanel-text' style=''>电话:"+effectData[i].tel+"</div>"+"</div>"})}).addTo(showLayerGroup);detailsInfo += "<span style='font-size:16px;color:#002bff;'>"+ (i + 1) + "、【"+name + "】/"+ effectData[i].title + "<br/></span>";$("#lineDetails").html(detailsInfo);L.polygon([tempData],style).addTo(showLayerGroup).bindPopup(name);}mymap.addLayer(showLayerGroup);mymap.setView(showLayerGroup.getBounds().getCenter(),16);// 设置地图的中心位置
}

4、实际效果

        下面来看一下实际的展示效果:

        在上图中,首先在侧边栏中展示了停水的主要信息,以及重点影响单位及用户信息。这里的信息还只是文字的。 主体的地图界面中,我们展示了具体的4个受影响的小区信息。

        将受影响小区边界信息在地图上展示之后,可以发现其外围基本是按照道路来展示合围信息的。地图的底图是采用天地图来进行展示的,数据与地图贴合良好。基本满足我们的项目需要。

四、总结 

        以上就是本文的主要内容,文章重点讲解如何将城市计划性停水信息和GIS空间知识进行融合。首先讲解城市计划性停水主要包含哪些知识,然后如何介绍管理一些基础知识,包括居民区的范围等。最后将以一个实例的方式介绍如何基于Leaflet来进行WebGIS的可视化展示。行文仓促,难免有许多不足之处,如有不足在此恳请各位专家和朋友在评论区留言指正,不胜感激。

相关文章:

WebGIS城市停水及影响范围可视化实践

目录 前言 一、相关信息介绍 1、停水信息的来源 2、停水包含的相关信息 二、功能简介 1、基础小区的整理 2、停水计划的管理 三、WebGIS空间可视化 1、使用到的组件 2、停水计划的展示 3、影响小区的展示 4、实际效果 四、总结 前言 城市停水&#xff0c;一个看似…...

无管理员权限 LCU auth-token、port 获取(全网首发 go)

一&#xff1a; 提要&#xff1a; 参考项目&#xff1a; https://github.com/Zzaphkiel/Seraphine 想做一个 lol 查战绩的软件&#xff0c;并且满足自己的需求&#xff08;把混子和大爹都表示出来&#xff09;&#xff0c;做的第一步就是获取 lcu token &#xff0c;网上清一色…...

【数字花园】数字花园(个人网站、博客)搭建经历教程

目录 写在最最前面数字花园的定义第一章&#xff1a;netlify免费搭建数字花园相关教程使用的平台步骤信息管理 第二章&#xff1a;本地部署数字花园数字花园网站本地手动部署方案1. 获取网站源码2.2 安装 Node.js 3. 项目部署3.1 安装项目依赖3.2 构建项目3.3 启动http服务器 4…...

python模拟练习第一期

问题一 如果一个数 p 是个质数&#xff0c;同时又是整数 a的约数&#xff0c;则 p 称为 a的一个质因数。 请问 2024 有多少个质因数&#xff1f; 步骤 1: 分解 2024 首先&#xff0c;2024 是偶数&#xff0c;说明可以被 2 整除。我们从 2 开始进行除法分解&#xff1a; 202…...

Xcode

info.plist Appearance Light 关闭黑暗模式 Bundle display name 设置app名称&#xff0c;默认为工程名 Location When In Use Usage Description 定位权限一共有3个key 1.Privacy - Location When In Use Usage Description 2.Privacy - Location Always and When In U…...

RabbitMQ安装延迟消息插件(mq报错)

之前启动一个springboot的单体项目&#xff0c;一直mq的错误&#xff0c;即便我更新了最新版本的mq&#xff0c;还是报错。 后来才发现&#xff0c;项目使用了延时队列&#xff0c;是需要单独下载延时插件的。 1如果判断mq有没有延时队列插件【没有x-delayed-message】 2下载…...

es 3期 第15节-词项查询与跨度查询实战运用

#### 1.Elasticsearch是数据库&#xff0c;不是普通的Java应用程序&#xff0c;传统数据库需要的硬件资源同样需要&#xff0c;提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库&#xff0c;不是关系型数据库&#xff0c;不具备严格的ACID事务特性&#xff…...

iOS Delegate模式

文章目录 一、 Delegate 模式的概念二、Delegate 的实现步骤步骤 1: 定义一个协议&#xff08;Protocol&#xff09;步骤 2: 在主类中添加一个 delegate 属性步骤 3: 实现协议的类遵守协议并实现方法步骤 4: 设置 delegate 三、Delegate 模式的特点四、Delegate 模式的常见场景…...

java-使用druid sqlparser将SQL DDL脚本转化为自定义的java对象

java-使用druid sqlparser将SQL DDL脚本转化为自定义的java对象 一、引言二、环境三、待解析的DDL四、解析后的对象结构五、完整的UT类六、控制台输出总结 一、引言 在日常开发中&#xff0c;有些需要对SQL进行解析的场景&#xff0c;比如读取表结构信息&#xff0c;生成文档、…...

React状态管理常见面试题目(一)

1. Redux 如何实现多个组件之间的通信?多个组件使用相同状态时如何进行管理? Redux 实现组件通信 Redux 是一个集中式的状态管理工具&#xff0c;通过共享一个全局 store 来实现多个组件之间的通信。 通信机制&#xff1a; 所有状态保存在 Redux 的全局 store 中。使用 ma…...

jenkins 出现 Jenkins: 403 No valid crumb was included in the request

文章目录 前言解决方式:1.跨站请求为找保护勾选"代理兼容"2.全局变量或者节点上添加环境变量3.&#xff08;可选&#xff09;下载插件 the strict Crumb Issuer plugin4.重启 前言 jenkins运行时间长了&#xff0c;经常出现点了好几次才能构建&#xff0c;然后报了Je…...

【前端面试】list转树、拍平, 指标,

这个题目涉及的是将一组具有父子关系的扁平数据转换为树形结构&#xff0c;通常称为“树形结构的构建”问题。类似的题目包括&#xff1a; 1. 组织架构转换 给定一个公司的员工列表&#xff0c;每个员工有 id 和 managerId&#xff0c;其中 managerId 表示该员工的上级。任务…...

游戏引擎学习第43天

仓库 https://gitee.com/mrxiao_com/2d_game 介绍运动方程 今天我们将更进一步&#xff0c;探索运动方程&#xff0c;了解真实世界中的物理&#xff0c;并调整它们&#xff0c;以创建一种让玩家感觉愉悦的控制体验。这并不是在做一个完美的物理模拟&#xff0c;而是找到最有趣…...

NVM:安装配置使用(详细教程)

文章目录 一、简介二、安装 nvm三、配置 nvm 镜像四、配置环境变量五、使用教程5.1 常用命令5.2 具体案例 六、结语 一、简介 在实际的开发和学习中可能会遇到不同项目的 node 版本不同&#xff0c;而出现的兼容性问题。 而 nvm 就可以很好的解决这个问题&#xff0c;它可以在…...

matlab测试ADC动态性能的原理

目录 摘要&#xff1a; 简介&#xff1a; 动态规范和定义 动态规格&#xff1a; 双面到单边的功率谱转换 摘要&#xff1a; 模数转换器&#xff08;adc&#xff09;代表了接收器、测试设备和其他电子设备中的模拟世界和数字世界之间的联系。正如本文系列的第1部分中所概述…...

PostgreSQL JSON/JSONB 查询与操作指南

PostgreSQL 提供了强大的 JSON 和 JSONB 数据类型及相关操作&#xff0c;适用于存储和查询半结构化数据。本文将详细介绍其常用操作。 1. 基础操作 1.1 JSON 属性访问 ->: 返回 JSON 对象中的值&#xff0c;结果为 JSON 格式。 SELECT {"a": {"b": 1…...

【Isaac Lab】Ubuntu22.04安装英伟达驱动

目录 1.1 禁用nouveau驱动 1.2 安装必要的依赖项 1.3 下载安装 1.4 查看是否安装成功 1.5 安装CUDA 1.5.1 下载 1.5.2 按照提示进行下载安装 1.5.3 添加环境变量 1.5.4 测试CUDA是否安装成功 1.1 禁用nouveau驱动 输入以下命令打开blacklist.conf文件 sudo vim /etc…...

JS,递归,处理树形数据组件,模糊查询树形结构数据字段

JS递归如何模糊查询树形结构数据,根据数据中的某一个字段值&#xff0c;模糊匹配 直接拿去使用就行 function filterTreeLabel(arr, label) {let result []arr.forEach((item) > {// if (String(item.POBJECT_NAME).toLowerCase().indexOf(label)!-1) {if (String(item.P…...

神州数码DCME-320 online_list.php 任意文件读取漏洞复现

0x01 产品描述: ‌神州数码DCME-320是一款高性能多业务路由器,专为多用户、多流量和多业务种类需求设计‌。它采用了...

nginx的内置变量以及nginx的代理

nginx的内置变量 客户端 命令含义$uri可以获取客户端请求的地址&#xff0c;包含主机和查询的参数$request_uri:获取客户端的请求地址&#xff0c;包含主机和查询参数。$host:请求的主机名&#xff0c;客户端—发送请求的url地址$http_user_agent获取客户端请求的浏览器和操作…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...