基于Java的开源GIS编程教学初探
摘要:基于开源技术的地理信息系统(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:///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:///download.aspx?FileID=1066,2018-4-12.
[14]GeoServer.Downloads page[EB/OL].http://docs.geoserver.org/latest/en/user/_downloads/,2018-4-12.
上一篇:《国有资产管理》课程教学改革研究
下一篇:管理类专业课程的多维教学模式运用