袁小華 王令群 王振華 張書臺 張天蛟
摘要:基于開源技術的地理信息系統(GIS)開發能力,是“空間信息與數字技術專業”(空間專業)本科學生的重要就業能力。文章以培養空間專業學生開源GIS編程基礎為目標,利用該專業Java課程的實踐教學環節,對基于Java的開源GIS編程教學進行了初步探索,其中設計的教學案例、任務和項目,搭建的開源實踐教學平臺,以及采用的過程化考核,可為相關教學提供參考。
關鍵詞:Java程序設計;開源GIS編程;實踐教學;教學探索
中圖分類號:G642.41? ? ?文獻標志碼:A? ? ?文章編號:1674-9324(2019)40-0269-04
一、引言
本科計算機大類下的空間專業培養計算機技術和空間信息技術復合人才。隨著GIS行業技術的進步,GIS開發能力已成為空間專業畢業學生的重要就業能力,這需要空間專業有效開展開源GIS編程的教學。針對面向培養目標的程序設計教學,文獻[1]探討了Java教學中如何面向專業需求調整教學內容,文獻[2]建議在Java理論教學中設計貫穿全課程的GIS開發實例,并提出了B/S架構下基于AWT、Applet和Servlet技術的GIS編程教學方案,為空間專業開展GIS編程教學提供了方向。
目前,數據開源、工具開源和平臺開源逐漸成為GIS行業發展的一個重要趨勢[3,4];與B/S架構下的GIS開發相比,C/S架構下可實現更多GIS應用功能[5],涉及更多方法和技術;在開源GIS開發中,以GeoServer和GeoTools為主的開發平臺性能穩定,功能豐富,已占據主流地位[6,7];相比于其他語言,Java為開源軟件的開發提供完美支持[8];我校空間專業的Java相關課程實驗學時充足。綜合考慮各因素,在本校空間專業的Java課程中,基于GeoServer和GeoTools的開源實踐教學平臺,我們對如何開展C/S架構下的GIS編程實踐教學進行了初步探索,內容包括根據行業需求設定教學目標,確定以實踐為主的教學內容和教學模式,搭建開源實踐教學平臺,設計和實施相關教學案例、實踐任務和項目,并對各個教學環節進行過程化考核。本文介紹了相關探索結果。
二、教學過程
(一)教學目標與教學內容
針對行業的開源GIS開發人才需求,我們將本專業的GIS編程教學目標設定為:通過理論和實踐教學,培養學生的開源GIS編程基礎,從而為進入行業早做準備。該教學目標決定了本專業GIS編程教學:內容應以相關基礎知識和主流開源GIS技術為主,形式應以實踐教學為主,實踐平臺須采用主流開源軟件搭建,須以Java課程為主要支撐課程,考核方式應以檢查實踐任務和項目的完成情況為主。本專業的“Java程序設計基礎”和“Java課程設計”為配套課程,相繼在大二下期和其后的小學期內開設,兩課共含52個實踐學時,此外,在“Java程序設計基礎”課程的后期,學生也已掌握了Java的GUI編程和數據庫連接編程基礎,因此在本專業Java課程中開展以實踐為主的GIS編程教學,具備有利條件。依據課程目標和相關,我們設定了四項GIS編程教學內容,前三項安排在“Java程序設計基礎”的后3周,第四項安排在“Java課程設計”中。各教學內容的教學任務是:教學內容1介紹GIS系統開發的理論基礎;教學內容2和3對空間數據管理、數據服務發布等進行實踐;教學內容4是對GIS編程(C/S模式)的綜合實踐,是教學重點。各教學內容的具體設計見下表1。
為從“Java課程設計”中騰出實踐課時,該課程中原有的三類實踐項目僅保留GUI編程實踐部分,其余的WWW與Web Service網絡編程實踐,以及數據庫連接實踐,因分別會在“網絡綜合實訓”課程(大三小學期,64課時)和“數據庫實踐”課程(與“Java課程設計”同期且同課時)中重點開設,所以都不再保留。
(二)教學模式與教學方法
依據教學內容和學生基礎而采取合適的教學模式與教學方法,可提高教學效率[9-11]。GIS編程教學以實踐教學為主,在其中我們針對具體教學內容,分別采用了案例驅動教學法[6]、任務驅動教學法[10]和項目教學法[10,11]。具體為:在教學內容1中,基于案例介紹基于Java的開源GIS開發流程、主流GIS服務器和GIS開發插件;在教學內容2中,先示范開源數據庫中空間數據的建立和管理,然后讓學生完成相關實踐任務;在教學內容3中,先結合案例介紹基于開源GIS服務器和開源插件的空間數據管理和訪問方法,并分析關鍵代碼,然后讓學生完成相關的實踐任務,為小學期中的GIS編程綜合實踐做準備;在教學內容4中,學生以分組形式完成開源GIS編程綜合實踐項目。
(三)案例、任務與項目設計
在GIS編程教學的案例、任務和項目的設計中,我們注意了案例的整體性、任務的目的性和項目的設計性[9]。具體為:案例1是對我國陸界的展示,在教學內容1和3中使用。其中:在教學內容1中著重演示我國陸界空間數據的存儲和發布;在教學內容3中著重演示陸界空間數據展示中對開源GIS插件的依賴管理,以及本地和GIS服務器空間數據的訪問和展示過程。任務1是空間數據庫建立實踐。該任務要求學生在應用開源數據庫的空間數據擴展功能,對點、線和面空間數據進行生成和管理。任務2是空間數據訪問實踐。教師在演示案例1中GIS服務器的空間數據管理和發布,以及開源GIS插件的空間數據訪問后,該任務要求學生搭建實踐平臺,并完成對本地和GIS服務器空間數據的訪問。項目1是C/S架構下的GIS編程綜合實踐。該項目要求學生以分組形式,選定一個空間數據專題,進行GIS開發的功能設計、空間數據的準備、GIS服務器的數據存儲與發布,以及在C/S架構下的空間數據訪問實現。
(四)實踐教學平臺
在GIS編程的實踐教學中,我們依據行業主流和相互兼容的原則,采用合適的GIS服務器來定實踐平臺的整體架構,選擇與GIS服務器良好兼容的軟件搭建實踐平臺。具體為:在開源GIS服務器中,由于GeoServer擁有:是對OpenGIS規范的J2EE實現;允許Java程序通過調用GeoTools插件中的包,和以WCS、WMS、WFS等地理參考信息模型,對服務器上的空間數據進行查、增、刪和改;支持幾乎全部高級數據庫和上百種投影;能將空間數據輸出為多種圖形格式等突出優勢,因此我們選擇GeoServer(版本2.12.2)作為空間數據發布的服務器。
配合GeoServer服務器,我們采用JDK(版本1.8.0.6)作為實踐平臺的運行環境;選用Eclipse(版本為Kepler Service Release 1)作為IDE;采用MySQL(版本5.7)管理屬性和點線等空間數據;在Eclipse中分別加載JDBC插件(具體為mysql-connector-java-5.1.41)支持對MySQL的訪問,加載GeoTools(版本為18-SNAPSHOT)支持對GeoServer的訪問,加載Maven(版本4.4)管理程序對GeoTools中具體的包的依賴關系。
下面圖1顯示了GIS教學平臺中的軟件與插件的支撐關系,圖2顯示啟動GeoServer服務后的DOS界面,圖3顯示了在Eclipse中采用JMapFrame訪問并展示服務器上圖層時,通過Maven管理的6個GeoTools依賴包。
(五)考核方式
表1中的GIS編程教學內容前后相關聯,其中最后的實踐項目才是教學的核心,因此在教學中我們需要及時把握學生的學習情況,采用過程化考核方式,由階段有效性來保證教學整體的有效。具體為:GIS實踐任務的考核放在“Java程序設計基礎”中進行,形式是教師檢查學生提交的任務結果并按完成情況評分,每個任務滿分5分,計入“Java程序設計基礎”的上機成績。兩次GIS實踐任務的得分,還作為后面項目1中調整學生分組和選題的依據。項目1的考核放在“Java課程設計”結束時進行,形式是對分組項目(包括一個Java的GUI項目和項目1,各占總成績的60%和40%)組織一次集中答辯。各項目組都需要向全班匯報本組對項目所進行的問題分析、數據和功能設計、分工協作、代碼與運行等,并回答其他組和教師的提問,其他分組則對匯報組所述內容逐項評分,各組評分的平均分和教師對答辯組紙質報告的評分,以9∶1的比例匯總后,成為答辯組組長的項目得分,組內其他成員的項目得分,由其在分組中的排序逐次以5分遞減。
三、教學效果
在本院“空間專業”的兩門Java課程中,我們已實施了一輪上述GIS編程教學設計,教學內容全部安排在機房集中完成,課任教師全程指導實踐任務和項目。我們發現:學生對GIS編程學習積極主動,大多能完成實踐項目和任務,尤其是在項目1的完成中,各組基本上全天在一起討論、設計和編程;此外,學生還十分重視最后的集中答辯,各分組都能精心準備PPT和紙質報告,并由組內表達能力較強的同學進行匯報,從而保證了GIS編程教學設計的完成。下面圖4為案例1中展示的我國陸界,圖5到圖7是相關任務和項目的部分結果示例。
上面各圖的空間數據中,圖4中的來自GADM[12],圖6及圖7中(b)和(c)中的來自GeoServer[13],圖7中(a)的來自中國科學院資源環境數據中心[14]。
四、結論
在探討如何在“空間專業”開展基于Java的開源GIS編程教學中,我們整合了該專業兩門Java課程中的實踐課時,在其中添加了以實踐為主的開源GIS編程教學內容,設計和應用了GIS編程的相關案例、任務和項目,圍繞GeoServer搭建了開源的教學平臺,并對教學效果采用了過程化的考核,完成了培養學生開源GIS編程基礎的教學目標。目前我們對GIS編程的教學還限于C/S架構下空間數據的獲取和展示等基礎部分,在此基礎上,今后教學中還將繼續整合“空間專業”相關課程的實踐課時,以便能進一步結合GeoAPI,添加C/S架構下圖層的管理、要素處理和B/S架構下空間數據展示等更多內容,以及將MySQL替換為對空間坐標體系支持更好的PostgreSQL,以加強對學生開源GIS編程能力的培養。
參考文獻:
[1]唐光義,李繼革,張宏國.以專業方向為導向的JAVA教學方法探索[J].大學教育,2014,(14):117-118.
[2]黎華,張曉盼,龔珍.GIS專業的Java程序設計教學改革初探[J].測繪通報,2017,(4):145-148.
[3]李曉暉,博客園.GIS項目中數據開源、工具開源、開發開源的解決方案[EB/OL].https://www.cnblogs.com/naaoveGIS/p/4766728.html.
[4]GISEarth.開源GIS淺談[EB/OL].https://blog.csdn.net/happyduoduo1/article/category/6287948.
[5]張曉清,代興偉.B/S+C/S混合架構的環境地理信息系統的研究[J].蘭州工業高等專科學校學報,2010,17(4):5-8.
[6]郭鵬程,李廣宇.基于Geo Server的地學數據共享系統設計與實現[J].工程建設與設計,2017,(15),142-145.
[7]基于GeoTools的地圖服務快速發布系統研究[J].測繪與空間地理信息,2017,40(7):137-139,142.
[8]蔡文文,王少華,鐘耳順,胡辰璞,劉曉妮.跨平臺開源桌面GIS軟件的設計與實現[J].測控通報,2017,(1).
[9]索望,昌燕,何林波.CDIO模式下Java程序設計課程教學改革探索[J].計算機教育,2016,(9):111-114.
[10]李潔.基于任務驅動和項目引領的小組協作Java教學模式研究[J].柳州師專學報,2015,30(3):121-123.
[11]王飛雪.基于項目式的《Java程序設計》課程改革實踐[J].電腦與電信,2015,(10):38-39.
[12]GADM.Download GADM data[EB/Ol].https://www.gadm.org/download_country_v3.html,2018-4-12.
[13]中國科學院資源環境數據中心.雄安新區[EB/OL].http://www.resdc.cn/download.aspx?FileID=1066,2018-4-12.
[14]GeoServer.Downloads page[EB/OL].http://docs.geoserver.org/latest/en/user/_downloads/,2018-4-12.