?

面向智慧消防的數據采集及分析系統的設計與實現

2024-01-24 08:52顧夢嬌那孜古力·斯拉木鐘青陽汪世宇趙鴻博馬文濤
電腦知識與技術 2023年34期
關鍵詞:智慧消防數據可視化爬蟲

顧夢嬌 那孜古力·斯拉木 鐘青陽 汪世宇 趙鴻博 馬文濤

摘要:“智慧消防”建設中一項重要任務是采集及分析城市消防數據,全面展示火災情況和數據特征。面向“智慧消防”的數據采集及分析系統采用Python的網絡爬蟲Request庫和Django網絡框架,設計了一個面向城市消防領域的數據采集及數據分析的系統。該系統不僅能快速地獲取城市消防數據,還能全面分析并可視化展示火災情況和特征,從而提升火災數據采集的效率并拓展城市火災數據分析的方法。該系統將提升火災數據采集效率,拓展城市火災數據分析的理論和方法,為“智慧消防”的發展做出貢獻。

關鍵詞:智慧消防;爬蟲;數據可視化;數據分析;Web應用架構

中圖分類號:TP311.5? ? ? 文獻標識碼:A

文章編號:1009-3044(2023)34-0066-05

開放科學(資源服務)標識碼(OSID)

0 引言

“智慧消防”對于提升消防安全水平和保障公眾生命財產安全至關重要[1],近幾年逐漸成為近年消防界研究的熱點[2]。盡管已有的智慧消防系統取得了一些成果,但在數據采集和分析方面仍存在不足之處[3]。傳統的數據采集方法效率低下且容易出錯[4],而現有系統在數據分析和展示方面缺乏全面性和準確性[5]。因此,開展了面向城市消防領域的數據采集及分析系統。首先利用Python的Request網絡爬蟲技術獲取城市消防數據[6],之后通過Django框架實現了系統的爬蟲功能、數據分析、數據可視化等功能[7]。本文旨在提升火災數據采集效率,拓展城市火災數據分析的理論和方法,為“智慧消防”的發展做出貢獻。

1 相關技術

1.1 網絡爬蟲Request庫概述

網絡爬蟲是一種自動化程序,用于從網頁中獲取數據信息。通過訪問網頁的文本協議和地址來實現數據的爬取,無須人為干預或操作即可完成網站中數據信息的自動化爬取[8]。網絡爬蟲技術主要用于對網頁中數據的爬取和分析,可以應用于多種網絡信息的檢索和存儲[9]。常用的網絡爬蟲操作流程是“獲取數據-解析數據-存儲數據”,模擬了用戶使用瀏覽器獲取網頁信息的過程。在Python中,常用的HTTP請求庫是Requests[10]。相比于urllib庫,Requests更易于使用,并可以減少很多工作量[11]。實際上,Requests是在urllib基礎上進行了高度封裝,并支持一些其他特性,如使用Cookie保持會話、自動確定響應內容的編碼等[12]。

1.2 Django框架簡介

Django框架結構如圖1所示。Django 的設計采用的是 MTV(Model-View-Template) 架構,一種與經典 MVC 架構類似的架構[13]。M模型層與數據庫交互,進行增刪改查操作;models.py中的Firesi類定義了火災案例的關鍵信息,可根據需求增加和修改屬性。通過M模型層操作實現對數據庫中火災案例數據的靈活管理和處理。V視圖層接收請求并處理業務,view.py中的函數完成爬蟲任務和案例管理,通過Fight()函數作為爬蟲入口,Jiangxi_news()c和Guizhou_news()獲取特定省份的消防案例,Keys()確定案例屬性,News()和Root_Delete()負責保存和刪除案例,通過Echarts()展示案例的圖表化信息。在系統中,T表現層封裝和構造了要返回的HTML,創建了基本的頁面模板,包括layout.html、fight.html、news.html、show.html和echarts.html,通過動態生成相應的HTML頁面,給用戶提供展示和交互的界面,實現了頁面的組織和重用,提高了系統的可維護性和靈活性。

2 系統分析

2.1 系統功能需求分析

從用戶角度出發,設計實際功能,系統需要實現登錄系統、數據采集、數據預處理、數據預覽、可視化分析等功能。系統包括普通用戶和管理員用戶。用戶功能需求分析階段的用例圖如圖2所示。

系統管理員通過登錄系統模塊確認身份后,可以采集消防網頁的數據,并以超鏈接的形式顯示火災案例標題。當管理員該功能按鈕時,數據采集模塊會自動調用數據預處理模塊對采集到的原始數據進行清洗、轉換、集成和規范化等操作。處理后的數據會被存入數據庫,并通過數據預覽模塊進行文本呈現、刪除和導出操作,方便其他研究人員使用。同時,系統還設計了可視化分析模塊,為普通用戶提供前后端交互的可視化界面,方便他們瀏覽數據分析結果。整體而言,數據預處理是數據采集的子過程,因為它依賴于數據采集,而沒有數據采集,就無法進行數據預處理。因此,在用例圖中使用include關系能夠清晰地表達數據采集包含數據預處理的關系。

2.2 系統非功能性分析

由于性能需求總是與系統的具體功能相聯系,所以非功能性需求工程方法的結果質量通常取決于功能性需求規格的質量[14]。對于該系統,除了實現數據采集、預處理和可視化分析功能外,還要滿足以下幾個非功能性需求:

1) 安全需求:降低緊急情況發生的可能性,快速反應并處理異常,以防止系統故障和數據丟失。

2) 可靠性需求:確保準確無誤的數據采集,規范輸入數據格式,避免因格式不一致而引發錯誤。

3) 易用性需求:功能直觀易學,操作簡便,界面簡潔美觀。

4) 可擴展性需求:具備良好的可擴展性,能夠滿足未來的業務增長和功能變化需求。

5) 靈活性需求:適應不同網頁結構,進行適當修改以適應不同消防網頁的環境和結構。

綜合考慮上述需求,系統會采取多層次的安全措施,驗證和備份數據,保證數據準確性和安全性。用戶界面會簡潔明了,邏輯直觀,提供操作指南。系統采用模塊化架構,支持新的功能和數據源擴展。同時,系統也會靈活適應不同網頁環境和結構。

3 系統設計

3.1 系統架構設計

面向城市消防的數據采集及分析系統架構設計如圖3所示。該應用采用了多層架構來實現功能。在應用層,使用HTML、CSS和JavaScript等前端語言設計Web頁面,以展示相關功能。在業務層,采用了基于MTV模式的Django框架,包含Model層、View層和Template層,用于設計功能模塊、處理業務邏輯和展示火災案例數據給用戶。數據庫層主要處理系統內部的數據交互,使用MySQL作為數據庫存儲數據,其復雜性很低,但是仍然提供廣泛的數據庫功能和選項[15],并提供數據預覽功能,實現數據庫的可視化管理。通過這種架構,系統實現了前端展示、業務邏輯處理和數據庫交互的功能。

3.2 系統功能模塊設計

面向城市消防的數據采集及分析系統模塊層次圖如圖4所示??偣灿梢韵?個功能模塊組成:

1) 管理員登錄模塊

系統銀行分為管理員和普通訪客,以體現非功能需求的安全性。普通訪客可以直接訪問系統并進入可視化分析頁面。然而,如果他們想進入其他頁面,就需要進行登錄驗證。管理員需要輸入正確的用戶名、密碼和驗證碼才能進入系統,管理員具有最高權限,可以執行數據采集、預處理等操作,并對整個平臺進行操作。

2) 數據采集模塊

數據采集模塊是為了確保數據來源的安全可靠,并且讓采集操作變得方便和易用。管理員在數據采集頁面上確認需要爬取的省份,并輸入火災案例的時間范圍,然后提交這些數據到后臺進行采集。采集完成后,火災案例的標題以 URL 的形式展示在頁面上。為了提高系統的可擴展性、全面性和靈活性,該模塊針對不同的省份編寫了不同的爬蟲函數。

3) 數據預處理模塊

管理員可以通過點擊火災案例標題進入數據預處理頁面。在這個頁面上,管理員可以根據火災案例新聞對數據進行預處理,包括完善數據的屬性值。當管理員確認數據無誤后,可以將數據存儲到數據庫中。

4) 數據預覽模塊

數據預覽模塊是一個界面,它將數據庫中的數據以文本的形式展示在頁面上供管理員進行操作。在這個模塊中,管理員可以對數據進行導出和刪除操作。這個模塊設計簡單且易于使用,提供了強大的易用性。

5) 可視化分析模塊

可視化分析模塊的目標是通過豐富的圖表類型來有效傳達消防案例數據的信息。消防案例數據擁有時間、空間和案例屬性三個維度,因此在設計過程中要考慮這些數據特點。模塊會有針對性地選擇柱狀圖、折線圖、餅圖、旭日圖、樹圖和地圖等多種圖表類型,用于展示火災案例的現狀情況。這樣的設計可以減少用戶認知負擔,提高決策效率,并促進數據內容的有效傳達。

4 數據庫設計

4.1 概念模型設計

在面向城市消防的數據采集及分析系統的實體關系圖中,實體有管理員、火災案例屬性。系統E-R模型如圖5所示。

4.2 邏輯模型的設計

根據系統E-R模型圖,轉換出兩個數據表,分別是,用戶信息表AdminInfos:用于控制用戶訪問權限;火災案例屬性表FileINFO:用于存儲每次火災的火災信息。分別如表1和表2所示。

5 系統開發及測試

5.1 功能模塊的實現流程

數據分析流程的研究方法如圖6所示,總共分為4部分,各部分負責的功能如下:

1) 數據采集:通過 requests 庫獲取各種消防案例的數據。

2) 數據清洗:通過 pandas、numpy、re 庫對案例的數據進行清洗處理,得到火災案例屬性值。

3) 數據存儲:將處理好的屬性值存儲到 MySQL 數據庫。

4) 數據分析、展示:對數據進行可視化現狀分析,以全面詳細的方式展現近年來的火災發生情況和相關數據特征。

當管理員點擊導航欄中的數據獲取按鈕時,系統會跳轉到“/fight/”頁面,進入數據采集模塊。在該模塊中,管理員需要選擇省份,并確認時間范圍。一旦確認完畢,管理員可以點擊開始爬取按鈕。

當開始爬取按鈕被點擊后,表單數據會通過 form 提交至火災采集視圖函數 Fight()。在該函數中,可以通過 request.POST.get() 方法來獲取提交的信息,確認省份編號、省份火災平臺鏈接和時間范圍,通過調用預先編寫好的省份火災平臺爬蟲代碼來獲取所需的數據,并返回相應的信息。數據采集的結果如圖7所示。

管理員點擊數據展示按鈕后,進入“/show/”數據預覽模塊。調用視圖函數 Show() 查詢火災基本情況表數據,并使用 paginator 創建分頁對象。通過 pagination.page_queryset 方法獲取數據和總頁數。

使用render() 傳遞數據到show.html 頁面,并將每條數據逐行展示。每條數據后面有刪除按鈕,點擊后在Root_Delete() 函數中使用 models.FileINFO.objects.filter(id=nid).delete() 刪除對應數據。數據導出由 Save() 函數實現,定義表頭信息,通過 for 循環將數據寫入 Excel 文件。預覽界面可參考圖8。

5.2 系統功能測試

圖9展示了六個省份在四年內不同月份的城市火災數量情況的堆疊條形圖。它可以將六個省份的火災數量綜合起來,以便比較各省份之間的差異,快速了解火災情況,并進行直觀的比較。觀察圖表可知,在四年的8—11月份,江西省的火災數量呈現出上升的趨勢。這個趨勢提醒當地政府和民眾在這個時間段加強火災防范工作,減少火災的發生,以避免人員和財產的損失。

圖10折線圖展示了四年內不同月份火災數量的變化情況。數據顯示,每年的 8—11月份城市火災數量顯著增加,高于其他月份。這一趨勢為消防部門提供重要的提示和提醒,應在火災高發期加強巡查和預防措施,以降低火災發生率。

圖11條形圖可以直觀地比較各省份在不同月份的火災數量,并能夠快速獲取某個省份火災數量的變化趨勢。此外,它還具有方便的交互功能,比如點擊圖例可以展示具體省份的火災數量情況,或者通過交互式操作展示不同時間段的火災數量變化情況,幫助用戶更好地理解數據背后的趨勢和規律。結合圖10和圖11中的數據,可以觀察到在2021年,陜西省的城市火災數量最多,高于其他五個省份,特別是在8個月份的火災數量都超過了廣東省。

6 結束語

本項工作的主要內容是設計和實現面向城市消防領域的數據采集和分析系統。首先,介紹了Request庫,并詳細討論了采用了Django框架中MVT模式各模層的實現。接著對系統進行了設計,包括系統架構、功能模塊和數據庫的設計。最后,介紹了系統功能的實現以及開發測試。

本文設計并實現的面向“智慧消防”的數據分析及采集系統能夠快速采集城市消防災情的發生情況和關鍵特征數據,并通過高效算法的分析,從龐大冗雜的歷史城市消防災情數據庫中篩選出與目標數據最匹配的一系列災情數據,為“智慧消防”領域的決策系統提供寶貴的數據資源。這將為消防部門提供準確的災情數據支持,有助于提高決策制定和災情應對的效率。

目前的不足之一是數據采集模塊的豐富度和系統界面設計方面存在有待完善之處。為了解決這些問題,未來的工作計劃是通過編寫更多地區的爬蟲代碼來豐富數據采集模塊,增加數據來源的多樣性。同時,利用圖表功能生成更多的可視化分析,完善系統的數據展示和分析能力。此外,還計劃持續挖掘火災數據的內在聯系,深入研究數據背后的規律和趨勢。通過這些工作的持續改進,可以提升系統的功能和用戶體驗,進一步提高應用的價值和效益。

參考文獻:

[1] 劉曉薇,雷蕾.智慧消防發展現狀研究[J].消防界(電子版),2022,8(1):19-22.

[2] 謝濟濤.智慧消防在消防安全管理中的應用[J].消防界(電子版),2021,7(19):81-82.

[3] 李國生.智慧消防平臺建設探討[J].消防科學與技術,2018,37(5):687-690.

[4] 肖調偉.基于大數據+GIS技術的滅火救援“一張圖” 構想[J].中國公共安全(學術版),2018(2):65-67.

[5] 劉筱璐,王文青.美國智慧消防發展現狀概述[J].科技通報,2017,33(5):232-235.

[6] 曾浩.基于Python的Web開發框架研究[J].廣西輕工業,2011,27(8):124-125,176.

[7] 任妮,吳瓊,栗薈荃.數據可視化技術的分析與研究[J].電子技術與軟件工程,2022(16):180-183.

[8] 孫立偉,何國輝,吳禮發.網絡爬蟲技術的研究[J].電腦知識與技術,2010,6(15):4112-4115.

[9] 李玉香,王孟玉,涂宇晰.基于python的網絡爬蟲技術研究[J].信息技術與信息化,2019(12):143-145.

[10] 黎曦.基于網絡爬蟲的論壇數據分析系統的設計與實現[D].武漢:華中科技大學,2019.

[11] 林家業,王嘯聞.基于Python的靜態網頁數據分析與正則提取[J].電腦編程技巧與維護,2023(2):159-161.

[12] 楊健,陳偉.基于Python的三種網絡爬蟲技術研究[J].軟件工程,2023,26(2):19,24-27.

[13] 白相辰.基于Django框架的Web在線教育平臺的設計與實現[D].北京:北京交通大學,2019.

[14] 吳淑慧.基于問題框架方法的軟件非功能性需求分析的研究[D].合肥:安徽大學,2018.

[15] 鄭智方,李彬,劉世坤,等.探究MySQL的運用實例-對數據庫的宏觀把握[J].科技風,2020(6):129.

【通聯編輯:謝媛媛】

猜你喜歡
智慧消防數據可視化爬蟲
利用網絡爬蟲技術驗證房地產灰犀牛之說
基于Python的網絡爬蟲和反爬蟲技術研究
城市軌道交通之智慧消防
利用爬蟲技術的Geo-Gnutel la VANET流量采集
關于“智慧消防”建設的實踐與思考
大數據環境下基于python的網絡爬蟲技術
可視化:新媒體語境下的數據、敘事與設計研究
我國數據新聞的發展困境與策略研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合