前言:

WebGIS由于技术发展和功能定位的原因,一般在进行架构设计的时候更多地考虑是否容易实现、用户交互、数据传输方便、渲染效果等方面,对强GIS的应用考虑得少,所以架构上与桌面的GIS平台很不一样。使用HTML5开发的GIS平台,由于性能的提高、海量矢量数据的支持,很多桌面上的GIS功能都能转移到WebGIS上,这时候常见的WebGIS架构就难满足要求了。本文介绍了桌面GIS的主体架构设计(主要参考开源GIS平台 DotSpatial),希望能对大家有点帮助。

1. 平台主要模块

u地图模块:负责地图的显示控制、图层管理、地图文档管理、屏幕坐标转换等。

u数据模块:负责空间数据、属性数据、影像数据等数据格式的存取以及相关的操作。

u投影模块:负责投影信息的定义和不同投影直接的坐标转换。

u地图绘制:包括地图图层风格的设置、影像图层接口、矢量图层接口和标注图层接口等。

u拓扑模块:包括空间拓扑关系计算、空间索引、几何对象的操作方法等。

u基本绘制:基本图形的绘制,不同平台分别实现。

2. 地图模块

u地图显示:MapView控件包括地图刷新、图层管理、屏幕坐标转换等功能。

u地图文档:地图文档保存了显示图层信息、图层风格、数据来源、地图投影等信息。MapDocument对象负责地图文档的加载和保存。

3. 数据模块

u数据集:数据集接口(IDataset)平台中各种数据格式的公共接口,它包括投影信息、数据集信息和数据集复制等基本操作。

u网络数据:用于导航的一种数据格式,其存储内容包括空间数据、拓扑关系和相关的属性。

u影像数据:负责影像数据的加载和显示,本平台中暂时支持瓦片影像格式,可使用在线瓦片影像或本地瓦片影像。

u矢量数据集:矢量数据集接口(IFeatureSet)用于对空间和属性数据进行描述、管理和操作。包括基本的数据读取、数据保存、数据查询、数据编辑等方法。

u空间数据:矢量数据集的空间数据部分,负责空间数据文件的读写操作、空间索引的维护。本平台中包括底图数据(EPJ)格式和可编辑数据格式两种。

u属性存储:矢量数据集中属性部分的存取,一般使用Sqlite保存属性数据。

u记录集:数据查询结果集合,用于枚举查询结果。

u几何对象:Geometry,几何对象的基类,包括基本的对象属性和操作方法。子类包括:简单点(Point)、简单折线(Polyline)、简单多边形(Polygon)、多点(MultiPoint)、多线(MultiPolyline)、复合多边形(MultiPolygon)。

4. 地图绘制

u图层接口:图层接口(ILayer)是地图显示的单元,它定义了基本的图层显示属性:最大最小显示比例、是否显示。图层中包括一个数据集对象,用于获取显示的空间数据或影像数据。

u影像图层:继承于ILayer,实现影像图层的绘制。

u矢量图层:继承于ILayer,实现矢量图层的绘制。它包含矢量风格对象和标注图层对象。

u标注图层:继承于ILayer,实现标注文本的绘制。

u风格方案:图层风格管理。

u风格方案:IFeatureScheme,表示矢量图层的显示。

u显示类别集合:显示类别IFeatureCategory的集合,负责类别的插入和删除。

u显示类别:IFeatureCagetory,一个显示类别表示一组相同的显示方法,它包含有过滤条件属性(FilterExpression)用于过滤符合条件的地物。IFeatureCagetory中包括常态的显示风格Symbolizer和选中风格SelectionSymbolizer。

u显示风格接口:IFeatureSymbolizer,点、线、面风格的公共接口。

u点风格:IPointSymbolizer,点要素的显示接口,包含有Symbols属性(ISymbol的数组)。

u符号接口:ISymbol,简单点符号的绘制接口,由它的子类完成点要素的绘制。子类包括简单符号、图标、字体等符号 类型。

u线风格:ILineSymbolizer,线要素的显示接口,包含有Strokes属性(IStroke的数组)。

u笔画接口:IStroke,笔画的接口,包含线性、线宽、颜色和偏移量等属性,由它的子类完成线要素的绘制。

u面风格:IPolygonSymbolizer,面要素的显示接口,包含有Patterns(IPattern的数组)

u图案接口:IPattern,图案的接口,包括边框风格、填充颜色、填充透明度等属性。子类有简单图案、渐变填充、图片填充等。

5. 地图控件

6. 几何对象

7. 数据访问


《远景地理信息系统|RemoteGIS》

RemoteGIS是基于HTML5开发的高性能WEBGIS,支持百万级别矢量数据。

详细介绍和在线演示地址:www.remotegis.net


GIS平台结构设计的更多相关文章

  1. ArcGIS 10.5,打造智能的Web GIS平台

    2017年新年来临之际,ArcGIS 10.5正式发布.历经几个版本,ArcGIS 10.5已经革新为一个智能的以Web为中心的地理平台,推出更精细的分级授权.全新的i3S三维标准.大数据分析处理产品 ...

  2. 西南大学校园GIS平台

    系统架构是B/S,开发语言是C#.silverlight,开发平台是.NET,数据库为sqlserver,这是我读研究生时候自己做的作品,以自己的母校为地图,进行GIS相关的功能分析,核心的模块有:空 ...

  3. 出售基于Html5的高性能GIS平台源码

    远景地理信息系统平台软件 远景地理信息系统平台软件,简称"RemoteGIS",版本V1.0,它是基于HTML5自主研发的新一代WEBGIS平台,它使用Javascript开发,具 ...

  4. 公共卫生GIS共享服务平台

    1   系统详细设计 1.1 GIS共享服务管理 1.1.1 概述 GIS共享服务管理是本系统的重要组成部分,它实现了对各类地图数据.业务资源数据的集成统一管理,提供了一个平台级的管理解决方案,能够往 ...

  5. 基于GIS的视频管理指挥平台

    平台利用空间地理信息技术,以GIS地图为基础,将各类信息空间化.可视化,实现基于空间电子地图的可视化查询和分析,它能使情报.推理.分析与其他可用数据融为一体,提供依托于电子地图的清晰而精确的现场态势图 ...

  6. .NET平台下开源三维 GIS (地形与游戏)平台资料

    .net平台下开源(免费)三维(地形,游戏)GIS平台 open source (free) 3d (terrain,game) gis platform based on .net (C#) Axi ...

  7. (转)GIS理论知识(三)之ArcGIS平台、SuperMap超图平台和开源平台

    3.1.ArcGIS平台 ArcGIS为美国ESRI公司研发的产品,为用户提供一个可伸缩的,全面的GIS平台.ArcObjects包含了许多的可编程组件,从细粒度的对象(例如单个的几何对象)到粗粒度的 ...

  8. 开源GIS简介

    原文 开源GIS C++开源GIS中间件类库: GDAL(栅格)/OGR(矢量)提供了类型丰富的读写支持 GEOS(Geometry Engine Open Source)是基于C++的空间拓扑分析实 ...

  9. GIS 网站参考

    www.TimeGIS.com 开源GISOpen Source Geospatial Foundation http://osgeo.org/index.htmlMapServer — UMN Ma ...

随机推荐

  1. FJWC2019 全连

    题目描述 有n个音符,第i个音符会在第i个时刻来临 令第 i 个音符的准备时间为 ti​ 个单位时间,如果选择去点击第 i 个音符,那么就没法点击所有到来时刻在 (i−ti​ ,i+ti​)中的音符. ...

  2. [JZOJ6075]【GDOI2019模拟2019.3.20】桥【DP】【线段树】

    Description N,M<=100000,S,T<=1e9 Solution 首先可以感受一下,我们把街道看成一行,那么只有给出的2n个点的纵坐标是有用的,于是我们可以将坐标离散化至 ...

  3. 问题 I: 闪闪发光

    [提交] [状态] [命题人:外部导入] 题目描述 一所位于云南昆明的中医药本科院校--云南中医学院. 因为报考某专业的人数骤减,正面临着停招的危机. 其中有九名少女想到一条妙计——成为偶像, 只要她 ...

  4. 【第2次会议记录_2018.5.27】—— [ 算法原理 ]:手工特征提取的概念问题。(by_wanghao)

    1.提取 特征点 .特征描述子 与 提取特征向量 之间的区别: (1).特征点:指的是一张图片上比较有代表性的‘位置’,提取特征点就是把图片中这些有代表性的位置给标出来. (2).特征描述子:当提取出 ...

  5. C#控制台画图形

    static void Main(string[] args) { //九九乘法 Console.WriteLine("九九乘法口诀"); ; i <= ; i++) { ; ...

  6. 用Akka构建一个简易的分布式文件系统

    本来初期打算用Hadoop 2,可是后来有限的服务器部署了Solr Cloud,各种站点,发现资源不够了,近10T的文件,已经几乎把服务器的磁盘全部用光.想来想去,由于目前架构基于Scala的,所以还 ...

  7. mongo 语法 增删改查

    1.增 db.collection.insert()与db.collection.save() 都是增加,区别:save()遇到相同_id后,则更新此_id数据. 而insert()则报错 > ...

  8. 如何自己编译生成hadoop的eclipse插件,如hadoop-eclipse-plugin-2.6.0.jar

    不多说,直接上干货! 如何自己编译生成Eclipse插件,如hadoop-eclipse-plugin-2.6.0.jar 一.相关软件的安装和配置 (一)JDK的安装和配置 Jdk 1.7*安装并配 ...

  9. javac的访问者模式

    这一篇重点来总结下javac的访问者模式,其定义的访问者接口为JCTree.Visitor,具体如下: /** A generic visitor class for trees. */ public ...

  10. Linux下SSH工具 PAC Manager的安装

    PAC Manager, Linux下类似SecureCRT Xshell的SSH工具,该工具功能上相当的不错,完全可以代替SecureCRT Xshell的功能. PAC (Perl Auto Co ...