空間信息可視化——WebGIS前端實例(一)

技術棧:原生HTML

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

4 全國貧困縣可視化系統

4.1 系統設計思想

黨的十九大報告明確指出,要“確保到2020年我國現行標準下農村貧困人口實現脫貧,貧困縣全部摘帽,解決區域性整體貧困,做到脫真貧、真脫貧”[1]。

從2012年到2020年,歷時8年,現行標準下9899萬農村貧困人口全部脫貧,國務院扶貧開發領導小組辦公室認定的832個貧困縣全部實現脫貧,我國歷史性告別絕對貧困。這無疑是彪炳史冊的歷史性功績,這場偉大的奇跡廣受聯合國秘書長在內的國內外一致稱贊,為世界提供了中國模式和中國方法[2]。

八年間,地理信息領域學者矢志不渝助力脫貧攻堅。王海起等通過構建扶貧地理知識圖譜為復合貧困整體提供解決方案[3],劉一臻等通過設計三維地理信息服務于脫貧攻堅指揮系統的建設與應用[4],關顯明等通過采用眾包的模式實現精準扶貧地理信息采集系統[5]。GIS技術作為強大的工具,在這場反貧困斗爭中發揮了不可替代的作用。

基于這樣的時代背景,全國貧困縣可視化系統的設計思想應運而生,旨在通過先進的地理信息可視化技術,直觀展現我國脫貧攻堅戰的輝煌成就與歷程,同時為后續的鄉村振興及可持續發展提供決策支持與經驗借鑒。

4.2 貧困縣數據處理

4.2.1 數據獲取

國家級貧困縣,又稱國家扶貧工作重點縣或國定貧困縣,是國家為幫助貧困地區設立的一種標準。全國共有832個國家級貧困縣(包括縣級行政單位,縣、區、旗、縣級市、自治縣、自治旗)。國家為扶持貧困地區,設立國家級貧困縣標準,資格經國務院扶貧開發領導小組辦公室認定,審批工作共進行過三次。少數民族自治地區有不同評定標準,稱民族自治地方國家扶貧工作重點縣。

針對具體的貧困縣數據,官方網站并沒有具體的名單表格發布,而在百度百科中有純文本格式的各個貧困縣的脫貧時間,因此這里無法采用爬蟲方法爬取,只能采取手工方法查找整理。(百科網址:國家級貧困縣_百度百科)

同時,系統需要使用到行政邊界數據,這里應用的行政邊界數據是選取自阿里云的地圖選擇器,按照需求下載對應區域的GeoJSON數據即可。(阿里云選擇器網址:DataV.GeoAtlas地理小工具系列)

4.2.2 數據處理

獲取的數據主要分為兩類,即矢量邊界數據和貧困縣數據,矢量邊界數據是直接存儲為GeoJSON數據,主要包含了“Feature”、“geometry”等字段,其中數據嚴謹且時效,符號標準底圖要求,這里以南海區域的十段線為例,如圖4.2-1所示。

圖4.2-1 南海區域十段線

而貧困縣數據這里可以手動存儲為js格式的數據,即利用var ()方法存儲為數組,方便后期調用。此外,系統應用了WMTS技術,即應用矢量瓦片底圖作為底圖,這方面的數據可以通過Leaflet的addTo()方法直接進行調用。

本系統主要應用到的數據如表4.2-1所示。

表4.2-1 應用數據表

數據名稱

數據類型

數據來源

矢量邊界數據

GeoJSON

阿里云地圖選擇器

貧困縣數據

JavaScript

百度百科

柵格底圖數據

Tiff

ESDIS、Google Map、天地圖

4.3 系統設計

4.3.1 總體設計

本系統的項目文件夾為全國貧困縣可視化系統,項目包含3個文件夾和index文件,分別是CSS文件夾,負責存放有關的CSS樣式文件;Data文件夾,負責存放項目中所使用到的數據文件;JS文件夾,負責存放項目中所使用到JavaScript文件。同時在主文件夾中還包含3個文件,index.html是項目的入口HTML文件,程序從此處開始進入并運行;index.css是項目樣式表文件,負責項目有關的樣式編寫;index.js是項目邏輯文件,負責項目有關的邏輯編寫。此外,還提供了筆者獲取的原始數據“脫貧縣數據.docx”和處理后的數據“貧困縣名單.pdf”。項目結構圖如圖4.3-1所示。

圖4.3-1 項目結構

項目大致流程主要分為數據獲取、輸出處理、程序編寫、系統測試四大主要部分。如圖4.3-2所示。

圖4.3-1 項目流程圖

4.3.2 界面設計

系統界面主要由三個部分組成:地圖部分、圖表部分、交互部分。地圖部分主要用于顯示基礎地圖,表達出地域的位置信息及底圖附帶的其他包含信息,圖表部分主要負責表達出不同級別區域下的貧困縣統計數據,交互部分主要負責進行頁面的交互,實現地圖和圖表的動態切換,此外還可以監聽鼠標事件實現動態交互功能。

4.3.3 邏輯設計

邏輯設計主要涉及四大方面的內容:數據讀取、地圖制作、表格繪制、交互響應。數據讀取應當是頁面加載后最先完成的部分,主要負責利用數據讀取庫從文件中讀取相應的數據存儲為JavaScrpit對象。地圖制作主要負責利用LeafLet及其相關插件繪制并渲染地圖,實現地圖的相關功能。表格繪制主要負責利用D3庫繪制當前狀態下的統計圖表。交互相應主要負責利用Jqurey庫、D3庫等實現頁面的交互功能。

4.4 程序匯編

4.4.1 開發環境

本系統編寫采用原生 JavaScript+HML+CSS 進行編寫,基于 LeafLet 框架以及papaparse.js庫、turf.min.js庫和jquery-3.7.1.js庫實現 Web 端地圖程序,同時結合 d3.js庫進行表格的繪制。系統開發使用的IED為Visual Studio Code 2022,使用了Live Preview和HTML CSS Support等插件進行開發。

4.4.2 主界面匯編

HTML文件主要由Head和Body兩個部分組成。Head部分主要負責引入所需要的CSS和JS文件。Body部分主要為HTM的框架結構。Body部分包含一個id為containr的div容器,其下又分為id分別為side-bar和map-wrapper的容器,分別承載工具和地圖。HTML的架構如圖4.4-1所示。

圖4.4-1 HTML架構圖

4.4.3 邏輯函數匯編

整個程序的邏輯函數全部匯編于“index.js”中,主要編寫了基礎圖元加載和交互操作處理的事務邏輯:當選中指定的區域和年份后,會首先獲取并過濾得到相應區域的貧困縣數量和邊界數據,然后將該數據通過turf.js庫轉換為Geojson數據準備進行加載。預加載前,向根據選擇區域加載其邊界數據。然后判斷加載數據的情況,顯示不同的數據類型。與此同時,根據選擇底圖類型,添加相對應的瓦片圖底。同時,根據選擇的區域和選擇的類型獲取并計算該狀態下的貧困縣統計數據,使用d3.js將繪制到表格中。系統整體的邏輯流程如圖4.4-2所示。

圖4.4-2 系統邏輯流程圖

4.5 系統展示

輸入發布的網址或打開index.html進入系統后,界面為填充全屏的LeafLet圖框,并且默認加載了由ESDIS提供的NASA2012夜間燈光影響瓦片地圖,而其上方則會分布三個交互選項欄,分別為“區域”、“年份”和“底圖”的選項。如圖4.5-1所示。

圖4.5-1 系統默認打開界面

用戶可以自行選擇感興趣的區域和發電類型,使用交互欄中的下拉菜單選擇特定的區域和年份查看指定區域指定年份下的貧困縣分布情況。這里以全國2015年的貧困縣分布情況為例,點擊第一個下拉框,選擇“全國”;點擊第二個下拉框,選擇“2015”,點擊第三個下拉框,選擇“Satellite Image night”。如圖4.5-2所示。

圖4.5-2 全國貧困縣可視化情況

當用戶將鼠標置于不同的區域位置,會在右上角的表格中顯示對應的區域的數據,同時不同省份包含不同的貧困縣數量,這里主要采用的是自然間斷法進行分級處理,針對不同的級別的省份賦予不同的質地,同時在左下角放置圖例圖框供用戶參考,此外還在右側放置了d3.js庫繪制的匯總統計樣表,并按順序級數排列,主要的表格參考說明如圖4.5-3所示。

圖4.5-3 繪制表格方法

這里可以查看具體省份的貧困縣分布情況,點擊第一個下拉框,選擇“安徽省”;點擊第二個下拉框,選擇“2015”,點擊第三個下拉框,選擇“TianDiTu Normal Map”。如圖4.5-4所示。

圖4.5-4 安徽省貧困縣可視化情況

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/78932.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/78932.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/78932.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

單雙線程的理解 和 lua基礎語法

1.什么是單進程 ,什么是多進程 當一個程序開始運行時,它就是一個進程,進程包括運行中的程序和程序所使用到的內存和系統資源。而一個進程又是由單個或多個線程所組成的。 1.1 像apache nginx 這類 服務器中間件就是多進程的軟件 &#xff0…

【Linux】VIM 編輯器,編輯加速引擎

目錄 vim中的五種常見模式介紹VIM的基本操作安裝VIMVIM中的模式切換 VIM指令集命令模式指令集底行模式指令集視圖模式指令集替換和插入模式 end vim中的五種常見模式介紹 正常/普通/命令模式【Normal mode】 控制屏幕光標的移動,字符、字或行的刪除,移動…

【Linux網絡】Socket 編程TCP

🌈個人主頁:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343 🔥 系列專欄:https://blog.csdn.net/qinjh_/category_12891150.html 目錄 TCP socket API 詳解 socket(): bind(): listen(): accept(): connect V0…

記一次 .NET某固高運動卡測試 卡慢分析

一:背景 1. 講故事 年前有位朋友找到我,說他們的程序會偶發性卡慢 10s 鐘,在某些組合下會正常,某些組合下就會出現問題,解釋不了其中的原因,讓我幫忙看下怎么回事?截圖如下: priva…

硬件知識積累 單片機+ 光耦 + 繼電器需要注意的地方

1. 電路圖 與其數值描述 1.1 單片機引腳信號為 OPtoCoupler_control_4 PC817SB 為 光耦 繼電器 SRD-05VDC-SL-A 的線圈電壓為 67Ω。 2. 需注意的地方 1. 單片機的推挽輸出的電流最大為 25mA 2. 注意光耦的 CTR 參數 3. 注意繼電器線圈的 內阻 4. 繼電器的開啟電壓。 因為光耦…

IP組播技術與internet

1.MAC地址分為三類:廣播地址;組播地址;單播地址 2.由一個源向一組主機發送信息的傳輸方式稱為組播。 3.組播MAC地址,第一個字節的最后一位為1; 單播MAC地址,第一個字節的最后一位為0; 4.不能…

vue3+vite+ts使用daisyui/tailwindcss

vite創建vue3腳手架 npm init vitelatest myVue3 – --template vue cd .\myVue3\ npm i npm run dev 安裝tailwindcss/daisyui 依賴安裝 npm install -D tailwindcss postcss autoprefixer daisyui npx tailwindcss init -p 這條命令將生成postcss.config.js(因為加了…

大數據(7)Kafka核心原理揭秘:從入門到企業級實戰應用

目錄 一、大數據時代的技術革命1.1 消息中間件演進史1.2 Kafka核心設計哲學 二、架構深度解構2.1 核心組件拓撲2.1.1 副本同步機制(ISR) 2.2 生產者黑科技2.3 消費者演進路線 三、企業級應用實戰3.1 金融行業實時風控3.2 物聯網數據管道 四、生產環境優化…

spring boot大文件與多文件下載

一、簡單大文件下載&#xff1a; /*** 下載大文件* param path 路徑* param fileName 文件名* return* throws IOException*/ public static ResponseEntity<InputStreamResource> downloadFile(String path, String fileName) throws IOException {Path filePath Path…

第二節:React 基礎篇-受控組件 vs 非受控組件

一、場景題&#xff1a;設計一個實時搜索輸入框&#xff0c;說明選擇依據 受控組件 vs 非受控組件 核心區別 特征受控組件非受控組件數據管理由React狀態&#xff08;state&#xff09;控制通過DOM元素&#xff08;ref&#xff09;直接訪問更新時機每次輸入觸發onChange提交…

局部路由守衛

局部路由守衛為我們提供了更細粒度的路由控制&#xff0c;允許我們在特定的路由或組件級別添加鑒權和邏輯處理。局部路由守衛分為 path 守衛和 component 守衛&#xff0c;它們分別適用于不同的場景。 path 守衛&#xff08;路由守衛&#xff09; path 守衛用于在進入特定路由…

Android 16應用適配指南

Android 16版本特性介紹 https://developer.android.com/about/versions/16?hlzh-cn Android 16 所有功能和 API 概覽 https://developer.android.com/about/versions/16/features?hlzh-cn#language-switching Android 16 發布時間 Android 16 適配指南 Google開發平臺&…

android display 筆記(十二)CPU,GPU,DPU的區別

CPU&#xff08;Central Processing Unit&#xff09;通用計算&#xff1a;處理復雜邏輯、分支預測、多任務調度。 低延遲&#xff1a;優先快速響應單線程任務。 GPU&#xff08;Graphics Processing Unit&#xff09; 高吞吐量并行計算&#xff1a;適合大規模數據并行處理。…

音頻轉文本:如何識別音頻成文字

Python腳本:MP4轉MP3并語音識別為中文 以下是一個完整的Python腳本,可以將MP4視頻轉換為MP3音頻,然后使用語音識別模型將音頻轉換為中文文本。 準備工作 首先需要安裝必要的庫: pip install moviepy pydub SpeechRecognition openai-whisper完整腳本 import os from m…

理解 MCP 協議的數據傳遞:HTTP 之上的一層“殼子

以下是以 CSDN 博客的風格記錄你對 MCP 協議數據傳遞的理解和發現&#xff0c;內容涵蓋了 MCP 協議基于 HTTP 的本質、JSON-RPC 的“殼子”作用&#xff0c;以及為什么熟悉 HTTP 協議就足以理解 MCP 的數據傳遞。文章面向技術社區&#xff0c;結構清晰&#xff0c;適合分享。 理…

基于ssm網絡游戲推薦系統(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 當今社會進入了科技進步、經濟社會快速發展的新時代。國際信息和學術交流也不斷加強&#xff0c;計算機技術對經濟社會發展和人民生活改善的影響也日益突出&#xff0c;人類的生存和思考方式也產生了變化。傳統網絡游戲管理采取了人工的管理方法&#xff0c;但這種管理方…

vue入門:指令

文章目錄 vue的內置指令說明&#xff1a; 自定義指令 vue的內置指令 Vue 指令的本質是&#xff1a; 聲明式的 DOM 操作接口&#xff08;隱藏底層 JavaScript 代碼&#xff09;。響應式數據的綁定媒介&#xff08;連接數據和視圖&#xff09;。模板編譯的標記&#xff08;最終…

oracle 索引失效

在 Oracle 11g 中&#xff0c;索引失效的常見原因包括函數修改列、隱式類型轉換、統計信息過時等&#xff0c;解決方法需結合版本特性&#xff08;如虛擬列、索引跳躍掃描&#xff09;。通過執行計劃分析、統計信息維護和合理使用提示&#xff08;Hints&#xff09;&#xff0c…

k8s藍綠發布

k8s藍綠發布 什么是藍綠部署K8S中如何實現藍綠部署k8s藍綠部署流程圖 什么是藍綠部署 參考: https://youtu.be/CLq_hA0lAd0 https://help.coding.net/docs/cd/best-practice/blue-green.html 藍綠部署最早是由馬丁福勒 2010年在他的博客中提出. 藍綠部署是一種軟件部署策略,用…

stm32面試

數據結構相關問題 stm32面試 數據結構相關問題 目錄基礎數據結構樹與圖排序與查找算法 Linux相關問題Linux系統基礎Linux命令與腳本Linux網絡與服務 操作系統相關問題操作系統基礎概念操作系統調度算法操作系統同步與通信 STM32相關問題STM32硬件基礎STM32編程與開發STM32應用與…