国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

謝小魁,魏金占,林 卉

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

0 引言

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.1 開(kāi)發(fā)語(yǔ)言比較與選擇

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

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

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

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

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

Table 2 Comparison of mainstream Python IDEs表2 主流的Python IDE對(duì)比

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

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

3.1 需求分析

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

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

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

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

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

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

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

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

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

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

4.1 課程體系設(shè)置

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

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

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

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

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

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

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

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

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

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

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

5.1 成功案例

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

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

5.2 失敗案例

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

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

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

6 結(jié)語(yǔ)

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

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

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

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

猜你喜歡
二次開(kāi)發(fā)數(shù)據(jù)庫(kù)功能
淺談基于Revit平臺(tái)的二次開(kāi)發(fā)
淺談Mastercam后處理器的二次開(kāi)發(fā)
西門(mén)子Easy Screen對(duì)倒棱機(jī)床界面二次開(kāi)發(fā)
關(guān)于非首都功能疏解的幾點(diǎn)思考
中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
辨證施護(hù)在輕度認(rèn)知功能損害中的應(yīng)用
基于Pro/E二次開(kāi)發(fā)的推土鏟參數(shù)化模塊開(kāi)發(fā)