• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      空間大數(shù)據(jù)時代GIS二次開發(fā)的教學改革研究與實踐

      2023-09-15 03:34:36謝小魁魏金占
      軟件導刊 2023年9期
      關(guān)鍵詞:二次開發(fā)數(shù)據(jù)庫功能

      謝小魁,魏金占,林 卉

      (1.北部灣大學 資源與環(huán)境學院,廣西 欽州 535011;2.桂林航天工業(yè)學院 電子信息與自動化學院,廣西 桂林 541004)

      0 引言

      GIS 在中國得到快速發(fā)展,目前已在科學研究、智慧城市建設(shè)、互聯(lián)網(wǎng)+智慧行業(yè)等行業(yè)取得了顯著成效。2011年5 月,國家測繪局更名為國家測繪地理信息局[1],同年7月,中國地理信息系統(tǒng)協(xié)會更名為中國地理信息產(chǎn)業(yè)協(xié)會[2],標志著測繪、地理、信息和產(chǎn)業(yè)在中國的融合,反映了國家對GIS產(chǎn)業(yè)化發(fā)展之路的重視。

      隨著GIS 產(chǎn)業(yè)的快速發(fā)展,社會對GIS 人才的需求量持續(xù)增加。通常,GIS 專業(yè)的就業(yè)崗位主要分為GIS 應(yīng)用操作和GIS 軟件開發(fā),而后一種是更加熱門的就業(yè)領(lǐng)域[3]。國土[4]、農(nóng)林[5]、地質(zhì)[6]、城市規(guī)劃[7]、水利[8]、醫(yī)學[9]等多個行業(yè)對GIS 二次開發(fā)均有廣泛需求。對62 家地理信息相關(guān)單位的用人需求進行調(diào)查發(fā)現(xiàn)[10],超過一半的用人單位(33 家)要求熟悉COM 開發(fā)技術(shù),掌握ArcEngine、MapObjects、MapX 或SuperMap Objects 等常見的GIS 開發(fā)平臺或開發(fā)組件?!?1job”“智聯(lián)招聘”“3S 招聘網(wǎng)”三大招聘網(wǎng)站數(shù)據(jù)顯示,在GIS 類別的崗位中,軟件開發(fā)技術(shù)需求量最大[11],將來較長一段時間內(nèi)GIS 二次開發(fā)需求將會居高不下。

      GIS 二次開發(fā)是測繪工程、地理信息科學、地理信息工程等專業(yè)本科生和研究生必修的一門核心課程[12],一致認為這是由專業(yè)課程體系和應(yīng)用型人才的社會需求共同決定。相關(guān)研究較多,研究角度涉及從產(chǎn)業(yè)型人才培養(yǎng)模式[3]、社會需求角度[11]、GIS 開發(fā)競賽[13-14]等方面;培養(yǎng)專業(yè)分別從地理信息科學[15]、城建類[13]、農(nóng)業(yè)資源與環(huán)境專業(yè)[16]等專業(yè)出發(fā),分析不同專業(yè)對GIS 二次開發(fā)人才的特定需求;在開發(fā)平臺和實踐教學上,主要選擇ArcEngine[14,17-18]、Map Objects[17,19]和MapX[17]等傳統(tǒng)的COM GIS;應(yīng)用案例上,選擇了三維數(shù)字校園系統(tǒng)[20]、動態(tài)追蹤[19]、土地承包經(jīng)營權(quán)[18]等。由于涉及內(nèi)容廣泛,包括離散數(shù)學、程序設(shè)計語言、數(shù)據(jù)結(jié)構(gòu)和算法、數(shù)據(jù)庫、遙感影像處理、地圖編繪等多個專業(yè)課程[3],應(yīng)用性強,動手能力要求高,大部分學生對此課程缺乏信心和興趣,普遍認為這門課程難度較大。

      隨著地理大數(shù)據(jù)激增、人工智能快速發(fā)展、社會精細管理等方面的沖擊,社會對GIS 專業(yè)人才知識結(jié)構(gòu)和動手能力的需求發(fā)生了極大變化。一些學者認為,當前國內(nèi)GIS 二次開發(fā)的課程內(nèi)容和結(jié)構(gòu)體系比較陳舊,GIS 開發(fā)模式和教學重點相對落后[3,11-12,21-23],已不能滿足大數(shù)據(jù)和人工智能背景下GIS 人才培養(yǎng)需求。大數(shù)據(jù)需求背景下,如何設(shè)計GIS 二次開發(fā)課程教學模式、教學內(nèi)容和教學方法等,降低GIS 二次開發(fā)課程學習難度,提升學生學習興趣,促使學生適應(yīng)新形勢下社會和行業(yè)發(fā)展需求,是GIS二次開發(fā)教學改革面臨的重要問題。

      1 傳統(tǒng)GIS二次開發(fā)模式面臨的挑戰(zhàn)

      1.1 傳統(tǒng)GIS二次開發(fā)方式

      根據(jù)內(nèi)容可將GIS 分為工具型GIS 和應(yīng)用型GIS 兩大基本類型[24]。對于大多數(shù)非GIS 專業(yè)的普通用戶而言,工具型GIS 平臺功能復雜、難以掌握,應(yīng)用型GIS 更能滿足特定行業(yè)應(yīng)用需求,市場上對應(yīng)用型GIS 的需求大大超過工具型GIS。應(yīng)用型GIS 一般是利用高級程序設(shè)計語言(如Python、C#、Java、C++等),在工具型地理信息系統(tǒng)平臺(如SuperMap、MapGIS、ArcGIS、MapInfo、QGIS 等)基礎(chǔ)上進行二次開發(fā)而來。

      GIS 二次開發(fā)模式主要包括單純二次開發(fā)和集成二次開發(fā)[3,24-25],或者宿主型開發(fā)和組件式開發(fā)兩大類[21]。“單純二次開發(fā)”又叫宿主型二次開發(fā),通過使用GIS 平臺的腳本語言實現(xiàn)。在過去,大多數(shù)GIS 平臺提供了自己的二次開發(fā)語言。如ESRI ArcView 有Avenue[26],ArcGIS 早期支持VBA,MapInfo Professional 提供了MapBasic 語言、MGE提供了MDL[24]。這種開發(fā)方式難度低,可以快速擴充系統(tǒng)功能,程序穩(wěn)定。“集成二次開發(fā)”又叫組件式開發(fā),利用通用高級程序設(shè)計語言(C#、Java、C++等),通過調(diào)用GIS可視化控件實現(xiàn),大部分功能都綁定到GIS 控件。例如,ArcGIS 早期提供MapObjects 組件,后來產(chǎn)生ArcObjects 和ArcEngine 組件;MapInfo 早期擁有MapX,后期發(fā)布了MapXtreme;SuperMap 的SuperMap Objects 簡單易用。此種方式對專業(yè)程序員比較友好,只需利用熟悉的通用高級程序設(shè)計語言和集成開發(fā)環(huán)境即可開發(fā),具有投入成本低、開發(fā)速度快、容易集成業(yè)務(wù)工作流、開發(fā)出來的程序界面漂亮、易于商業(yè)化等優(yōu)點。

      隨著信息技術(shù)和GIS 的發(fā)展,GIS 二次開發(fā)的內(nèi)涵和外延也隨著發(fā)生變化。其他的GIS 二次開發(fā)模式還包括Web API 二次開發(fā)和開源二次開發(fā)[21]。Web API 開發(fā)通過調(diào)用網(wǎng)絡(luò)服務(wù)實現(xiàn),主要用于互聯(lián)網(wǎng)電子地圖服務(wù)和公眾電子地圖展示,但空間分析功能較弱;開源二次開發(fā)基于優(yōu)秀的開源GIS 平臺(如NASA WorldWind、MapWindow、QGIS 等),通過修改、優(yōu)化和擴展源代碼實現(xiàn)。

      1.2 新時期的挑戰(zhàn)

      技術(shù)層面上,隨著衛(wèi)星定位、攝影測量和遙感、機載激光雷達和無人船等技術(shù)的快速發(fā)展和廣泛應(yīng)用,空間數(shù)據(jù)的采集手段越來越多、成本越來越低、效率越來越高。政策層面上,隨著“一帶一路”倡議的提出和“精準扶貧”“西氣東輸”“南水北調(diào)”等重大工程的實施,國家進行了地理國情普查、第三次土地調(diào)查、林業(yè)調(diào)查、草業(yè)資源清查等全國范圍的空間信息項目,積累了大量的空間數(shù)據(jù)。2022 年2 月16 日,國務(wù)院印發(fā)《關(guān)于開展第三次全國土壤普查的通知》,決定自2022 年起利用4 年時間完成第三次全國土壤普查,調(diào)查方案將基于RS 和GIS 制定,數(shù)據(jù)采集利用GNSS進行定位,成果采用GIS管理。

      社會對地理數(shù)據(jù)的需求發(fā)生了極大變化,表現(xiàn)為數(shù)據(jù)需求量大、計算密集型高、實時性強、業(yè)務(wù)流程繁多、專業(yè)模型復雜、智能化程度要求高。例如,疫情防控的健康碼、行程卡分析,需要集成來自各種渠道的空間大數(shù)據(jù),進行時空伴隨分析,精準性和實時性要求都非常高。

      目前,GIS 面臨供給側(cè)的地理大數(shù)據(jù)爆炸和需求側(cè)的地理大數(shù)據(jù)需求的雙重挑戰(zhàn),傳統(tǒng)的GIS 二次開發(fā)方式在大數(shù)據(jù)面前顯得力不從心。傳統(tǒng)的宿主型二次開發(fā)使用特定腳本語言(如ArcView 的Avenue、ArcGIS 的VBA、Map-Info 的MapBasic),功能單一、互操作性差、難以跨平臺、計算生態(tài)嚴重缺失。例如,即使曾經(jīng)使用極為廣泛的VBA,也很難開發(fā)出網(wǎng)絡(luò)爬蟲工具,而目前人們大量使用這種技術(shù)下載監(jiān)測數(shù)據(jù)以打造物聯(lián)網(wǎng)系統(tǒng),這是大數(shù)據(jù)工程建設(shè)的重要組成部分。在傳統(tǒng)的集成式開發(fā)中,GIS 組件一般作為窗體容器的可視化控件,所有功能都通過這些控件綁定,不能以微服務(wù)的形式提供網(wǎng)絡(luò)和共享服務(wù);如果同時使用多個GIS 平臺的控件,則會占用較多硬件資源,導致其運行速度減慢,軟件不穩(wěn)定,容易崩潰,幾乎不能與大數(shù)據(jù)開發(fā)框架集成,也就難以形成豐富的生態(tài)鏈。例如,進行高斯投影科學計算,不需要可視化,只需要坐標系轉(zhuǎn)換功能即可,但在使用ArcGIS Engine 進行高斯投影計算時,也要安裝全部的ArcGIS Engine。

      同時,傳統(tǒng)的GIS 二次開發(fā)難度較大。GIS 需要支持空間數(shù)據(jù)庫,進行大量的空間分析,因此其規(guī)模和復雜程度要遠高于普通的信息管理系統(tǒng)(MIS)或統(tǒng)計分析系統(tǒng)(例如SPSS)。開發(fā)人員需要掌握二次開發(fā)基本原理、組件技術(shù)基礎(chǔ),掌握GIS 數(shù)據(jù)生產(chǎn)、數(shù)據(jù)分析、數(shù)據(jù)庫設(shè)計、系統(tǒng)設(shè)計、程序?qū)崿F(xiàn)的全過程[27],也需要學習操作系統(tǒng)、離散數(shù)學、數(shù)據(jù)結(jié)構(gòu)和算法、空間數(shù)據(jù)庫、軟件工程等基礎(chǔ)課程[24]。教學內(nèi)容中的算法、代碼編寫占很大比例,GIS 空間分析的代碼貢獻較少,開發(fā)人員珍貴,人才奇缺。例如,ArcEngine、MapObjects、MapX 均基于組件技術(shù)[23,28],非?;逎y懂。并且,在使用ArcGIS Engine 時需要大量使用強制類型轉(zhuǎn)化,IDE 無法進行智能提示,編譯器無法進行類型檢查。

      1.3 大數(shù)據(jù)背景下GIS二次開發(fā)的必要性

      GIS 二次開發(fā)課程是地理信息系統(tǒng)專業(yè)的核心課程之一,具有很強的技術(shù)性、應(yīng)用性和實踐性。在過去,集成式組件開發(fā)(控件開發(fā))是大部分GIS 二次開發(fā)的首選方式,開發(fā)人員利用自己熟悉的編程語言(例如C#、Java)進行編程,速度快、方式靈活。然而,這種開發(fā)方式其實很難滿足大數(shù)據(jù)背景下的現(xiàn)實需求,具體表現(xiàn)如下:①GIS 控件往往只包括原系統(tǒng)平臺的少部分功能,一些復雜的地理分析難以實現(xiàn),而地理分析是GIS 的核心。例如ArcToolbox 是ArcGIS 的核心,利用Arcpy 調(diào)用ArcToolbox 進行空間分析是解決復雜空間問題的重要方法,但如果用戶使用傳統(tǒng)MapObjects、ArcEngine 進行二次開發(fā),則根本不可能實現(xiàn)類似ArcToolbox 的功能;②集成式開發(fā)技術(shù)需要精通的C#或其他高級程序設(shè)計語言,這對大部分GIS 數(shù)據(jù)分析人員而言過于復雜,導致開發(fā)人員緊缺,時間急迫,開發(fā)人員日夜加班成常態(tài),但熟練的GIS 技術(shù)員和分析工程師卻幫不上忙,難以滿足大型GIS 工程項目和政府政績的周期和時間節(jié)點要求;③基于GIS 控件開發(fā)獨立的程序,需要從零開始搭建程序框架,意味著缺少成熟商業(yè)軟件特有的基礎(chǔ)設(shè)施、多源數(shù)據(jù)和多數(shù)據(jù)庫的支持、空間分析功能等基本且重要的功能,基本不具有擴展性。

      2 變革背景下的GIS二次開發(fā)語言與環(huán)境

      2.1 開發(fā)語言比較與選擇

      GIS 二次開發(fā)所選擇的語言應(yīng)該是發(fā)展變化的,能適應(yīng)現(xiàn)代程序設(shè)計主流(例如云計算),有較強的大數(shù)據(jù)處理能力。例如,ArcGIS for Desktop 10.8 軟件安裝包大小只有1.3G,而ArcGIS_Desktop_Tutorial_Data 數(shù)據(jù)包就有1.7G。本文在項目教學中處理的數(shù)據(jù)量達到數(shù)十TB。

      目前,GIS 商業(yè)軟件和開源軟件很多,GIS 二次開發(fā)語言所面臨的選擇也非常多,為此考察2021 年十大主流編程語言。根據(jù)最新的TIOBE 排行榜(TIOBE Index for October 2021)(www.tiobe.com),選取排名前十的編程語言進行分析,如表1所示。

      Table 1 Top ten major programming languages of TIOBE in 2021表1 2021年TIOBE十大主流程序設(shè)計語言

      在上述10 門編程語言中,C/C++直接操作內(nèi)存和硬件,具有極強的性能優(yōu)勢,適合專業(yè)程序員作為開發(fā)GIS平臺的系統(tǒng)級開發(fā)語言,但存在控制難度大、開發(fā)周期長等問題;Java 和C#具有現(xiàn)代編程語言的面向?qū)ο?、類型安全等?yōu)點,開發(fā)速度較快,適合開發(fā)界面豐富、業(yè)務(wù)流程復雜的商業(yè)程序;Visual Basic .NET 的功能與C#類似,但有逐漸邊緣化的趨勢;經(jīng)典的Visual Basic 最高版本為6.0,之后不再更新,由于網(wǎng)絡(luò)、數(shù)據(jù)庫等功能較弱,現(xiàn)在主流的GIS開發(fā)平臺不再支持。JavaScript 作為一種腳本語言,與瀏覽器交互效果好,適合作為前端展示,但并不適合算法開發(fā)、科學計算,絕大部分GIS 都不支持JavaScript 擴展其空間分析和大數(shù)據(jù)處理功能;SQL 是數(shù)據(jù)庫專用語言;PHP 作為服務(wù)器端執(zhí)行的腳本語言,適用于WebGIS 開發(fā)并嵌入HTML 中。Python 相對簡單易用,開發(fā)速度快;動態(tài)特性適合GIS 插件開發(fā),用以擴展功能;計算生態(tài)豐富,適合構(gòu)建以大數(shù)據(jù)為中心的高級應(yīng)用;在人工智能方面具有最好的支持;創(chuàng)新優(yōu)勢明顯,學習此門語言對進一步深造和開展科學研究具有很大幫助;該語言開源免費,不需要授權(quán),GIS 平臺對Python 的支持將會越來越豐富。因此,Python適合GIS數(shù)據(jù)分析,是GIS專業(yè)進行二次開發(fā)的首選語言。

      2.2 開發(fā)環(huán)境比較與選擇

      選定Python 作為GIS 二次開發(fā)語言后,分析目前主流的集成式開發(fā)環(huán)境(IDE,Integrated Development Environment)(見表2),根據(jù)GIS的特點進行優(yōu)選。

      Table 2 Comparison of mainstream Python IDEs表2 主流的Python IDE對比

      IDLE 由Python 軟件自帶,可以拿來即用,但綜合功能太弱,語法檢查、智能提示、斷點調(diào)試等提高生產(chǎn)力的功能幾乎不具備,效率極低,不合適作為GIS 二次開發(fā)的IDE;ArcGIS Python 窗口為ArcGIS 軟件自帶,可以拿來即用,適合入門學習;PyCharm 是專業(yè)的Python 開發(fā)工具,智能提示、自動完成、自動排版、代碼重構(gòu)、斷點調(diào)試等功能強大,可以快速提升開發(fā)效率,適合較為復雜的代碼;Visual Studio 非常龐大,而且收費,但開發(fā)功能強大,適合專業(yè)程序員;Visual Studio Code 屬于免費的輕量級開發(fā)環(huán)境,對Python 開發(fā)支持比較好,但手動配置難度較大,對初學者不太友好,適合比較專業(yè)的程序員;Jupyter Notebook 在瀏覽器運行,默認配置信息、文件和數(shù)據(jù)保存在系統(tǒng)盤,但在公共多媒體教室和公共計算機房出于對操作系統(tǒng)安全的考慮,對系統(tǒng)盤進行保護,在電腦重啟時將系統(tǒng)盤到恢復初始狀態(tài),默認保存在系統(tǒng)盤的數(shù)據(jù)和文件將會丟失,因此不適合安裝在公共機房,但由于瀏覽器的跨平臺特性,適合用于制作教學素材。

      3 大數(shù)據(jù)背景下GIS二次開發(fā)教學內(nèi)容設(shè)計

      3.1 需求分析

      以前,GIS 二次開發(fā)系統(tǒng)追求“信息系統(tǒng)的工作流、商業(yè)軟件的獨立界面、空間數(shù)據(jù)的可視化”,處理核心業(yè)務(wù)的程序代碼并不多。目前,相關(guān)科學技術(shù)發(fā)生深刻變革,GIS軟件繁多、算法成熟、應(yīng)用型顯著加強,開源GIS 工具(如GDAL、OGR)和軟件(QGIS、MapWindow)層出不窮。很多先進的算法,如人工智能軟件TensorFlow、森林景觀模型LandScape、景觀指數(shù)計算FragStats 等軟件得以廣泛使用,空間統(tǒng)計回歸、土地利用變化模擬、地理元胞自動機等算法都已經(jīng)較為成熟并集成到地理信息系統(tǒng)軟件中。GIS 提供了成熟的二三維一體化的可視化功能,界面和空間數(shù)據(jù)可視化不再是GIS 二次開發(fā)中需要關(guān)注的重點問題。例如,讀取空間數(shù)據(jù)的坐標系、對空間數(shù)據(jù)進行轉(zhuǎn)換等,只需要使用Python 調(diào)用API 即可,并不需要顯示空間數(shù)據(jù),也不需要打開GIS軟件。

      總之,目前GIS 二次開發(fā)的實踐重點發(fā)生了變化,貼上了開源開放、大數(shù)據(jù)、云計算、人工智能等標簽;腳本化和批處理成為自動化處理空間大數(shù)據(jù)必不可少的手段;如何快速提高生產(chǎn)力成為GIS二次開發(fā)亟需解決的問題。

      3.2 教學內(nèi)容

      科學技術(shù)和用戶需求的深刻變化,導致教學內(nèi)容必然發(fā)生變化,課程的教學大綱需要綜合優(yōu)化。很多傳統(tǒng)的GIS 二次開發(fā)流于表面,局限于常規(guī)的GIS 功能。例如,地圖的縮放、查詢、數(shù)據(jù)加載、要素編輯、專題圖制作、數(shù)據(jù)庫管理等,都是GIS 平臺提供的成熟功能。學習傳統(tǒng)的GIS二次開發(fā),可以做出一個帶有基本功能的GIS,但很難擴展現(xiàn)有系統(tǒng)功能,因而難以應(yīng)對大數(shù)據(jù)空間分析的核心挑戰(zhàn),對科學研究的意義不大。

      GIS 的外在表現(xiàn)是空間制圖,內(nèi)在基礎(chǔ)是數(shù)據(jù)管理,核心功能是空間分析。學習二次開發(fā)之后,應(yīng)該可以對已有功能進行集成,進行批處理;或者開發(fā)新算法,加入新功能。考慮到技術(shù)更迭和可持續(xù)發(fā)展,GIS 二次開發(fā)課程應(yīng)當適當具有前瞻性和引領(lǐng)性,“1+3”個面向,第一個是面向未來,而面向未來意味著面向大數(shù)據(jù),面向科學計算,面向人工智能。其邏輯關(guān)系是大數(shù)據(jù)是GIS 的血液,科學計算是處理空間大數(shù)據(jù)的方法,而其中人工智能是科學計算的重要組成部分。

      在“1+3”面向的思想指導下,將空間數(shù)據(jù)制圖、空間數(shù)據(jù)管理和空間分析的作為二次開發(fā)的核心內(nèi)容,使GIS 二次開發(fā)成為解決科學研究、生產(chǎn)工程、技術(shù)創(chuàng)新的有效手段。空間數(shù)據(jù)制圖主要是對地圖和圖層的基本操作,目的是實現(xiàn)大數(shù)據(jù)可視化、制圖自動化;數(shù)據(jù)管理是GIS 開發(fā)的基礎(chǔ),主要進行空間數(shù)據(jù)和屬性數(shù)據(jù)的存取,目的是對地理大數(shù)據(jù)進行管理,同時也是地理處理工具的入口;空間分析主要是調(diào)用工具對地理大數(shù)據(jù)進行批處理組件工作流,同時通過開發(fā)算法定制獨特的工具,GIS 二次開發(fā)內(nèi)容設(shè)置如表3 所示。各部分都有典型應(yīng)用案例,內(nèi)容循序漸進,逐步深入到GIS開發(fā)的核心[29]。

      Table 3 Content for GIS secondary development表3 GIS二次開發(fā)內(nèi)容設(shè)置

      對于GIS 平臺本身具有的基本功能(如地圖的縮放漫游操作)、必須手工操作實現(xiàn)更為方便的功能(如圖層符號化)、在計算生態(tài)中有比較成熟的解決方案的內(nèi)容(如土地利用轉(zhuǎn)移矩陣),就不再作為GIS開發(fā)的優(yōu)選內(nèi)容。

      4 GIS二次開發(fā)的痛點與對策

      GIS 二次開發(fā)的本質(zhì)是在精通GIS 原理、熟悉GIS 操作的基礎(chǔ)上,對GIS 平臺提供的API 進行合理調(diào)用的過程。API數(shù)量巨大、記憶負擔重、思維抽象、函數(shù)調(diào)用語法復雜、復現(xiàn)難,極易出錯。如果在編寫程序時需要反復查找API、記憶函數(shù)名稱、確認拼寫等,則需要花費大量時間,降低了開發(fā)流暢度,影響了開發(fā)效率,糟糕的開發(fā)體驗會給初學者造成較大壓力,使之失去進一步學習的信心和興趣。通過優(yōu)化課程體系設(shè)置,提高教學技巧,可提高初學者開發(fā)體驗,增強其學習的信心。

      4.1 課程體系設(shè)置

      以夯實基礎(chǔ)為目的,采用Python 作為“高級程序語言設(shè)計”“數(shù)據(jù)機構(gòu)和算法”“空間數(shù)據(jù)庫”的實施語言,逐步加深對Python 的理解,消除對Python 的恐懼心理。如果沒有前面的扎實基礎(chǔ),直接入手GIS 二次開發(fā),則很難靈活變通。大型GIS 平臺都采用了空間數(shù)據(jù)庫引擎,屏蔽了數(shù)據(jù)庫底層的物理結(jié)構(gòu),因而GIS 二次開發(fā)并不需要針對特定的空間數(shù)據(jù)庫修改教學大綱。

      4.2 教學設(shè)計技巧

      在教學設(shè)計上,通過自動代碼生成,探索式開發(fā),將常用代碼片段總結(jié)成模板,降低初學門檻,減輕記憶負擔。

      (1)自動式代碼生成。由于Python 窗口支持拖放式的自動生成代碼[29],拖放工具自動生成函數(shù),拖放數(shù)據(jù)自動生成參數(shù),基本不用記憶和查詢函數(shù)名稱和用法即可快速入門GIS二次開發(fā),即刻體驗開發(fā)的樂趣。

      以查詢某一要素類的個數(shù)為例[29]:在工具箱里找到Get Count,拖放到Python 窗口,會自動生成函數(shù),在內(nèi)容列表或目錄窗口拖放圖層或數(shù)據(jù),自動生成函數(shù)的參數(shù),如圖1所示。

      Fig.1 Code generation by dragging and dropping圖1 拖放式代碼生成

      (2)探索式程序開發(fā)。在現(xiàn)代面向?qū)ο蟮某绦蛟O(shè)計思想指導下,通過命名空間(模塊)、類、成員的層次結(jié)構(gòu),分類組織API,通過IDE 的上下文智能提示和自動完成,可以通覽對象成員,快速探索API;API 本身有許多列舉函數(shù),可以列舉出所有成員;Python 可以通過dir 函數(shù),查找出對象的所有成員。例如,for attr in dir(mxd):print(attr,getattr(mxd,attr)),可以列舉出地圖文檔mxd 的所有成員。利用這種探索式開發(fā)方式,邊學習邊擴充知識,快速熟悉更多的API。

      (3)模板式代碼片段。在GIS 二次開發(fā)過程中,有很多框架式代碼,只需要修改參數(shù),就可將其應(yīng)用于不同的場景。例如,下面的程序片段為獲取第一個圖層代碼,這是很多程序的入口,可以作為標準模版重復使用。

      將GIS二次開發(fā)的教學內(nèi)容和教學設(shè)計技巧整理成教材《基于Python 的ArcGIS 二次開發(fā)實驗實習教程》,已由武漢大學出版社出版[29]。

      5 GIS二次開發(fā)實踐項目案例與分析

      GIS 二次開發(fā)能顯著提升GIS 數(shù)據(jù)生產(chǎn)、加工效率和科研深度,能將科學思想迅速轉(zhuǎn)化為科研成果,產(chǎn)生經(jīng)濟產(chǎn)值和社會價值。在實際項目開發(fā)中,如果GIS 二次開發(fā)模式選擇合理、技術(shù)路線設(shè)計科學、技術(shù)人員經(jīng)驗豐富,則可以起到事半功倍的效果;反之,如果GIS 二次開發(fā)模式不合時宜、技術(shù)路線不科學、技術(shù)人員沉留于傳統(tǒng)的界面開發(fā)和功能組裝,缺少現(xiàn)代地理數(shù)據(jù)分析的觀念和技能,則事倍功半,甚至導致項目失敗。

      5.1 成功案例

      成功案例為“基于GIS 的不動產(chǎn)證制作系統(tǒng)”的開發(fā)。2014 年底,中央出臺《關(guān)于引導農(nóng)村土地經(jīng)營權(quán)有序流轉(zhuǎn)發(fā)展農(nóng)業(yè)適度規(guī)模經(jīng)營的意見》,提出用5 年時間基本完成土地承包經(jīng)營權(quán)確權(quán)登記頒證工作,共涉及2 838 個縣(市、區(qū))及開發(fā)區(qū)、3.4 萬個鄉(xiāng)鎮(zhèn)、55 萬多個行政村,15 億畝承包地的確權(quán)工作[30]。全國通過野外GNSS RTK 測量、無人機航拍、全站儀實測等多手段采集數(shù)據(jù);在機房利用ArcGIS、CASS for AutoCAD 等軟件繪制權(quán)屬地圖、建立空間數(shù)據(jù)庫[31]。農(nóng)村土地承包經(jīng)營權(quán)確權(quán)登記將農(nóng)村土地承包經(jīng)營權(quán)的承包關(guān)系、承包地塊、面積、空間位置、用途、地類、等級等情況記錄于專門的簿冊,這是明晰土地承包關(guān)系,強化對土地承包經(jīng)營權(quán)的物權(quán)保護,保持現(xiàn)有土地承包關(guān)系穩(wěn)定并長久不變的根本手段[17]。

      建立空間數(shù)據(jù)庫后,國家希望快速制作土地承包經(jīng)營權(quán)證書,提出“應(yīng)發(fā)盡發(fā)”的要求。在面臨著“數(shù)據(jù)量大、任務(wù)重、時間短、經(jīng)費低”的挑戰(zhàn)下,本文采用項目教學方式,承擔了數(shù)十個縣市的經(jīng)營權(quán)證書印制工作。具體技術(shù)路線是基于Python 語言,主要通過調(diào)用ArcGIS 的ArcPy 進行二次開發(fā),研制了“農(nóng)村土地承包經(jīng)營權(quán)證書系統(tǒng)”。該軟件讀取空間數(shù)據(jù)庫和Excel 數(shù)據(jù)表,通過空間分析動態(tài)調(diào)整出圖比例尺,批量生成精美、規(guī)范的土地承包經(jīng)營權(quán)證書,智能化程度高、適應(yīng)范圍廣,為保障2 億農(nóng)戶農(nóng)村土地承包經(jīng)營權(quán)證書的頒發(fā)提供了技術(shù)手段和應(yīng)用示范,在本地區(qū)本行業(yè)甚至在全國產(chǎn)生了較大影響力和示范作用。

      5.2 失敗案例

      失敗案例是一個“不動產(chǎn)確權(quán)登記中間數(shù)據(jù)庫”項目開發(fā)。2021 年,全國范圍實施“房地一體”確權(quán)登記工作,目的是對宗地和房屋進行權(quán)屬調(diào)查和高精度測繪,這是實施推進宅基地“三權(quán)分置”改革工作的基礎(chǔ),不動產(chǎn)統(tǒng)一登記的基本內(nèi)容。該項目在實施過程中綜合利用無人機航拍、權(quán)屬實地調(diào)查、地籍RTK 測量;利用Pix4D 制作正射影像、Context Capture 進行傾斜攝影三維建模;利用CAD、GIS等軟件制圖,所獲得數(shù)據(jù)的現(xiàn)勢性強、幾何精度高。2021年夏季,某縣自然資源局為了加快推動“房地一體”的實施,后期充分利用“房地一體”項目所獲得的寶貴數(shù)據(jù),擬建設(shè)“不動產(chǎn)確權(quán)登記中間數(shù)據(jù)庫”,項目經(jīng)費400 萬元,主要功能包括多源數(shù)據(jù)輸入、外業(yè)調(diào)查任務(wù)分配和進度跟蹤、調(diào)查數(shù)據(jù)質(zhì)量檢查、宅基地和房產(chǎn)統(tǒng)計、“一戶一宅”合法性分析,達到房產(chǎn)證“應(yīng)發(fā)盡發(fā)”的目的,滿足2021 年底房產(chǎn)證發(fā)放率達到80%的省控要求。

      “不動產(chǎn)確權(quán)登記中間數(shù)據(jù)庫”項目的技術(shù)負責方具有成功實施“地籍管理信息系統(tǒng)”的技術(shù)和經(jīng)驗,筆者作為合作方旁聽了研討會。如果此項目進展順利,將會引入為項目教學,讓教師和學生參與后期技術(shù)開發(fā)和數(shù)據(jù)處理。本項目采用的技術(shù)路線如下:在某著名的通用GIS 平臺基礎(chǔ)上,采用GIS 組件進行集成式二次開發(fā),開發(fā)語言采用C#,開發(fā)環(huán)境采用Visual Studio,空間數(shù)據(jù)庫采用Oracle。技術(shù)路線和軟件框架對接現(xiàn)有的“地籍管理信息系統(tǒng)”,可以大量使用現(xiàn)有的數(shù)據(jù)庫表結(jié)構(gòu)和“地籍管理信息系統(tǒng)”的功能和部分代碼。軟件開發(fā)時,將控件作為載體,以地圖查看和數(shù)據(jù)庫的“增刪改查”等常規(guī)內(nèi)容作為開發(fā)的切入點。項目開始幾周后,技術(shù)承擔單位還在進行GIS 基本功能開發(fā),進度太慢,遠不能滿足國家對“房地一體”項目時間節(jié)點的要求,開發(fā)的功能滿足不了“一戶一宅”分析的靈活性和功能的完備性要求,項目未能按計劃實施而失敗,造成較大損失。

      經(jīng)過分析,此項目的核心訴求是大數(shù)據(jù)分析。例如,“建筑面積超限、占地面積超限、宅基地數(shù)量超限、手續(xù)不全”等多種情況及其組合,均可導致不符合“一戶一宅”的要求,因此從軟件開發(fā)實踐上而言,“一戶多宅”情況難以窮舉。該項目除房產(chǎn)證發(fā)放屬于工作流外,其他功能需求本質(zhì)也屬于數(shù)據(jù)分析。在軟件功能過于復雜、難度較高、靈活性較強、不能準確確定開發(fā)邊界的前提下,采用Python 開發(fā)基本功能,GIS 分析員快速參與進來,通過腳本或者可視化建模組合功能,推動項目進展,是更好的設(shè)計思路。

      6 結(jié)語

      大數(shù)據(jù)分析具有很大的不確定性,包括數(shù)據(jù)的不確定、軟件功能的不確定、算法的不確定以及結(jié)論的不確定,因此是一個逐步優(yōu)化的過程。Python 語言由于簡明、動態(tài)、開源、適合于數(shù)據(jù)密集型和計算密集型任務(wù),與人工智能結(jié)合緊密、計算生態(tài)豐富,為GIS 二次開發(fā)的首選語言。GIS 軟件廠商對Python 的支持越來越好,上下文智能提示、自動代碼生成、斷點調(diào)試等高級功能可以顯著提升開發(fā)效率,提升開發(fā)流暢度。GIS 二次開發(fā)入門推薦使用內(nèi)置的Python Window;而后面的課程綜合實習、項目教學實訓適合采用PyCharm 進行較大規(guī)模的代碼開發(fā);教學視頻課程制作可以采用Jupyter Notebook,這是因為Jupyter Notebook在瀏覽器里運行,在不同平臺的操作和表現(xiàn)比較一致。

      為了應(yīng)對GIS 二次開發(fā)入門難、精通難的痛點,在專業(yè)課程體系設(shè)置上,建議采用Python 作為高級程序語言設(shè)計、數(shù)據(jù)機構(gòu)和算法、空間數(shù)據(jù)庫的實施語言,先夯實基礎(chǔ)。通過代碼自動生成,減輕記憶和拼寫負擔,可以快速入門GIS 二次開發(fā);探索式開發(fā)方式可以讓學生在學習過程中快速熟悉API,為可持續(xù)學習提供了切實可行的方法;優(yōu)化的工作流代碼模板是一些典型任務(wù)總結(jié)出來的代碼片段,可以拿來即用,快速提高項目開發(fā)效率。

      使用Python 進行二次開發(fā),適合于GIS 數(shù)據(jù)分析人員,除能夠顯著提升開發(fā)效率、降低開發(fā)難度外,還有一個重要的優(yōu)勢是能利用原GIS 平臺的基礎(chǔ)設(shè)施和擴展特性。例如,在進行不動產(chǎn)證制作時,只需使用Python 調(diào)用API開發(fā)出單個證書制作的地理處理工具;當需要對大量數(shù)據(jù)進行處理時,可以利用GIS 平臺提供的模型構(gòu)建器,通過迭代數(shù)據(jù)庫和數(shù)據(jù)集進行批處理。由于腳本的靈活性,功能可以隨時修改和擴充;鑒于GIS 平臺的基礎(chǔ)設(shè)施和擴展特性,GIS 分析師可以盡早參與到項目中,輔助軟件開發(fā)過程,通過模型構(gòu)建器組合不同的地理處理工具,應(yīng)用不同的策略和工作流進行數(shù)據(jù)分析,這是應(yīng)對大數(shù)據(jù)挑戰(zhàn)極為有效的手段。

      在教學資料方面,目前GIS 操作應(yīng)用類教材層出不窮,GIS 二次開發(fā)的教材較少,而且主要以是傳統(tǒng)的組件式開發(fā)內(nèi)容居多,GIS 二次開發(fā)的視頻類教程更是稀缺。未來將進一步完善大數(shù)據(jù)背景下的GIS 二次開發(fā)教材,制作對應(yīng)的教學視頻,及時進行科學計算并構(gòu)建人工智能模型,為應(yīng)對地理大數(shù)據(jù)分析提供理論支撐和項目教學實踐參考。

      猜你喜歡
      二次開發(fā)數(shù)據(jù)庫功能
      也談詩的“功能”
      中華詩詞(2022年6期)2022-12-31 06:41:24
      淺談基于Revit平臺的二次開發(fā)
      甘肅科技(2020年20期)2020-04-13 00:30:02
      淺談Mastercam后處理器的二次開發(fā)
      模具制造(2019年3期)2019-06-06 02:11:02
      西門子Easy Screen對倒棱機床界面二次開發(fā)
      關(guān)于非首都功能疏解的幾點思考
      數(shù)據(jù)庫
      財經(jīng)(2017年2期)2017-03-10 14:35:35
      數(shù)據(jù)庫
      財經(jīng)(2016年15期)2016-06-03 07:38:02
      數(shù)據(jù)庫
      財經(jīng)(2016年3期)2016-03-07 07:44:46
      數(shù)據(jù)庫
      財經(jīng)(2016年6期)2016-02-24 07:41:51
      中西醫(yī)結(jié)合治療甲狀腺功能亢進癥31例
      民县| 邵武市| 柯坪县| 丘北县| 石棉县| 白山市| 阜平县| 舟山市| 新野县| 永修县| 平塘县| 宜兰县| 乐平市| 永善县| 南皮县| 乌兰察布市| 和平县| 游戏| 板桥市| 左云县| 若尔盖县| 岗巴县| 崇义县| 衡阳县| 盖州市| 庆城县| 邵阳县| 江口县| 宝应县| 吉隆县| 津市市| 苏尼特右旗| 交城县| 长沙市| 蕉岭县| 佛学| 开远市| 武乡县| 和平县| 靖宇县| 汨罗市|