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