亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        謝小魁,魏金占,林 卉

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

        0 引言

        GIS 在中國得到快速發(fā)展,目前已在科學(xué)研究、智慧城市建設(shè)、互聯(lián)網(wǎng)+智慧行業(yè)等行業(yè)取得了顯著成效。2011年5 月,國家測繪局更名為國家測繪地理信息局[1],同年7月,中國地理信息系統(tǒng)協(xié)會更名為中國地理信息產(chǎn)業(yè)協(xié)會[2],標(biāo)志著測繪、地理、信息和產(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ī)學(xué)[9]等多個(gè)行業(yè)對GIS 二次開發(fā)均有廣泛需求。對62 家地理信息相關(guān)單位的用人需求進(jì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],將來較長一段時(shí)間內(nèi)GIS 二次開發(fā)需求將會居高不下。

        GIS 二次開發(fā)是測繪工程、地理信息科學(xué)、地理信息工程等專業(yè)本科生和研究生必修的一門核心課程[12],一致認(rèn)為這是由專業(yè)課程體系和應(yīng)用型人才的社會需求共同決定。相關(guān)研究較多,研究角度涉及從產(chǎn)業(yè)型人才培養(yǎng)模式[3]、社會需求角度[11]、GIS 開發(fā)競賽[13-14]等方面;培養(yǎng)專業(yè)分別從地理信息科學(xué)[15]、城建類[13]、農(nóng)業(yè)資源與環(huán)境專業(yè)[16]等專業(yè)出發(fā),分析不同專業(yè)對GIS 二次開發(fā)人才的特定需求;在開發(fā)平臺和實(shí)踐教學(xué)上,主要選擇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ù)學(xué)、程序設(shè)計(jì)語言、數(shù)據(jù)結(jié)構(gòu)和算法、數(shù)據(jù)庫、遙感影像處理、地圖編繪等多個(gè)專業(yè)課程[3],應(yīng)用性強(qiáng),動手能力要求高,大部分學(xué)生對此課程缺乏信心和興趣,普遍認(rèn)為這門課程難度較大。

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

        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 平臺功能復(fù)雜、難以掌握,應(yīng)用型GIS 更能滿足特定行業(yè)應(yīng)用需求,市場上對應(yīng)用型GIS 的需求大大超過工具型GIS。應(yīng)用型GIS 一般是利用高級程序設(shè)計(jì)語言(如Python、C#、Java、C++等),在工具型地理信息系統(tǒng)平臺(如SuperMap、MapGIS、ArcGIS、MapInfo、QGIS 等)基礎(chǔ)上進(jìn)行二次開發(fā)而來。

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

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

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

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

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

        目前,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),功能單一、互操作性差、難以跨平臺、計(jì)算生態(tài)嚴(yán)重缺失。例如,即使曾經(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ù);如果同時(shí)使用多個(gè)GIS 平臺的控件,則會占用較多硬件資源,導(dǎo)致其運(yùn)行速度減慢,軟件不穩(wěn)定,容易崩潰,幾乎不能與大數(shù)據(jù)開發(fā)框架集成,也就難以形成豐富的生態(tài)鏈。例如,進(jìn)行高斯投影科學(xué)計(jì)算,不需要可視化,只需要坐標(biāo)系轉(zhuǎn)換功能即可,但在使用ArcGIS Engine 進(jìn)行高斯投影計(jì)算時(shí),也要安裝全部的ArcGIS Engine。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        3.1 需求分析

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

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

        3.2 教學(xué)內(nèi)容

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

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

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

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

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

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

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

        4.1 課程體系設(shè)置

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

        4.2 教學(xué)設(shè)計(jì)技巧

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

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

        以查詢某一要素類的個(gè)數(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è)計(jì)思想指導(dǎo)下,通過命名空間(模塊)、類、成員的層次結(jié)構(gòu),分類組織API,通過IDE 的上下文智能提示和自動完成,可以通覽對象成員,快速探索API;API 本身有許多列舉函數(shù),可以列舉出所有成員;Python 可以通過dir 函數(shù),查找出對象的所有成員。例如,for attr in dir(mxd):print(attr,getattr(mxd,attr)),可以列舉出地圖文檔mxd 的所有成員。利用這種探索式開發(fā)方式,邊學(xué)習(xí)邊擴(kuò)充知識,快速熟悉更多的API。

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

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

        5 GIS二次開發(fā)實(shí)踐項(xiàng)目案例與分析

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

        5.1 成功案例

        成功案例為“基于GIS 的不動產(chǎn)證制作系統(tǒng)”的開發(fā)。2014 年底,中央出臺《關(guān)于引導(dǎo)農(nóng)村土地經(jīng)營權(quán)有序流轉(zhuǎn)發(fā)展農(nóng)業(yè)適度規(guī)模經(jīng)營的意見》,提出用5 年時(shí)間基本完成土地承包經(jīng)營權(quán)確權(quán)登記頒證工作,共涉及2 838 個(gè)縣(市、區(qū))及開發(fā)區(qū)、3.4 萬個(gè)鄉(xiāng)鎮(zhèn)、55 萬多個(gè)行政村,15 億畝承包地的確權(quán)工作[30]。全國通過野外GNSS RTK 測量、無人機(jī)航拍、全站儀實(shí)測等多手段采集數(shù)據(jù);在機(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)系,強(qiáng)化對土地承包經(jīng)營權(quán)的物權(quán)保護(hù),保持現(xiàn)有土地承包關(guān)系穩(wěn)定并長久不變的根本手段[17]。

        建立空間數(shù)據(jù)庫后,國家希望快速制作土地承包經(jīng)營權(quán)證書,提出“應(yīng)發(fā)盡發(fā)”的要求。在面臨著“數(shù)據(jù)量大、任務(wù)重、時(shí)間短、經(jīng)費(fèi)低”的挑戰(zhàn)下,本文采用項(xiàng)目教學(xué)方式,承擔(dān)了數(shù)十個(gè)縣市的經(jīng)營權(quán)證書印制工作。具體技術(shù)路線是基于Python 語言,主要通過調(diào)用ArcGIS 的ArcPy 進(jìn)行二次開發(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 失敗案例

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

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

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

        6 結(jié)語

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

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

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

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

        猜你喜歡
        二次開發(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對倒棱機(jī)床界面二次開發(fā)
        關(guān)于非首都功能疏解的幾點(diǎn)思考
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
        久久精品国产亚洲av四叶草| 免费 无码 国产在线观看不卡| 黄网站欧美内射| 久热综合在线亚洲精品 | 99久久超碰中文字幕伊人| 国产性感主播一区二区| 91久久精品国产综合另类专区| 亚洲av日韩av女同同性| 人妻体体内射精一区二区| 中国年轻丰满女人毛茸茸| 国产偷2018在线观看午夜| 久久综合久中文字幕青草| 亚洲高清国产成人精品久久| 三a级做爰片免费观看| 成年在线观看免费视频| 任你躁欧美一级在线精品免费| 一区二区av日韩免费| 亚洲激情一区二区三区视频| 在线一区二区三区国产精品| 人人爽人人爽人人爽人人片av| 巨爆乳中文字幕爆乳区| 蜜桃成人精品一区二区三区| 亚洲熟女一区二区三区250p| 色欲色香天天天综合vvv| 午夜亚洲www湿好爽| 国产精品亚洲国产| 久久99人妖视频国产| 宅男66lu国产在线观看| 午夜福利麻豆国产精品 | 日韩av在线不卡观看| 在线观看视频日本一区二区| 亚洲乱亚洲乱妇无码麻豆| 无遮无挡三级动态图| 久久精品国产亚洲av热一区| 澳门蜜桃av成人av| 亚洲av无码片vr一区二区三区| 国产精品亚洲五月天高清| av中文字幕在线资源网| 一区二区三区中文字幕在线播放| 人妻无码中文字幕| 久久天天爽夜夜摸|