DotSpatial开源GIS软件扩展研究-设计应用_第1页
DotSpatial开源GIS软件扩展研究-设计应用_第2页
DotSpatial开源GIS软件扩展研究-设计应用_第3页
DotSpatial开源GIS软件扩展研究-设计应用_第4页
DotSpatial开源GIS软件扩展研究-设计应用_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑DotSpatial开源GIS软件扩展研究-设计应用摘要:DotSpatial是一套基于。NetFramework4.0平台开发的开源GIS类库,整套类库用C#语言编写而成。本文介绍DotSpatial的架构及其扩展机制,根据其提供的模版扩展实现了DotSpatial对NetCDF数据的读取与渲染,这种扩展方法可以用来实现支持多种GIS数据。

1.引言

近年来GIS开源软件发展很快,DotSpatial是众多GIS开源软件中功能比较全面、扩展性比较好的一款,它提供空间数据的处理、分析、投影等功能。目前已有很多其他开源GIS软件使用DotSpatial提供的功能,但是DotSpatial存在着与其它开源软件相同的不足之处,比如开发文档及帮助资料少,对GIS数据格式的支持不够全面等。而传统的GIS商业软件虽然开发文档齐全,支持多种GIS数据格式,但是授权昂贵,并且安装占用大量的磁盘空间。由于商业因素,商业GIS软件源代码和关键算法受到严格保护,不利于学术研究。因此研究和完善开源GIS软件在学术和商业方面都有着重要意义,而DotSpatial是一个比较新的开源类库,目前对其研究的文章还很少。综合上述因素,本文介绍了DotSpatial的架构,深入研究了其提供的扩展机制,利用提供的模版扩展实现了DotSpatial对NetCDF数据的读取与渲染。这种扩展方法具有一定的通用性,可以用来实现让DotSpatial支持更多种类的GIS数据。

2.DotSpatial软件介绍

2.1DotSpatial构成

DotSpatial是一套基于。NetFramework4.0平台开发的开源GIS类库,整套类库是使用C#语言编写完成,以GNULGPL授权(GNULibraryGeneralPublicLicense)形式开放源代码,目前整个项目由几十个开发者共同维护,并且不断地有新的开发人员参其中。DotSpatial网址为,网站主要包括源代码、类库、说明文档、讨论区、主要开发者、授权文档等几个部分。

DotSpatial的类库可供其他程序直接调用,Mapwindow6、Hydrodesktop、Mad、AreaofReview、MarineLife等开源GIS软件使用了DotSpatial的类库提供的功能。为了让开发者迅速熟悉这套类库,提供了一个已经编译好的简易示例程序。该程序支持Shapefile文件,实现了缩放、平移等常见GIS操作,并且支持扩展。

2.2DotSpatial整个类库实现的功能

目前DotSpatial整个类库实现的功能包括:

①显示地图;②支持Shapefile,Bgd,以及其它常用的栅格数据和遥感影像数据;③渲染符号和标签;④支持动态投影和投影变换,WGS84为默认投影方式;⑤支持属性数据的编辑和显示;⑥支持空间分析,包括叠加分析、缓冲区分析、差值分析、空间统计等。⑦支持GPS格式数据。

DotSpatial很好的实现了功能模块化设计思想,方便开发者灵活定制程序。Dot-Spatial架构在设计时主要考虑了两个要素。首先是将用户界面部分与业务逻辑部分分离,其次是将各个模块编译到不同的DLL中,提高代码的利用率,并且做到无需加载整个类库就可使用部分功能。

3.DotSpatial扩展机制

DotSpatial提供了完善的扩展机制,允许开发者对其功能进行扩展。DotSpatial启动时会对根目录下的ApplicationExtensions子目录进行扫描,该目录下任何实现IExtension接口的DLL都会被加载到主程序中,加载完成后就可以使用DLL中的扩展功能。IExtension主要包含Activate和Deactivate和方法。DotSpatial启动时调用Activate方法,完成模版的初始化任务。方法Decative在卸载模版时被调用,实现卸载模版及资源清理功能。

为了方便开发人员进行扩展,DotSpatial提供了一个可以安装的插件模版(template),地址为:https://visualstudiogallery.

/92919cee-a2b0-43c6-8993-aeac965bc4b5,安装模版后,用VisualStudio新建项目时可以选择该模版,并在此基础上进行扩展开发。

模版提供了实现IExtension所需的基础代码,其中包含一个Extension基类和一个MyPlugin子类。Extension类实现了IExtension接口中的Activate和Deactivate方法,Plugin子类继承Extension父类,并且还有一个ButtonClick方法,可以。模版加载后会在DotSpatial的Extensions菜单中生成对应的菜单项,点击菜单会执行ButtonClick方法,主要的扩展功能可以在该方法中实现或由该方法调用其它方法实现。

4.DotSpatial扩展实例

4.1NetCDF简介

NetCDF(NetworkCommonDataForm)网络通用数据格式是由UCAR(UniversityCorporationforAtmosphericResearch)针对于科学数据的特点专门进行开发的一种开放的编码标准。由于其开放性、自描述性、平台独立性、高可用性等特点,目前已广泛应用于气象学、水文学、海洋学以及地理信息系统等诸多领域。已经有很多文章在NetCDF的实际应用方面做了深入研究,但是在扩展GIS软件实现支持NetCDF数据渲染方面的研究还不是很多。DotSpatial本身不支持NetCDF数据,我们通过前面介绍的模版编程实现DotSpatial渲染NetCDF数据。

DotSpatial原生支持ESRI的Bgd栅格数据,因此可以通过在内存中将NetCDF数据转换为Bgd的方式实现NetCDF数据的渲染。

NetCDF文件包含维(dimensions)、变量(variables)和属性(attributes)三种描述类型,每种类型都会被分配一个名字和一个ID,这些类型共同描述了一个数据集。

NetCDF库可以同时访问多个数据集,用ID来识别不同数据集。维表示变量维度信息,变量存储实际数据,属性表示变量或数据集本身的辅助信息,根据作用域可分为适用于整个文件的全局属性和适用于特定变量的局部属性,全局属性则描述了数据集的基本属性以及数据集的。NetCDF可在某一维进行追加,无需重新定义数据格式并复制原有数据,图1是一个NetCDF在Time维的增长示例,图2所示为转换NetCDF格式。

4.2NetCDF库

UCAR提供了一系列操作NetCDF文件的库,通过这些库可以读写NetCDF文件数据或元数据信息。库由C语言编写,在此基础上提供了C、C++、Java、Python、Perl等多种主流编程语言的API,但是还不支持C#,可以通过C#封装NetCDFC库函数的方式间接读取NetCDF数据。

4.3实现DotSpatial对NetCDF数据的读取与渲染

DotSpatial本身支持ESRI的Bgd栅格数据,通过实现IExtension接口,在内存中将NetCDF数据转换为Bgd格式,DotSpatial可以显示转换后的数据,转换过程如图2所示,终的渲染效果和其它支持NetCDF数据的软件是一致的,这说明前面的扩展方式是可行的。

5.总结

本文介绍了开

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论