APP下载

空间大数据时代GIS二次开发的教学改革研究与实践

2023-09-15谢小魁魏金占

软件导刊 2023年9期
关键词:二次开发数据库功能

谢小魁,魏金占,林 卉

(1.北部湾大学 资源与环境学院,广西 钦州 535011;2.桂林航天工业学院 电子信息与自动化学院,广西 桂林 541004)

0 引言

GIS 在中国得到快速发展,目前已在科学研究、智慧城市建设、互联网+智慧行业等行业取得了显著成效。2011年5 月,国家测绘局更名为国家测绘地理信息局[1],同年7月,中国地理信息系统协会更名为中国地理信息产业协会[2],标志着测绘、地理、信息和产业在中国的融合,反映了国家对GIS产业化发展之路的重视。

随着GIS 产业的快速发展,社会对GIS 人才的需求量持续增加。通常,GIS 专业的就业岗位主要分为GIS 应用操作和GIS 软件开发,而后一种是更加热门的就业领域[3]。国土[4]、农林[5]、地质[6]、城市规划[7]、水利[8]、医学[9]等多个行业对GIS 二次开发均有广泛需求。对62 家地理信息相关单位的用人需求进行调查发现[10],超过一半的用人单位(33 家)要求熟悉COM 开发技术,掌握ArcEngine、MapObjects、MapX 或SuperMap Objects 等常见的GIS 开发平台或开发组件。“51job”“智联招聘”“3S 招聘网”三大招聘网站数据显示,在GIS 类别的岗位中,软件开发技术需求量最大[11],将来较长一段时间内GIS 二次开发需求将会居高不下。

GIS 二次开发是测绘工程、地理信息科学、地理信息工程等专业本科生和研究生必修的一门核心课程[12],一致认为这是由专业课程体系和应用型人才的社会需求共同决定。相关研究较多,研究角度涉及从产业型人才培养模式[3]、社会需求角度[11]、GIS 开发竞赛[13-14]等方面;培养专业分别从地理信息科学[15]、城建类[13]、农业资源与环境专业[16]等专业出发,分析不同专业对GIS 二次开发人才的特定需求;在开发平台和实践教学上,主要选择ArcEngine[14,17-18]、Map Objects[17,19]和MapX[17]等传统的COM GIS;应用案例上,选择了三维数字校园系统[20]、动态追踪[19]、土地承包经营权[18]等。由于涉及内容广泛,包括离散数学、程序设计语言、数据结构和算法、数据库、遥感影像处理、地图编绘等多个专业课程[3],应用性强,动手能力要求高,大部分学生对此课程缺乏信心和兴趣,普遍认为这门课程难度较大。

随着地理大数据激增、人工智能快速发展、社会精细管理等方面的冲击,社会对GIS 专业人才知识结构和动手能力的需求发生了极大变化。一些学者认为,当前国内GIS 二次开发的课程内容和结构体系比较陈旧,GIS 开发模式和教学重点相对落后[3,11-12,21-23],已不能满足大数据和人工智能背景下GIS 人才培养需求。大数据需求背景下,如何设计GIS 二次开发课程教学模式、教学内容和教学方法等,降低GIS 二次开发课程学习难度,提升学生学习兴趣,促使学生适应新形势下社会和行业发展需求,是GIS二次开发教学改革面临的重要问题。

1 传统GIS二次开发模式面临的挑战

1.1 传统GIS二次开发方式

根据内容可将GIS 分为工具型GIS 和应用型GIS 两大基本类型[24]。对于大多数非GIS 专业的普通用户而言,工具型GIS 平台功能复杂、难以掌握,应用型GIS 更能满足特定行业应用需求,市场上对应用型GIS 的需求大大超过工具型GIS。应用型GIS 一般是利用高级程序设计语言(如Python、C#、Java、C++等),在工具型地理信息系统平台(如SuperMap、MapGIS、ArcGIS、MapInfo、QGIS 等)基础上进行二次开发而来。

GIS 二次开发模式主要包括单纯二次开发和集成二次开发[3,24-25],或者宿主型开发和组件式开发两大类[21]。“单纯二次开发”又叫宿主型二次开发,通过使用GIS 平台的脚本语言实现。在过去,大多数GIS 平台提供了自己的二次开发语言。如ESRI ArcView 有Avenue[26],ArcGIS 早期支持VBA,MapInfo Professional 提供了MapBasic 语言、MGE提供了MDL[24]。这种开发方式难度低,可以快速扩充系统功能,程序稳定。“集成二次开发”又叫组件式开发,利用通用高级程序设计语言(C#、Java、C++等),通过调用GIS可视化控件实现,大部分功能都绑定到GIS 控件。例如,ArcGIS 早期提供MapObjects 组件,后来产生ArcObjects 和ArcEngine 组件;MapInfo 早期拥有MapX,后期发布了MapXtreme;SuperMap 的SuperMap Objects 简单易用。此种方式对专业程序员比较友好,只需利用熟悉的通用高级程序设计语言和集成开发环境即可开发,具有投入成本低、开发速度快、容易集成业务工作流、开发出来的程序界面漂亮、易于商业化等优点。

随着信息技术和GIS 的发展,GIS 二次开发的内涵和外延也随着发生变化。其他的GIS 二次开发模式还包括Web API 二次开发和开源二次开发[21]。Web API 开发通过调用网络服务实现,主要用于互联网电子地图服务和公众电子地图展示,但空间分析功能较弱;开源二次开发基于优秀的开源GIS 平台(如NASA WorldWind、MapWindow、QGIS 等),通过修改、优化和扩展源代码实现。

1.2 新时期的挑战

技术层面上,随着卫星定位、摄影测量和遥感、机载激光雷达和无人船等技术的快速发展和广泛应用,空间数据的采集手段越来越多、成本越来越低、效率越来越高。政策层面上,随着“一带一路”倡议的提出和“精准扶贫”“西气东输”“南水北调”等重大工程的实施,国家进行了地理国情普查、第三次土地调查、林业调查、草业资源清查等全国范围的空间信息项目,积累了大量的空间数据。2022 年2 月16 日,国务院印发《关于开展第三次全国土壤普查的通知》,决定自2022 年起利用4 年时间完成第三次全国土壤普查,调查方案将基于RS 和GIS 制定,数据采集利用GNSS进行定位,成果采用GIS管理。

社会对地理数据的需求发生了极大变化,表现为数据需求量大、计算密集型高、实时性强、业务流程繁多、专业模型复杂、智能化程度要求高。例如,疫情防控的健康码、行程卡分析,需要集成来自各种渠道的空间大数据,进行时空伴随分析,精准性和实时性要求都非常高。

目前,GIS 面临供给侧的地理大数据爆炸和需求侧的地理大数据需求的双重挑战,传统的GIS 二次开发方式在大数据面前显得力不从心。传统的宿主型二次开发使用特定脚本语言(如ArcView 的Avenue、ArcGIS 的VBA、Map-Info 的MapBasic),功能单一、互操作性差、难以跨平台、计算生态严重缺失。例如,即使曾经使用极为广泛的VBA,也很难开发出网络爬虫工具,而目前人们大量使用这种技术下载监测数据以打造物联网系统,这是大数据工程建设的重要组成部分。在传统的集成式开发中,GIS 组件一般作为窗体容器的可视化控件,所有功能都通过这些控件绑定,不能以微服务的形式提供网络和共享服务;如果同时使用多个GIS 平台的控件,则会占用较多硬件资源,导致其运行速度减慢,软件不稳定,容易崩溃,几乎不能与大数据开发框架集成,也就难以形成丰富的生态链。例如,进行高斯投影科学计算,不需要可视化,只需要坐标系转换功能即可,但在使用ArcGIS Engine 进行高斯投影计算时,也要安装全部的ArcGIS Engine。

同时,传统的GIS 二次开发难度较大。GIS 需要支持空间数据库,进行大量的空间分析,因此其规模和复杂程度要远高于普通的信息管理系统(MIS)或统计分析系统(例如SPSS)。开发人员需要掌握二次开发基本原理、组件技术基础,掌握GIS 数据生产、数据分析、数据库设计、系统设计、程序实现的全过程[27],也需要学习操作系统、离散数学、数据结构和算法、空间数据库、软件工程等基础课程[24]。教学内容中的算法、代码编写占很大比例,GIS 空间分析的代码贡献较少,开发人员珍贵,人才奇缺。例如,ArcEngine、MapObjects、MapX 均基于组件技术[23,28],非常晦涩难懂。并且,在使用ArcGIS Engine 时需要大量使用强制类型转化,IDE 无法进行智能提示,编译器无法进行类型检查。

1.3 大数据背景下GIS二次开发的必要性

GIS 二次开发课程是地理信息系统专业的核心课程之一,具有很强的技术性、应用性和实践性。在过去,集成式组件开发(控件开发)是大部分GIS 二次开发的首选方式,开发人员利用自己熟悉的编程语言(例如C#、Java)进行编程,速度快、方式灵活。然而,这种开发方式其实很难满足大数据背景下的现实需求,具体表现如下:①GIS 控件往往只包括原系统平台的少部分功能,一些复杂的地理分析难以实现,而地理分析是GIS 的核心。例如ArcToolbox 是ArcGIS 的核心,利用Arcpy 调用ArcToolbox 进行空间分析是解决复杂空间问题的重要方法,但如果用户使用传统MapObjects、ArcEngine 进行二次开发,则根本不可能实现类似ArcToolbox 的功能;②集成式开发技术需要精通的C#或其他高级程序设计语言,这对大部分GIS 数据分析人员而言过于复杂,导致开发人员紧缺,时间急迫,开发人员日夜加班成常态,但熟练的GIS 技术员和分析工程师却帮不上忙,难以满足大型GIS 工程项目和政府政绩的周期和时间节点要求;③基于GIS 控件开发独立的程序,需要从零开始搭建程序框架,意味着缺少成熟商业软件特有的基础设施、多源数据和多数据库的支持、空间分析功能等基本且重要的功能,基本不具有扩展性。

2 变革背景下的GIS二次开发语言与环境

2.1 开发语言比较与选择

GIS 二次开发所选择的语言应该是发展变化的,能适应现代程序设计主流(例如云计算),有较强的大数据处理能力。例如,ArcGIS for Desktop 10.8 软件安装包大小只有1.3G,而ArcGIS_Desktop_Tutorial_Data 数据包就有1.7G。本文在项目教学中处理的数据量达到数十TB。

目前,GIS 商业软件和开源软件很多,GIS 二次开发语言所面临的选择也非常多,为此考察2021 年十大主流编程语言。根据最新的TIOBE 排行榜(TIOBE Index for October 2021)(www.tiobe.com),选取排名前十的编程语言进行分析,如表1所示。

Table 1 Top ten major programming languages of TIOBE in 2021表1 2021年TIOBE十大主流程序设计语言

在上述10 门编程语言中,C/C++直接操作内存和硬件,具有极强的性能优势,适合专业程序员作为开发GIS平台的系统级开发语言,但存在控制难度大、开发周期长等问题;Java 和C#具有现代编程语言的面向对象、类型安全等优点,开发速度较快,适合开发界面丰富、业务流程复杂的商业程序;Visual Basic .NET 的功能与C#类似,但有逐渐边缘化的趋势;经典的Visual Basic 最高版本为6.0,之后不再更新,由于网络、数据库等功能较弱,现在主流的GIS开发平台不再支持。JavaScript 作为一种脚本语言,与浏览器交互效果好,适合作为前端展示,但并不适合算法开发、科学计算,绝大部分GIS 都不支持JavaScript 扩展其空间分析和大数据处理功能;SQL 是数据库专用语言;PHP 作为服务器端执行的脚本语言,适用于WebGIS 开发并嵌入HTML 中。Python 相对简单易用,开发速度快;动态特性适合GIS 插件开发,用以扩展功能;计算生态丰富,适合构建以大数据为中心的高级应用;在人工智能方面具有最好的支持;创新优势明显,学习此门语言对进一步深造和开展科学研究具有很大帮助;该语言开源免费,不需要授权,GIS 平台对Python 的支持将会越来越丰富。因此,Python适合GIS数据分析,是GIS专业进行二次开发的首选语言。

2.2 开发环境比较与选择

选定Python 作为GIS 二次开发语言后,分析目前主流的集成式开发环境(IDE,Integrated Development Environment)(见表2),根据GIS的特点进行优选。

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

IDLE 由Python 软件自带,可以拿来即用,但综合功能太弱,语法检查、智能提示、断点调试等提高生产力的功能几乎不具备,效率极低,不合适作为GIS 二次开发的IDE;ArcGIS Python 窗口为ArcGIS 软件自带,可以拿来即用,适合入门学习;PyCharm 是专业的Python 开发工具,智能提示、自动完成、自动排版、代码重构、断点调试等功能强大,可以快速提升开发效率,适合较为复杂的代码;Visual Studio 非常庞大,而且收费,但开发功能强大,适合专业程序员;Visual Studio Code 属于免费的轻量级开发环境,对Python 开发支持比较好,但手动配置难度较大,对初学者不太友好,适合比较专业的程序员;Jupyter Notebook 在浏览器运行,默认配置信息、文件和数据保存在系统盘,但在公共多媒体教室和公共计算机房出于对操作系统安全的考虑,对系统盘进行保护,在电脑重启时将系统盘到恢复初始状态,默认保存在系统盘的数据和文件将会丢失,因此不适合安装在公共机房,但由于浏览器的跨平台特性,适合用于制作教学素材。

3 大数据背景下GIS二次开发教学内容设计

3.1 需求分析

以前,GIS 二次开发系统追求“信息系统的工作流、商业软件的独立界面、空间数据的可视化”,处理核心业务的程序代码并不多。目前,相关科学技术发生深刻变革,GIS软件繁多、算法成熟、应用型显著加强,开源GIS 工具(如GDAL、OGR)和软件(QGIS、MapWindow)层出不穷。很多先进的算法,如人工智能软件TensorFlow、森林景观模型LandScape、景观指数计算FragStats 等软件得以广泛使用,空间统计回归、土地利用变化模拟、地理元胞自动机等算法都已经较为成熟并集成到地理信息系统软件中。GIS 提供了成熟的二三维一体化的可视化功能,界面和空间数据可视化不再是GIS 二次开发中需要关注的重点问题。例如,读取空间数据的坐标系、对空间数据进行转换等,只需要使用Python 调用API 即可,并不需要显示空间数据,也不需要打开GIS软件。

总之,目前GIS 二次开发的实践重点发生了变化,贴上了开源开放、大数据、云计算、人工智能等标签;脚本化和批处理成为自动化处理空间大数据必不可少的手段;如何快速提高生产力成为GIS二次开发亟需解决的问题。

3.2 教学内容

科学技术和用户需求的深刻变化,导致教学内容必然发生变化,课程的教学大纲需要综合优化。很多传统的GIS 二次开发流于表面,局限于常规的GIS 功能。例如,地图的缩放、查询、数据加载、要素编辑、专题图制作、数据库管理等,都是GIS 平台提供的成熟功能。学习传统的GIS二次开发,可以做出一个带有基本功能的GIS,但很难扩展现有系统功能,因而难以应对大数据空间分析的核心挑战,对科学研究的意义不大。

GIS 的外在表现是空间制图,内在基础是数据管理,核心功能是空间分析。学习二次开发之后,应该可以对已有功能进行集成,进行批处理;或者开发新算法,加入新功能。考虑到技术更迭和可持续发展,GIS 二次开发课程应当适当具有前瞻性和引领性,“1+3”个面向,第一个是面向未来,而面向未来意味着面向大数据,面向科学计算,面向人工智能。其逻辑关系是大数据是GIS 的血液,科学计算是处理空间大数据的方法,而其中人工智能是科学计算的重要组成部分。

在“1+3”面向的思想指导下,将空间数据制图、空间数据管理和空间分析的作为二次开发的核心内容,使GIS 二次开发成为解决科学研究、生产工程、技术创新的有效手段。空间数据制图主要是对地图和图层的基本操作,目的是实现大数据可视化、制图自动化;数据管理是GIS 开发的基础,主要进行空间数据和属性数据的存取,目的是对地理大数据进行管理,同时也是地理处理工具的入口;空间分析主要是调用工具对地理大数据进行批处理组件工作流,同时通过开发算法定制独特的工具,GIS 二次开发内容设置如表3 所示。各部分都有典型应用案例,内容循序渐进,逐步深入到GIS开发的核心[29]。

Table 3 Content for GIS secondary development表3 GIS二次开发内容设置

对于GIS 平台本身具有的基本功能(如地图的缩放漫游操作)、必须手工操作实现更为方便的功能(如图层符号化)、在计算生态中有比较成熟的解决方案的内容(如土地利用转移矩阵),就不再作为GIS开发的优选内容。

4 GIS二次开发的痛点与对策

GIS 二次开发的本质是在精通GIS 原理、熟悉GIS 操作的基础上,对GIS 平台提供的API 进行合理调用的过程。API数量巨大、记忆负担重、思维抽象、函数调用语法复杂、复现难,极易出错。如果在编写程序时需要反复查找API、记忆函数名称、确认拼写等,则需要花费大量时间,降低了开发流畅度,影响了开发效率,糟糕的开发体验会给初学者造成较大压力,使之失去进一步学习的信心和兴趣。通过优化课程体系设置,提高教学技巧,可提高初学者开发体验,增强其学习的信心。

4.1 课程体系设置

以夯实基础为目的,采用Python 作为“高级程序语言设计”“数据机构和算法”“空间数据库”的实施语言,逐步加深对Python 的理解,消除对Python 的恐惧心理。如果没有前面的扎实基础,直接入手GIS 二次开发,则很难灵活变通。大型GIS 平台都采用了空间数据库引擎,屏蔽了数据库底层的物理结构,因而GIS 二次开发并不需要针对特定的空间数据库修改教学大纲。

4.2 教学设计技巧

在教学设计上,通过自动代码生成,探索式开发,将常用代码片段总结成模板,降低初学门槛,减轻记忆负担。

(1)自动式代码生成。由于Python 窗口支持拖放式的自动生成代码[29],拖放工具自动生成函数,拖放数据自动生成参数,基本不用记忆和查询函数名称和用法即可快速入门GIS二次开发,即刻体验开发的乐趣。

以查询某一要素类的个数为例[29]:在工具箱里找到Get Count,拖放到Python 窗口,会自动生成函数,在内容列表或目录窗口拖放图层或数据,自动生成函数的参数,如图1所示。

Fig.1 Code generation by dragging and dropping图1 拖放式代码生成

(2)探索式程序开发。在现代面向对象的程序设计思想指导下,通过命名空间(模块)、类、成员的层次结构,分类组织API,通过IDE 的上下文智能提示和自动完成,可以通览对象成员,快速探索API;API 本身有许多列举函数,可以列举出所有成员;Python 可以通过dir 函数,查找出对象的所有成员。例如,for attr in dir(mxd):print(attr,getattr(mxd,attr)),可以列举出地图文档mxd 的所有成员。利用这种探索式开发方式,边学习边扩充知识,快速熟悉更多的API。

(3)模板式代码片段。在GIS 二次开发过程中,有很多框架式代码,只需要修改参数,就可将其应用于不同的场景。例如,下面的程序片段为获取第一个图层代码,这是很多程序的入口,可以作为标准模版重复使用。

将GIS二次开发的教学内容和教学设计技巧整理成教材《基于Python 的ArcGIS 二次开发实验实习教程》,已由武汉大学出版社出版[29]。

5 GIS二次开发实践项目案例与分析

GIS 二次开发能显著提升GIS 数据生产、加工效率和科研深度,能将科学思想迅速转化为科研成果,产生经济产值和社会价值。在实际项目开发中,如果GIS 二次开发模式选择合理、技术路线设计科学、技术人员经验丰富,则可以起到事半功倍的效果;反之,如果GIS 二次开发模式不合时宜、技术路线不科学、技术人员沉留于传统的界面开发和功能组装,缺少现代地理数据分析的观念和技能,则事倍功半,甚至导致项目失败。

5.1 成功案例

成功案例为“基于GIS 的不动产证制作系统”的开发。2014 年底,中央出台《关于引导农村土地经营权有序流转发展农业适度规模经营的意见》,提出用5 年时间基本完成土地承包经营权确权登记颁证工作,共涉及2 838 个县(市、区)及开发区、3.4 万个乡镇、55 万多个行政村,15 亿亩承包地的确权工作[30]。全国通过野外GNSS RTK 测量、无人机航拍、全站仪实测等多手段采集数据;在机房利用ArcGIS、CASS for AutoCAD 等软件绘制权属地图、建立空间数据库[31]。农村土地承包经营权确权登记将农村土地承包经营权的承包关系、承包地块、面积、空间位置、用途、地类、等级等情况记录于专门的簿册,这是明晰土地承包关系,强化对土地承包经营权的物权保护,保持现有土地承包关系稳定并长久不变的根本手段[17]。

建立空间数据库后,国家希望快速制作土地承包经营权证书,提出“应发尽发”的要求。在面临着“数据量大、任务重、时间短、经费低”的挑战下,本文采用项目教学方式,承担了数十个县市的经营权证书印制工作。具体技术路线是基于Python 语言,主要通过调用ArcGIS 的ArcPy 进行二次开发,研制了“农村土地承包经营权证书系统”。该软件读取空间数据库和Excel 数据表,通过空间分析动态调整出图比例尺,批量生成精美、规范的土地承包经营权证书,智能化程度高、适应范围广,为保障2 亿农户农村土地承包经营权证书的颁发提供了技术手段和应用示范,在本地区本行业甚至在全国产生了较大影响力和示范作用。

5.2 失败案例

失败案例是一个“不动产确权登记中间数据库”项目开发。2021 年,全国范围实施“房地一体”确权登记工作,目的是对宗地和房屋进行权属调查和高精度测绘,这是实施推进宅基地“三权分置”改革工作的基础,不动产统一登记的基本内容。该项目在实施过程中综合利用无人机航拍、权属实地调查、地籍RTK 测量;利用Pix4D 制作正射影像、Context Capture 进行倾斜摄影三维建模;利用CAD、GIS等软件制图,所获得数据的现势性强、几何精度高。2021年夏季,某县自然资源局为了加快推动“房地一体”的实施,后期充分利用“房地一体”项目所获得的宝贵数据,拟建设“不动产确权登记中间数据库”,项目经费400 万元,主要功能包括多源数据输入、外业调查任务分配和进度跟踪、调查数据质量检查、宅基地和房产统计、“一户一宅”合法性分析,达到房产证“应发尽发”的目的,满足2021 年底房产证发放率达到80%的省控要求。

“不动产确权登记中间数据库”项目的技术负责方具有成功实施“地籍管理信息系统”的技术和经验,笔者作为合作方旁听了研讨会。如果此项目进展顺利,将会引入为项目教学,让教师和学生参与后期技术开发和数据处理。本项目采用的技术路线如下:在某著名的通用GIS 平台基础上,采用GIS 组件进行集成式二次开发,开发语言采用C#,开发环境采用Visual Studio,空间数据库采用Oracle。技术路线和软件框架对接现有的“地籍管理信息系统”,可以大量使用现有的数据库表结构和“地籍管理信息系统”的功能和部分代码。软件开发时,将控件作为载体,以地图查看和数据库的“增删改查”等常规内容作为开发的切入点。项目开始几周后,技术承担单位还在进行GIS 基本功能开发,进度太慢,远不能满足国家对“房地一体”项目时间节点的要求,开发的功能满足不了“一户一宅”分析的灵活性和功能的完备性要求,项目未能按计划实施而失败,造成较大损失。

经过分析,此项目的核心诉求是大数据分析。例如,“建筑面积超限、占地面积超限、宅基地数量超限、手续不全”等多种情况及其组合,均可导致不符合“一户一宅”的要求,因此从软件开发实践上而言,“一户多宅”情况难以穷举。该项目除房产证发放属于工作流外,其他功能需求本质也属于数据分析。在软件功能过于复杂、难度较高、灵活性较强、不能准确确定开发边界的前提下,采用Python 开发基本功能,GIS 分析员快速参与进来,通过脚本或者可视化建模组合功能,推动项目进展,是更好的设计思路。

6 结语

大数据分析具有很大的不确定性,包括数据的不确定、软件功能的不确定、算法的不确定以及结论的不确定,因此是一个逐步优化的过程。Python 语言由于简明、动态、开源、适合于数据密集型和计算密集型任务,与人工智能结合紧密、计算生态丰富,为GIS 二次开发的首选语言。GIS 软件厂商对Python 的支持越来越好,上下文智能提示、自动代码生成、断点调试等高级功能可以显著提升开发效率,提升开发流畅度。GIS 二次开发入门推荐使用内置的Python Window;而后面的课程综合实习、项目教学实训适合采用PyCharm 进行较大规模的代码开发;教学视频课程制作可以采用Jupyter Notebook,这是因为Jupyter Notebook在浏览器里运行,在不同平台的操作和表现比较一致。

为了应对GIS 二次开发入门难、精通难的痛点,在专业课程体系设置上,建议采用Python 作为高级程序语言设计、数据机构和算法、空间数据库的实施语言,先夯实基础。通过代码自动生成,减轻记忆和拼写负担,可以快速入门GIS 二次开发;探索式开发方式可以让学生在学习过程中快速熟悉API,为可持续学习提供了切实可行的方法;优化的工作流代码模板是一些典型任务总结出来的代码片段,可以拿来即用,快速提高项目开发效率。

使用Python 进行二次开发,适合于GIS 数据分析人员,除能够显著提升开发效率、降低开发难度外,还有一个重要的优势是能利用原GIS 平台的基础设施和扩展特性。例如,在进行不动产证制作时,只需使用Python 调用API开发出单个证书制作的地理处理工具;当需要对大量数据进行处理时,可以利用GIS 平台提供的模型构建器,通过迭代数据库和数据集进行批处理。由于脚本的灵活性,功能可以随时修改和扩充;鉴于GIS 平台的基础设施和扩展特性,GIS 分析师可以尽早参与到项目中,辅助软件开发过程,通过模型构建器组合不同的地理处理工具,应用不同的策略和工作流进行数据分析,这是应对大数据挑战极为有效的手段。

在教学资料方面,目前GIS 操作应用类教材层出不穷,GIS 二次开发的教材较少,而且主要以是传统的组件式开发内容居多,GIS 二次开发的视频类教程更是稀缺。未来将进一步完善大数据背景下的GIS 二次开发教材,制作对应的教学视频,及时进行科学计算并构建人工智能模型,为应对地理大数据分析提供理论支撑和项目教学实践参考。

猜你喜欢

二次开发数据库功能
浅谈基于Revit平台的二次开发
浅谈Mastercam后处理器的二次开发
西门子Easy Screen对倒棱机床界面二次开发
关于非首都功能疏解的几点思考
中西医结合治疗甲状腺功能亢进症31例
辨证施护在轻度认知功能损害中的应用
基于Pro/E二次开发的推土铲参数化模块开发