摘要:氣象數據是諸多事業發展的核心支撐,對于氣象服務能力、保障人民生命財產安全、促進社會經濟發展具有重要的意義。鑒于當前的自動化程度研究的不足,文章選擇ArcGIS環境研發了氣象數據自動采集與可視化分析系統。文章以淮南市為例,在Visual Stido2013 平臺中使用C#計算機語言,集成ArcEngine 組件,編寫Python爬蟲程序并在ArcGIS環境中調用,實現了數據自動采集和MySQL持久化存儲;同時利用ARIMA模型開發了氣象要素的特征趨勢分析模塊等地圖空間可視化操作的主要功能。研究結果表明:該系統的實現,可有效地節約人力成本,為行業提供技術參考。
關鍵詞:C#;ArcEngine;氣象數據;MySQL;數據自動采集;ARIMA模型;空間可視化
中圖分類號TP3-05" " " 文獻標識碼:A
文章編號:1009-3044(2025)23-0094-04
開放科學(資源服務) 標識碼(OSID)
0 引言
氣象數據作為認識大氣運動規律、開展氣象服務的核心基礎,其采集與分析能力直接影響著氣象預報精準度、防災減災效率及行業應用深度。在全球氣候變化加劇、極端天氣事件頻發的背景下,精準、實時的氣象數據不僅是提升氣象服務能力的關鍵支撐,更是保障人民生命財產安全、助力社會經濟可持續發展的重要資源。
近年來,氣象數據采集多以傳感器等硬件手段為氣象站或相關領域服務展開研究的[1-3]。然而,氣象數據的格式多元性,給地面氣象數據在眾多領域內帶來了不便,主要表現在:其一,數據規模的快速增長與多源異構特性,導致傳統人工處理模式很難應對;其二,氣象要素的時空關聯性對分析技術提出更高要求,例如氣象時間序列數據需結合地理空間分布才能完整呈現其演化規律,傳統技術系統往往割裂數據的時間維度與空間屬性,難以提供沉浸式的分析體驗;其三,技術工具的碎片化應用導致流程斷層,數據采集依賴單一腳本、預測模型與可視化模塊缺乏深度協同,很難形成“采集-分析-展示”的閉環[4]。此外,許多網站平臺只提供查詢功能[5],這為科研人員或者社會服務相關部門帶來了不便,即氣象數據收集存在機械化問題。尤其在區域尺度氣象服務中,如何實現數據的自動采集到最終可視化呈現的“最后一公里”問題亟待解決。
鑒于C#的系統架構能力、Python的數據處理生態以及GIS(Geographic Information System) 的空間分析優勢是解決此類問題的重要技術手段。ArcGIS 作為空間信息處理的主流平臺,ArcEngine為構建集數據采集、處理、分析、展示于一體的綜合系統提供了技術支撐[6]。本研究以安徽省淮南市為研究區域,聚焦氣象數據采集與分析的全流程,借助Visual Studio 2013平臺并集成ArcEngine組件,選擇C#調用Python爬蟲程序,實現數據的高效獲取與預處理,利用ARIMA模型挖掘時間序列特征并在地理空間中直觀呈現分析結果,為氣象數據的深度應用奠定技術基礎。
文章的創新點在于:1) 構建了C#-Python-ArcGIS異構技術深度融合的自動化工作流,打通了從網絡數據獲取到專業GIS分析的壁壘;2) 實現了氣象數據“時-空-屬”一體化分析,將ARIMA時間序列預測模型與IDW空間插值無縫集成,提供了多維度的決策支持視圖。研究成果可有效節約人力成本、提升氣象數據處理效率,能為農業氣象、城市規劃、災害風險管理等社會服務領域提供數據技術支持,可為相關人員和研究領域提供參考。
1 技術方法與路線
1.1 爬蟲技術
基于 Python 的爬蟲技術體系包括網絡請求、頁面解析、異步處理、反爬策略與數據存儲等關鍵環節。在網絡請求層面,Requests 庫提供簡潔 API 實現 HTTP 通信,支持 GET/POST 等請求方式;頁面解析技術包括基于 DOM 樹的 BeautifulSoup、XPath 定位與正則表達式匹配,可應對結構化與非結構化數據提取需求。在數據存儲方面,SQLAlchemy 可實現關系型數據庫,滿足半結構化數據存儲與緩存需求。反爬策略包含代理 IP 池構建、請求頭偽裝、分布式架構設計,如 Scrapy-Redis 通過 Redis 實現任務分發。此外,爬蟲框架 Scrapy 集成調度、下載、解析組件,支持增量式爬取,結合 APScheduler 可實現定時任務調度。這些技術通過模塊化組合,可構建并發和穩定性的自動化采集程序,為氣象數據采集提供支撐[7-8]。
1.2 ARIMA模型
ARIMA(Autoregressive Integrated Moving Average) 模型全稱為自回歸移動平均模型,它是利用歷史數據預測未來的情況。該模型不僅考慮了預測變量的歷史值和現值,同時將歷史值擬合產生的誤差也作為重要因素納入模型[9]。本文選擇ARMIA模型,對原始非平穩數據做d次差分運算,得到新的平穩數據序列,將新的序列進行擬合后將原d次差分數據進行還原,得到預測數據[10-13],其計算如式(1) 所示。
[yt=u+i=1pγiyt-i+εt+i=1qθiεt-i]" " (1)
式(1) 中yt是指當前值,[γi]指自相關數,[u]是常數項,q指介數,[θi]指與誤差相組合的相關系數, [εt]指誤差。p為AR模型的介數。
1.3 ArcEngine
ArcEngine是ESRI公司開發的一套用于地理信息系統應用程序開發的組件庫,支持在C#等開發語言中嵌入地圖顯示、空間數據處理和分析功能。ArcEngine以對象模型為基礎,將各種GIS功能封裝成不同的對象和接口,這些對象和接口之間相互協作,共同完成GIS數據的處理、分析和可視化等任務。它存在多種關系,如繼承、組合、關聯等。其對象構成如圖1 ArcEngine組件及其模型所示[14]。研發中可幫助理解組件架構與對象關系,輔助接口類定位,指導代碼設計與架構規劃,是本次開發的重要輔助工具。
1.4 技術路線
系統通過C#調用Python爬蟲程序,從氣象網站自動化采集歷年氣象數據,并將數據存儲至MySQL數據庫進行規范化管理。對采集到的氣象數據,運用Python進行預處理,包括數據清洗、缺失值填充、格式轉換等操作,形成符合時間序列分析要求的數據集。再使用ARIMA模型對預處理后的氣象數據進行時間序列分析、捕捉氣溫等要素的趨勢特征,實現短期預測;同時利用IDW插值算法對模型預測結果進行空間插值,將離散站點數據轉換為連續柵格數據。在空間可視化環節,集成ArcEngine組件,實現氣象數據的空間分布展示與交互操作,支持地圖縮放、鷹眼導航、屬性查詢等功能,并以淮南市為案例驗證系統的適用性與有效性。技術流程如圖1所示。
2 系統的設計
2.1 主要功能模塊
本系統主要有基本功能、氣象數據自動采集模塊、空間分析三大模塊。其主要子功能模塊包括地圖加載、地圖操作的小部件功能、網絡爬蟲、IDW插值、ARIMA模型等(見第3節:系統功能實現) 。
2.2 類庫的設計
1) 自定義Common類
該類是用于實現地理數據加載,通過靜態方法封裝了文件選擇、數據加載及渲染優化的方法。類中主要以IRasterWorkspace接口管理柵格數據,通過對RasterWorkspaceFactory實例化,實現對柵格數據讀寫。使用IRasterLayer接口,編寫了CreateFromRaster()方法程序將柵格數據轉換為可添加到地圖控件的圖層對象。利用ILayer接口作為圖層的通用管理,程序允許統一處理矢量和柵格圖層的加載邏輯。編制LoadGeoData()方法加載Shapefile數據。所有數據的加載到地圖顯示,均使用了AxMapControl對象實現。
2) 自定義GP 類
GP類是用于地理數據處理的工具類,其核心功能是通過ESRI的地理處理框架(Geoprocessing Framework) ,將矢量數據(Feature) 轉換為柵格數據(Raster) ;或將柵格轉矢量數據以及反距離權重插值(IDW)等。比如,利用IFeatureLayer接口用于操作矢量圖層,調用FeatureToRaster工具類,實現了將矢量數據轉換為柵格格式等。IWorkspaceFactory及其子類用于創建和管理地理數據庫或文件系統的工作空間。IDW插值選擇了SpatialAnalystTools模塊中的 Idw 對象實現,通過GP工具的Execute()方法實現對Idw對象的調用。
3) 自定義GeneralTools類
該類主要實現了地圖的基本功能,通過靜態方法封裝了地圖操作、數據導出及圖形處理的通用邏輯。實現過程中使用了ESRI的核心接口來實現地圖操作與數據管理。比如利用ILayer接口管理地圖中的圖層,通過AxTOCControl控件的HitTest方法,捕獲用戶右鍵點擊的圖層對象并存儲在靜態變量TOCRightLayer中,為后續操作(如屬性查詢或導出) 提供目標圖層。使用IActiveView接口管理地圖視圖的顯示,ICommand與ITool接口是命令模式的核心實現,ITable與ICursor接口用于訪問地理數據庫的表格數據等。
3 系統的功能實現
3.1 數據自動采集模塊的實現
本模塊主要實現從目標網站(http://tianqi.2345.com/)采集天氣數據。通過導入Requests、lxml 和CSV三個庫。其實現過程按照UA偽裝、請求、數據預處理和提取數據并保存四個重要步驟。首先,通過設置“headers”的“User-Agent”模擬瀏覽器身份,避免被網站拒絕請求;其次,使用requests.get()方法發送請求,再通過etree.HTML() 方法對服務端返回的數據進行預處理,通過自定義函數將預處理完成后的數據進行解析,提取站點中與日期所對應的氣溫、天氣狀況等信息,再使用Pandas庫對得到的數據進行二次處理并保存到MySQL數據庫中。為實現數據的結構化存儲,設計了氣象站點表與氣象數據表,二者通過station_id建立一對多關聯。其結構如表1、表2所示。程序自動記錄系統時間,比如在計算機關機后執行調取上次關機時間,通過 C#中的Timer 類創建定時器,本系統設置間隔為 30 小時,并在定時被觸發時執行任務,實現數據自動采集。
3.2 空間分析模塊的實現
3.2.1 地圖操作基本功能
① 數據的加載功能
通過調用自定義Common類庫中的相關方法,實現對案例區域的數據加載工作,例如 Shapefile、柵格影像數據等,將數據以圖層的形式添加到地圖中進行顯示。
② 地圖小部件功能
通過調用自定義GeneralTools類中的相關方法,實現對地圖的放大、縮小、要素的屬性查詢、要素的選擇和清除、鷹眼、全圖顯示、前后視圖、xy坐標的查詢功能等。
③ 圖層屬性操作模塊
圖層屬性模塊包括常規、數據源信息、選擇集、符號化、標注等功能。其中“常規”功能用于顯示圖層基礎信息,如名稱、類型(點 / 線 / 面) 、空間參考(坐標系) 等,支持重命名圖層或調整數據源路徑,方便用戶快速識別和管理圖層。“數據源信息”用于展示數據存儲位置、格式(如 Shapefile、GDB 要素類) 、字段列表及屬性表結構,可查看或修改字段別名、類型,幫助用戶理解數據構成與來源。“選擇集”用于設置圖層要素的選擇行為,如啟用 “按位置選擇” 或 “按屬性選擇”,定義選擇時的容差范圍,提升數據篩選與編輯的效率。“符號化”是通過顏色、形狀、尺寸等視覺變量渲染要素,支持單一符號、分類符號(如不同顏色區分土地利用類型) 、分級符號(如漸變填充表示人口密度) 等多種方式,實現數據的直觀可視化。“標注”功能是為要素添加文本標簽(如道路名稱、城市名稱) ,可自定義字體、大小、位置、沖突避讓規則等,增強地圖的可讀性和信息傳達能力。這些功能協同作用,使圖層既能準確反映地理實體的空間位置與屬性特征,又能通過可視化設計滿足多樣化的地圖展示需求。
3.2.2 IDW插值
此功能主要是將爬取到的氣象數據轉換為連續分布的柵格圖層,支持空間趨勢可視化,為未知區域預測及為后續分析提供基礎數據。首先,在本功能模塊中實例化自定義類GP,通過向類內的自定義方法傳入參數,包括氣象站點要素圖層路徑、Z 值字段名、輸出柵格路徑等。
3.2.3 ARIMA模型的實現
程序使用ARIMA模型遵循了“序列平穩性檢驗-模型定階-參數估計-模型檢驗-預測”的標準流程。首先,采用ADF單位根檢驗判斷原始氣象時間序列的平穩性,若非平穩則進行差分處理。其次,通過自相關圖(ACF) 和偏自相關圖(PACF) 初步確定模型的p, d, q階數。然后,采用網格搜索與AIC(赤池信息準則) 相結合的方法,在備選階數范圍內自動尋優,確定最佳模型參數。最后,對模型的殘差進行白噪聲檢驗,通過后即可用于未來時序的預測。
3.3 功能的協同與效果展示
系統各功能模塊通過數據流轉與操作邏輯實現深度協同,形成從數據采集到分析可視化的完整閉環。數據自動采集模塊定時從氣象網站獲取多站點數據,經清洗后存入 MySQL 數據庫,為空間分析與模型預測提供基礎數據源。空間分析模塊調用數據庫中的氣象站點數據,通過 IDW 插值將離散點轉化為連續柵格圖層,例如:將案例區淮南市及周邊區域各站點氣溫數據插值生成區域氣溫分布圖,直觀呈現溫度空間分布趨勢;同時,地圖基本操作功能(如放大、屬性查詢) 支持用戶交互式探索數據,點擊地圖上的區縣圖層可彈出屬性表,如可查看人口密度、行政區劃等信息,輔助空間特征分析。
ARIMA 模型模塊基于歷史氣象數據(如溫度、降水序列) 進行時間序列分析,預測結果經 IDW 插值后與 ArcEngine 地圖控件結合,實現時空維度的雙重展示。例如,預測淮南市下月降水分布時,系統自動將柵格結果疊加至底圖,并通過符號化功能以漸變色區分降水強度,用戶可通過鷹眼導航快速定位重點區域。系統實現了簡單點擊方式迅速獲取以柱狀圖形式對比各月天氣類型分布,增強數據可讀性。
功能協同過程中,用戶通過主菜單按鈕“數據轉換”“專業分析”等操作,系統后臺自動調用自定義類庫(如 GP 類的 IDW 插值方法、Common 類的數據加載邏輯) ,實現跨模塊的數據傳遞與處理。經淮南市實測數據驗證,系統可在數分鐘內完成從數據采集、插值分析到地圖渲染的全流程操作,生成的氣溫分布圖,展現出高效的數據處理能力,為氣象服務、城市規劃等領域提供了直觀、精準的決策支持工具。其部分效果如圖2所示。
4 結論
本研究成功研制了一套基于ArcGIS環境的氣象數據自動化處理系統,其核心貢獻在于通過C#與Python的異構集成,構建了從網絡數據獲取到時空一體化分析與可視化的無縫工作流。該系統解決了傳統人工采集的效率瓶頸,降低了人力與時間成本;結合 ArcEngine組件與 ARIMA 模型開發的特征趨勢分析模塊,通過空間數據操作功能拓展了氣象數據的空間分析維度,為氣象服務提供了多視角的決策依據。以淮南市為試點的實證結果表明系統運行可靠,驗證了系統在實際應用中的可行性與有效性。
本次研發為氣象數據處理領域提供了可復用的技術框架,其自動化采集機制與分析功能,可直接應用于所需行業,未來研究將聚焦于更先進的預測模型,如LSTM、Prophet等深度學習模型,以處理更復雜的非線性氣象序列。此外,下一步將考慮WebGIS系統的研發,實現系統在線服務,為相關事業高質量發展注入新動力。
參考文獻:
[1] 劉志紅.內蒙古地區氣象數據采集監控管理系統設計[J].無線互聯科技,2025,22(4):46-50.
[2] 何穎.基于nRF24L01的無線氣象數據采集系統設計[J].微型電腦應用,2023(9):30-32,41.
[3] 蘇小浩.Vaisala MAWS201 型便攜式自動氣象站的研究與使用[J].裝備制造技術,2021(12):97-100.
[4] 金榮花,代刊,趙瑞霞,等.我國無縫隙精細化網格天氣預報技術進展與挑戰[J].氣象,2019,45(4):445-457.
[5] 鄭文全,劉鑫煉,羅貴東.常規氣象觀測站查詢系統設計與實現[J].電腦與電信,2023(S1):105-109.
[6] 黃波,華韻子.ArcGIS在氣象信息系統中的應用[J].大氣科學研究與應用,2010(2):53-59.
[7] RICHARD LAWSON.用Python寫網絡爬蟲[M].李斌,譯.北京:人民郵電出版社,2016.
[8] 莊培杰.Python網絡爬蟲從入門到實踐[M].北京:電子工業出版社,2019.
[9] 殷春武.基于時間權重的回歸預測模型[J].統計與決策,2011,27(7):161-162.
[10] 石美娟.ARIMA模型在上海市全社會固定資產投資預測中的應用[J].數理統計與管理,2005,24(1):69-74.
[11] PEREIRA DA VEIGA C,PEREIRA DA VEIGA C R,GIROTTO F M,et al.Implementation of the ARIMA model for prediction of economic variables:evidence from the health sector in Brazil[J].Humanities and Social Sciences Communications,2024,11(1):1068.
[12] 范繼光.基于ARIMA模型的我國人口、耕地與糧食預測分析[J].國土與自然資源研究,2014(4):11-14.
[13] AHMAD DAR A,JAIN A,MALHOTRA M,et al.Time Series analysis with ARIMA for historical stock data and future projections[J].Soft Computing,2024,28(21):12531-12542.
[14] 牟乃夏.ArcGIS Engine地理信息系統開發教程:基于C#.NET[M].北京:測繪出版社,2015:21-23.
【通聯編輯:李雅琪】