摘 要:在生物多樣性保護(hù)受到越來越多關(guān)注的當(dāng)下,開發(fā)設(shè)計滿足現(xiàn)代化管理需求的野生動物種群信息管理系統(tǒng),可助力野生動物的保護(hù)和管理工作。文中采用Python編程語言、Bootstrap前端框架以及MySQL數(shù)據(jù)庫,基于B/S架構(gòu),以野生黑西冠長臂猿的數(shù)據(jù)為例,設(shè)計了一種野生動物種群信息管理系統(tǒng),并選用Django框架來搭建系統(tǒng)的核心框架。該管理系統(tǒng)包括三大模塊:管理員、數(shù)據(jù)管理和數(shù)據(jù)展示模塊。管理員模塊涵蓋用戶管理和權(quán)限管理,可以根據(jù)不同用戶的需求進(jìn)行角色分配和權(quán)限設(shè)定,確保數(shù)據(jù)的安全性和合法性。數(shù)據(jù)管理模塊可以實現(xiàn)對野生動物種群信息的實時采集、管理和處理,使數(shù)據(jù)管理更加便捷和高效。數(shù)據(jù)展示模塊則提供了直觀的數(shù)據(jù)可視化界面,支持?jǐn)?shù)據(jù)的圖表展示和統(tǒng)計分析,幫助用戶更好地理解和掌握野生動物種群信息。文中介紹了系統(tǒng)的總體設(shè)計、接口設(shè)計、功能模塊、數(shù)據(jù)庫以及前端的設(shè)計和實現(xiàn)。在實際應(yīng)用中,該系統(tǒng)可以幫助野生動物管理人員更加高效地收集和管理野生動物種群信息,有助于更好地制定保護(hù)和管理策略,為野生動物保護(hù)研究提供重要的數(shù)據(jù)支持。
關(guān)鍵詞:管理系統(tǒng);野生動物;長臂猿;Python;MySQL數(shù)據(jù)庫;Django框架
中圖分類號:TP319 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2025)07-00-04
0 引 言
習(xí)近平總書記指出,野生動物是地球生命和自然生態(tài)體系的重要組成部分,它們的生存狀況與人類可持續(xù)發(fā)展息息相關(guān)[1]。近年來,我國社會經(jīng)濟(jì)在不斷發(fā)展,然而野生動物棲息地的縮減與破碎化問題日益嚴(yán)峻,這給生物多樣性的保護(hù)帶來了巨大的挑戰(zhàn)。據(jù)統(tǒng)計,我國除海洋魚類外的4 357種脊椎動物中,屬于滅絕等級的有17種,受威脅的有932種,占評估物種總數(shù)的21.4%;特有物種有1 598種,受威脅率為30.6%。因此,有必要建立野生動物種群信息管理系統(tǒng),對價值較高的物種給予更多的關(guān)注[2-3]。
計算機(jī)、網(wǎng)絡(luò)技術(shù)的發(fā)展,特別是地理信息系統(tǒng)(Geographic Information System, GIS)技術(shù)的發(fā)展,讓野生動物信息具有了空間特征,更加符合野生動物的實際分布情況。因此,使用計算機(jī)技術(shù)和地理信息系統(tǒng)進(jìn)行野生動物種群管理已成為當(dāng)前的趨勢[4]。目前,國內(nèi)扎龍保護(hù)區(qū)已開始利用GIS技術(shù)管理濕地[5],也有研究開始探索北斗系統(tǒng)在野生動物保護(hù)中的應(yīng)用[6]。文獻(xiàn)[7]研究了深度學(xué)習(xí)在野生動物保護(hù)中的應(yīng)用,文獻(xiàn)[8]還利用DjangoWeb開發(fā)框架實現(xiàn)了對圖片中魚類目標(biāo)進(jìn)行定位和分類的系統(tǒng)。因此,通過信息化手段可以更加高效地管理野生動物種群信息,為野生動物的保護(hù)和生態(tài)系統(tǒng)的健康提供更好的保障。
1 相關(guān)工具、技術(shù)和開發(fā)環(huán)境
1.1 PyCharm
PyCharm是一款功能強(qiáng)大的Python IDE(集成開發(fā)環(huán)境),由JetBrains公司開發(fā)。它被廣泛用于Python語言的開發(fā)、調(diào)試和代碼重構(gòu),也支持其他流行的Web框架和語言。PyCharm是一個跨平臺的IDE,支持Windows、Mac和Linux系統(tǒng)。
1.2 Python語言和Django框架
在相關(guān)技術(shù)里,系統(tǒng)前端設(shè)計用到了Bootstrap框架和Javascript,系統(tǒng)采用了Web框架Django。下面重點對Django框架進(jìn)行分析。
Python是一種解釋型、面向?qū)ο蟮膭討B(tài)編程語言,由荷蘭人Guido van Rossum在1989年開發(fā)[9]。Django是一種用Python編寫的免費開源的Web應(yīng)用程序框架,它擁有大量的功能和工具,提供了一種高效、靈活且可擴(kuò)展的方式來開發(fā)Web應(yīng)用程序,使得Web開發(fā)更加簡單、快速和可靠。與Flask這種輕量級框架相比,Django框架本身就包含了一套功能強(qiáng)大、完整的解決方案,包括模型層、視圖層和模板層,只需要進(jìn)行簡單的配置就可以調(diào)用這些集成好的模塊,非常快速地實現(xiàn)所需的功能[10]。
Django采用MTV(Model, Template, View)的設(shè)計模式來組織Web應(yīng)用程序。這種設(shè)計模式將Web應(yīng)用程序分成三個層次:模型層(Model)、模板層(Template)和視圖層(View)。模型層負(fù)責(zé)將業(yè)務(wù)對象映射到數(shù)據(jù)庫,并提供URL路由來訪問MySQL數(shù)據(jù)庫的API。視圖層負(fù)責(zé)處理業(yè)務(wù)邏輯,并在必要時調(diào)用模型層和模板層。模板層負(fù)責(zé)將前端的HTML頁面呈現(xiàn)給用戶[11]。本文設(shè)計的基于Django的野生動物種群信息管理系統(tǒng)的具體架構(gòu)如圖1所示。開發(fā)環(huán)境配置見表1。
2 功能分析和框架設(shè)計
2.1 功能分析
根據(jù)需求分析,結(jié)合當(dāng)前的野生動物管理現(xiàn)狀以及現(xiàn)有的計算機(jī)技術(shù)特點,設(shè)計野生動物種群信息管理系統(tǒng)的主要功能。
2.1.1 管理登錄
管理登錄功能旨在實現(xiàn)管理員和超級管理員登錄系統(tǒng);同時根據(jù)用戶角色,實現(xiàn)數(shù)據(jù)的增刪改查以及對數(shù)據(jù)庫的操作。
2.1.2 數(shù)據(jù)管理
數(shù)據(jù)管理旨在根據(jù)野生動物種群信息,設(shè)計數(shù)據(jù)庫以及對數(shù)據(jù)的增刪改查操作。實現(xiàn)的主要功能包括野生動物種群信息的添加、刪除和修改。在添加功能中,可添加動物名稱、單位、站點、經(jīng)度、維度、群體特征、記錄時間、高程、照片等信息。在刪除功能中增加了“確認(rèn)刪除”彈窗,以防止誤操作刪除數(shù)據(jù)。數(shù)據(jù)表展示詳細(xì)數(shù)據(jù)信息,并支持?jǐn)?shù)據(jù)的修改功能,點擊“修改”按鈕即可跳轉(zhuǎn)到選中數(shù)據(jù)的修改界面,對數(shù)據(jù)進(jìn)行修改并保存。
2.1.3 數(shù)據(jù)可視化
數(shù)據(jù)可視化旨在實現(xiàn)野生動物種群數(shù)據(jù)的可視化。實現(xiàn)的功能主要包括百度地圖的渲染、不同地圖類型之間的切換、顯示以經(jīng)緯度坐標(biāo)標(biāo)記的數(shù)據(jù)點的散點圖,以及在單擊相應(yīng)數(shù)據(jù)點時啟用彈出窗口顯示野生動物物種的詳細(xì)信息。
2.1.4 動物詳情
動物詳情功能旨在實現(xiàn)對野生動物形體特征、棲息環(huán)境、生活習(xí)性、分布范圍的詳細(xì)介紹。實現(xiàn)的主要功能包括介紹野生動物的詳細(xì)信息,展示個體圖像。該功能便于管理人員對野生動物有更多的了解,進(jìn)而采取更有效的方法對野生動物進(jìn)行管理和保護(hù)。
2.2 框架設(shè)計
野生動物種群信息管理系統(tǒng)是基于Django框架設(shè)計開發(fā)的,采用B/S架構(gòu),可在Web環(huán)境下運行,具有良好的跨平臺性和擴(kuò)展性。系統(tǒng)的架構(gòu)設(shè)計共分為三個層次,如圖2所示。
在表示層,采用了模板引擎技術(shù),可以實現(xiàn)用戶界面的動態(tài)展示和交互。Django使用基于Python的模板語言來編寫模板,使得開發(fā)者可以更方便地處理動態(tài)內(nèi)容,并且可以減少代碼重復(fù)。模板引擎的工作原理是通過模板繼承、變量、標(biāo)簽和過濾器等元素來組織模板內(nèi)容,并將這些元素和數(shù)據(jù)進(jìn)行渲染,生成最終的HTML 頁面。這種技術(shù)使得開發(fā)者可以輕松地創(chuàng)建美觀、交互性強(qiáng)的用戶界面,而無需了解太多的前端技術(shù)。
在業(yè)務(wù)邏輯層,系統(tǒng)實現(xiàn)了對野生動物種群信息的增刪改查等基本功能,并且能夠處理用戶提交的請求并返回相應(yīng)的結(jié)果。在Django中,業(yè)務(wù)邏輯層通常由視圖函數(shù)來實現(xiàn)。視圖函數(shù)的主要工作是根據(jù)用戶請求的URL,從數(shù)據(jù)庫中獲取相應(yīng)的數(shù)據(jù),然后將這些數(shù)據(jù)渲染到模板中,最終生成 HTML頁面并返回給用戶。
在數(shù)據(jù)層,系統(tǒng)使用MySQL數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)存儲,可以快速地處理大量數(shù)據(jù)并保證數(shù)據(jù)的完整性和安全性;還可以定義模型方法和查詢方法,使得開發(fā)者可以輕松地對數(shù)據(jù)進(jìn)行操作。
3 系統(tǒng)各模塊實現(xiàn)
3.1 登錄模塊的實現(xiàn)
管理員通過登錄模塊進(jìn)入系統(tǒng),可以確保系統(tǒng)數(shù)據(jù)的穩(wěn)定性和安全性。管理員進(jìn)入到登錄頁面,會發(fā)起一個POST請求生成一個圖形驗證碼,輸入用戶名、密碼、驗證碼后點擊登錄,系統(tǒng)會先進(jìn)行驗證碼的匹配,匹配失敗時會重新發(fā)起請求,調(diào)用check_code()函數(shù)更新驗證碼,并返回到登錄界面;驗證碼匹配成功時則調(diào)用login()函數(shù)對GET請求獲取的form進(jìn)行驗證,若驗證成功,系統(tǒng)將獲取用戶名、密碼和驗證碼,再從數(shù)據(jù)庫的Admin表獲取該用戶的用戶名和加密密碼,以校驗用戶名和密碼是否正確;若驗證失敗,則返回錯誤提示。用戶登錄成功后將跳轉(zhuǎn)到數(shù)據(jù)首頁進(jìn)行數(shù)據(jù)的增刪改查操作以及可視化的交互操作。
3.2 數(shù)據(jù)管理模塊的實現(xiàn)
數(shù)據(jù)管理模塊可實現(xiàn)動物名稱、單位、站點、經(jīng)度、維度、群體特征、記錄時間、高程、圖片等信息的添加、刪除、修改、查詢四大功能,數(shù)據(jù)管理界面如圖3所示。
添加功能的實現(xiàn):管理員通過點擊“新增動物信息”按鈕進(jìn)入對應(yīng)頁面,并使用permission_require裝飾器授權(quán)用戶新增權(quán)限;同時在indexadd.py中創(chuàng)建Modelform表單。在以GET方式請求進(jìn)入頁面時,需要指定顯示在表單中的字段,以保證前端能正確展示表單內(nèi)容。管理員填寫完數(shù)據(jù)后以POST方式提交表單內(nèi)容,在后端的index_add函數(shù)中,is_valid()方法會驗證表單的合法性。如果表單內(nèi)容合法,使用save()方法將其保存到數(shù)據(jù)庫中,相當(dāng)于在IndexList表中插入一條新數(shù)據(jù),并使用redirect()方法將頁面重定向到指定位置。如果表單內(nèi)容不合法,使用render_to_response()方法返回新增界面,以供用戶重新填寫表單內(nèi)容。
刪除功能的實現(xiàn):當(dāng)管理員在數(shù)據(jù)管理界面對指定數(shù)據(jù)進(jìn)行刪除時,點擊“刪除”按鈕,會觸發(fā)彈窗并且調(diào)用bindBtnDeleteEvent()函數(shù),獲取當(dāng)前行的ID并賦值給全部變量。為了保護(hù)數(shù)據(jù)安全,設(shè)置了再次確認(rèn)機(jī)制,彈窗里會有“確認(rèn)刪除”按鈕,當(dāng)點擊“確認(rèn)刪除”按鈕時會調(diào)用bindBtnCon?rmDeleteEvent()函數(shù),該函數(shù)會把ID傳遞給后端,后端執(zhí)行index_delete()函數(shù)時,根據(jù)傳遞的參數(shù)ID,利用objects.?lter().delete()方法,即可刪除指定數(shù)據(jù)。
修改功能的實現(xiàn):當(dāng)管理員需要修改指定數(shù)據(jù)時,可點擊編輯按鈕,隨后系統(tǒng)會依據(jù)所選記錄的ID參數(shù),跳轉(zhuǎn)到編輯頁面。在此頁面,系統(tǒng)通過GET方法從數(shù)據(jù)庫查詢要修改的種群信息記錄的ID,獲取對應(yīng)的實例對象,并將其渲染至表單,以供用戶修改。而當(dāng)用戶使用POST方法提交表單內(nèi)容時,系統(tǒng)會對表單進(jìn)行合法性校驗,更新數(shù)據(jù)庫中對應(yīng)的數(shù)據(jù)記錄,最后使用save()方法將修改后的結(jié)果保存至數(shù)據(jù)庫。
查詢功能的實現(xiàn):在野生動物種群信息管理系統(tǒng)中,管理員能夠快速查詢動物信息。此功能由查詢結(jié)果顯示視圖函數(shù)index_list()實現(xiàn),其中定義了get()方法。在路由映射模式下,URLconf會把搜索請求分配給index_list()來處理。該函數(shù)會根據(jù)用戶提交的表單信息進(jìn)行查詢,遍歷全部動物種群信息并使用objects.all()方法獲取全部信息;接著根據(jù)查詢條件,通過objects.?lter()方法過濾出符合關(guān)鍵字查詢的動物名稱;最后使用render()方法將查詢結(jié)果呈現(xiàn)在前端。
3.3 分析管理模塊的實現(xiàn)
分析管理模塊主要實現(xiàn)對種群信息的深入分析與展示功能。其中,借助百度地圖可視化,種群信息里的經(jīng)緯度坐標(biāo)會以散點圖的形式展示于地圖之上。若要開始使用百度地圖API,首先要獲取API密鑰,并將其嵌入模板。之后,利用VAR關(guān)鍵字聲明變量來初始化地圖,創(chuàng)建地圖實例,方便后續(xù)操作使用。通過設(shè)置map.centerAndZoom參數(shù)確定地圖的中心點坐標(biāo)與級別,從而保證地圖加載時顯示正確的位置和縮放級別。在JavaScript中,使用function來定義addMarker()函數(shù)以實現(xiàn)坐標(biāo)定位,利用infoWindow變量定義彈窗,并且采用Ajax請求獲取彈窗信息。分析管理模塊界面如圖4所示。
4 結(jié) 語
本文開發(fā)了一個基于Django的野生動物信息管理系統(tǒng),主要包括三大模塊:管理員模塊、數(shù)據(jù)管理模塊和數(shù)據(jù)展示模塊。該系統(tǒng)能夠幫助野生動物管理人員更加高效地收集和管理野生動物種群信息,有望成為野生動物管理工作的重要輔助工具。
注:本文通訊作者為郭盤江。
參考文獻(xiàn)
[1] 邵光學(xué). 新中國成立以來野生動物保護(hù)法制建設(shè)回顧及展望[J]. 野生動物學(xué)報,2021(42):923-929.
[2] 臧春鑫,蔡蕾,李佳琦,等.《中國生物多樣性紅色名錄》的制定及其對生物多樣性保護(hù)的意義[J]. 生物多樣性,2016,24 (5): 610-614.
[3] 王乙.野生動物保護(hù)價值評價研究[D].哈爾濱:東北林業(yè)大學(xué),2020.
[4] 仵君俠.基于 WebGIS 的野生動物調(diào)查數(shù)據(jù)管理系統(tǒng)研究與實現(xiàn)[D]. 西安:西安科技大學(xué),2013.
[5] 劉正.基于GIS的扎龍國家級自然保護(hù)區(qū)信息管理系統(tǒng)研究[D]. 哈爾濱:東北林業(yè)大學(xué),2017.
[6] 鐘俊杰,鈕冰,陳沁,等. 深度學(xué)習(xí)在野生動物保護(hù)中的應(yīng)用[J]. 獸類學(xué)報,2023,43(6):734-744.
[7] 李迪強(qiáng),劉芳,賈茹,等. 北斗野生動物保護(hù)應(yīng)用[J]. 衛(wèi)星應(yīng)用,2023(4):29-34.
[8] 黃天星,臧兆祥,陳露露. 基于Django的魚類目標(biāo)識別與分類系統(tǒng)的設(shè)計與實現(xiàn)[J]. 長江信息通信,2022(6):19-21.
[9] 宮萬里. 基于Django的海洋環(huán)境數(shù)據(jù)管理系統(tǒng)[D]. 大連:大連理工大學(xué),2020.
[10] 牛寧. 基于 Django 的智慧園區(qū)平臺系統(tǒng)設(shè)計與實現(xiàn)[D]. 成都:電子科技大學(xué),2018.
[11] 郭守文. 基于 Django 的智慧社區(qū)后臺管理系統(tǒng)設(shè)計與實[D].杭州: 浙江工業(yè)大學(xué),2016.
收稿日期:2024-04-28 修回日期:2024-05-30
作者簡介:秋 怡(1984—),女,助理工程師,研究方向為數(shù)字林業(yè)。
郭盤江(1972—),男,碩士,副教授,研究方向為動物生態(tài)學(xué)、保護(hù)生物學(xué)。