编程实验
作为一门21世纪的新型学科,随着计算机的快速发展,GIS的应用渗透在人们生活的每个角落,提高人们的生活质量,给人们带来方便使人们的生活已经离不开GIS。GIS的发展无疑是各位的关注焦点。当然随着云计算,互联网+等等一些技术的提出,我们知道地理信息产业将会迎来自己的最高峰。文中会从数据的标准化,3S的集成,网络GIS和移动GIS4个方面来论述GIS未来的发展趋势。本文将对GIS 目前的发展以及研究动向进行概述 ,并针对 GIS 软件的开发从两个方面进行了重点论述 ,并对目前主流的开发方法进行了比较详细的对比。
随着信息技术的高速发展 ,许多以前属于专有领域的应用项目也逐渐可以发展为满足普通用户需要的产品。基于地理信息系统的发展就是一例。
在以往人们的印象中 ,地理信息系统似乎只是用来为某些特种行业服务的 ,如:水力水电系统 ,城市规划管理系统 , 管道规划以及军事项目等。如今 ,GIS 信息技术已经具备了渗入到人们的日常生活中的条件。通过个人 PC 机 , 移动电话 , 个人手持助理( PDA) 来获取当地的地理信息 ,以及结合 GPS全球定位系统为用户提供导航 ,位置查询等服务。用户群体的增加也为基于 GIS 的系统开发方式的多样化 ,个性化提出了更高的要求。下面笔者将对目前较为流行的开发方法分别进行分析。
目前国际,国内比较流行的一些 GIS 系统专业开发工具很多都是用 C + + 完成的 ,但在时间 ,人力有限的条件下 , 我们很难开发出象 Mapinfo ,ArcView 等这样功能比较完善的软件 ,但应用 VC+ + 开发以信息管理 ,决策服务及设计为主的 GIS应用系统时 ,也具有良好的使用性和可操作性。特别是目前存在利用 GIS 系统来完善 M IS , CAD ,ERP ,CRM 等系统的功能而不是为了能够精确的管理图纸 ,管理海量数据。因此采用 VC + + 开发也可以开发出满足要求的使用系统 ,并在灵活性、可操性、系统自主版权等方面具有无可比拟的优点。用 VC + + 开发最基本的 GIS 系统需要包含如下几个部分: 管理空间坐标数据的矢量图形系统 ,管理特征数据的数据库管理系统 ,以及实现矢量图形系统与数据库系统双向连接的连接系统。一些 GIS 系统专业开发工具 ,如下面我们将要提到的 Map Info 等 ,也是用 C + + 通过如上的思路 ,在矢量图形系统上开发完成的。
下面将对以上几个部分的开发思路进行详细介绍。
1 .1 相对完整的矢量图形系统的开发
一个基本的矢量图形系统一般需要如下功能:
①较完善的图形元素。包括处理点、直线、圆、连接直线、多边形区域、标注文本等图形元素的能力 ,并具备处理图形块的能力。
②具备基本的图形输入输出功能。包括鼠标交互绘制功能 ,图形数据交互输入等功能。根据具体的情况需要具有数字化仪输入、与其他图形系统的数据接口等功能 ,还有从打印或绘图设备输出图形的能力。
③完善的图形操作功能。包括:图形的放缩、移动 ,对象查询等各种操作功能。
④包括图层、颜色、线型等的设置功能。⑤有较大的存储容量。⑥有较强的容错能力和可恢复性。
1. 2 开发与图形系统配套的数据库管理系统
数据库管理系统是 GIS 系统重要的组成部分 ,用来管理 GIS 系统中各种性质数据。最常用的开发数据库管理系统的方法是使用 ODBC 。
ODBC 作为一种开放的数据库标准 ,可以使用各种数据库系统(如 SQL Server 、Oracle 、Access 等) 的数据库文件作为数据源 ,使用 SQL 语言作为操作和查询语句 , 按照统一的方法来实现数据库管理系统。结合 GIS 系统 ,一个基本的数据库管理系统需要提供以下的操作功能:
①数据浏览。
②数据编辑。对数据表进行增加记录、修改记录、删除记录等操作 ,即可以任意修改数据表的内容。
③数据查询功能。能够提供操作界面 ,任意组织数据表的过滤条件 ,对数据表进行查询操作。
④排序。能够组织排序字段 ,对数据表进行多字段和可选顺序的排序操作。
其次 ,是建立矢量图形系统与数据库管理系统的连接。所谓建立连接关系 ,就是把矢量图形系统的图形元素与数据库管理系统的数据库记录或者数据库视图之间建立连接 ,把性质数据赋给矢量图形元素。对于一个比较完善的 GIS 系统来说 , 这种连接必须具有以下的特点: 连接的双向性、连接的多项性、连接的稳定性。
最后在建立了矢量图形系统和数据库管理系统的连接后 ,就可以通过对矢量图形系统的图形元素的操作(选中、图形元素间的拓扑关系等) 来得到或操作与之连接的性质数据 ,实现空间信息统计和分析等功能。即以建立起来的 GIS 系统框架为基础 ,开发实现使用系统的具体功能。
目前 GIS 软件 ,国际上比较流行的是:Arc Info系列 ,Map Info 系列 , SuperMap 系列产品等。国产GIS 软件中 ,以中国地质大学的 MA P GIS 为代表。这些平台都提供了用户进行二次开发的工具和接口 ,通过二次开发亦可满足很多客户的不同需求 ,并且开发简便 ,迅速见效。这里我们不对其二次开发的方法进行深究 ,而是就目前 GIS 软件与当前软件技术的发展方向相结合而朝组件式的开发方向进行探讨。这种趋势即由过去厂家提供了全部系统或者具有二次开发功能的软件过渡到提供组件由用户自己再开发的方向上来。GIS 技术的发展 ,在软件模式上经历了功能模块、包式软件、核心式软件 , 从而发展到组件式 GIS 和 Web GIS 的过程。传统 GIS 虽然在功能上已经比较成熟 , 但是由于这些系统多是基于十多年前的软件技术开发的 ,属于独立封闭的系统。同时 , GIS 软件变得日益庞大 ,用户难以掌握 , 费用昂贵 , 阻碍了 GIS 的普及和应用。组件式 GIS 的出现为传统 GIS 面临的多种问题提供了全新的解决思路。组件式 GIS的基本思想是把 GIS 的各大功能模块划分为几个控件 ,每个控件完成不同的功能。各个 GIS 控件之间 ,以及 GIS 控件与其它非 GIS 控件之间 ,可以方便地通过可视化的软件开发工具集成起来 ,形成最终的 GIS 应用。控件如同一堆各式各样的积木 ,他们分别实现不同的功能(包括 GIS 和非 GIS功能) ,根据需要把实现各种功能的 ”积木”搭建起来 ,就构成应用系统。
Map Info 开发的 Map X , 以及 ER IS 公司开发的MapObject s 。下面将重点对利用 Map Info 公司开发的 Map X 进行 GIS 软件开发特点以及主要过程进行分析并与 MapObject s 进行比较。
Map X 是 Map Info 公司向用户提供的具有强大地图分析功能的 ActiveX 控件产品。由于它是一种基于 Windows 操作系统的标准控件 , 因而能支持绝大多数标准的可视化开发环境如 Visual C + + 、Visual Basic 、Delp hi 、PowerBuilder 等。编程人员在开发过程中可以选用自己最熟悉的开发语言 ,轻松地将地图功能嵌入到应用中 ,并且可以脱离 Map Info 的软件平台运行。利用 Map X ,能够简单快速地在企业应用中嵌入地图化功能 ,增强企业应用的空间分析能力 , 实现企业应用的增值。
Map X 提供了各种工具、属性和方法 ,熟练的运用这些工具、属性、方法通过编程可以满足不同开发需求。
要快速 ,深入的理解 Map X ,我们可以从下面两个方面入手 ,一方面是 Map X 的空间数据结构 ,另一方面是 Map X 的基本属性。理解了这两方面 ,又具备一定的编程能力 ,结合 Map X 的开发手册 ,就能开发出所需要的 GIS 运用系统。
(1) Map X 的空间数据结构
空间数据结构是 GIS 的基石,GIS 就是通过这种地理空间拓扑结构建立地理图形的空间数据模型并定义各空间数据之间的关系 ,从而实现地理图形和数据库的结合。
从横向分析 ,Map X 采取的空间数据结构是基于空间实体和空间索引相结合的一种结构。空间实体是地理图形的抽象模型 ,主要包括点、线、面三种类型。任何点、线、面实体都可以用直角坐标点 x 、y 来表示。点可以表示成一组坐标 ( x ,y) ,对于线和面 , 则均被表示成多组坐标 ( x1 , y1 ; x2 , y2 ;xn ,yn) 。空间索引是查询空间实体的一种机制 ,
通过空间索引 ,就能够以尽量快的速度查询到给定坐标范围内的空间实体及其所对应的数据。
从纵向分析 ,Map X 的空间数据结构是一种分层存放的结构。用户可以通过图形分层技术 ,根据自己的需求或一定的标准对各种空间实体进行分层组合 ,将一张地图分成不同图层。采用这种分层存放的结构 ,可以提高图形的搜索速度 ,便于各种不同数据的灵活调用、更新和管理。
2 .2 Map X 的基本属性
有
放大、缩小、漫游等增加、移走、设置当前层
有
1. 通过鼠标选取特征
2. 通过 SQL 查找特征
3. 通过空间操作选取特征
有
有
有
较弱
有
较强
无
有
VC、VB 、PowerBuilder 、
Delphi 、Lotus Notes 等
·图( Map)
每个 Map 对象主要包括 Dataset s 、Layers 、An2notations 三个对象集合。
Map 对象有一些主要的属性 ,如 Zoom 用来设置放大级别(在地图上显示的大小) , Rotation 控制地图的旋转角度 , CenterX 和 Center Y 用于设置 x和 y 的坐标系 , 这要取决于地图的投影。Map 对象的许多属性本身又是一个对象 ,比如说一幅地图由多个图层组成 ,则在一个 Map 对象中存在一个单独的 layers 集合 ,其中包含所有图层的信息。·图层(Layers)在 Map X 中 ,每张单独的地图都被表示成单独的一个图层 , 所有的图层存储在 layers 集合中。Layers 集合由 Layer 对象组成 ,按顺序编号为 0 到n 。Layer 对象由 feat ures 对象组成 ,feat ures 对象又是由 Feat ure 对象组成 ,对应于地图中的点、线、区域或符号。
最上面一层为 Layers (1) ,Layers (2) 位于 Lay2ers (1) 的下面 , 以次类推。最下面的图层最先绘制 ,最上面的图层最后绘制。在应用程序中 ,合理地安排好每层在 Layers 中的顺序是至关重要的。比如说有两个图层 ,一层为点 ,一层为区域 ,则应将点层放到区域层的上方 ,否则区域会将点覆盖。另外 ,在进行地图选择操作时 ,根据要求调整图层的顺序也是十分重要的。Map X 中的选择工具总是从
顺序也是十分重要的。Map X 中的选择工具总是从可选择图层中的最上层开始选择 ,如果在地图上的同一位置存在多个位于不同层的地图对象 ,其结果是很难精确地选择到目标对象。因此 ,最好将被选择图层提到最上层显示。
.地理集( GeoSet s)
GeoSet 是在 GeoManager 中建立好的。 GST 文件 ,类似 Map Info 中的 WorkSpace 概念 ,是图层及其设置的集合 ,控制程序中显示的地图。也可以在运行阶段设置 GeoSet , 此时将导致已经加载的所有图层和 DataSet 被删除而由 GeoSet 中定义的图层所代替。如果单纯地想删除所有图层 , 只需给GeoSet 赋一个空字符串即可。可以使用 GeoSet Manager 程序来管理 GeoSet 文件 ( 3 。 GST) 。默
认情况下。 GST 文件存储在。 。 。 map x maps 目
录下 , 可以调用 GeoDictionary Manager 程序进行修改 ,指向用户程序数据所在的位置。
·数据集(Dataset s)
Dataset s 用于实现地图与数据的绑定。例如 ,
一家房地产商将其开发的不同小区的销售情况的数据库和对应区域的数字地图绑定 ,可以在地图上形象地显示出不同区域销售情况的趋势以及和小区周边环境的关系。建立地图信息与属性数据之间联系的过程称之为自动绑定或自动匹配。要实现这一过程 , 必须首先将地图在 GeoDictionary 中注册。
·标注(Annotations)
Annotations 集合提供了操纵地图中文字和符
号的简单方法。Annotations 位于所有其它图层的上方并且不与任何数据连接 ,类似于 Map Info 中的透明图层。
Annotations 包括以下主要的属性与方法: AddSymbol 在 Annotations 中增加符号 , 符号类型使用 Map 。 Default Style 定义; Add Text 在 Annota2tions 中增加文本; Remove 删除特定的标注; Type
取值为 miSymbolAnnotation 或 mi TextAnnotation 。
Annotations 还有一个非常重要的属性 Grap h2
ic ,其定义为 Grap hic 对象 ,在该对象中包含了符号或文本的样式、位置等信息 ,即 Grap hic 的 Caption 、Position 、St yle 、X、Y 属性。如 Annotations 的 Type属性定义为 mi TextAnnotation ,则可以定义 Grap h2ic 的 Caption 属性设置标注的字符串。
·可创建对象
在 Map X 对象模型中 ,以下对象是可以被创建的:
Affine Transform , BindLayer , Bit map Symbols , CoordSys , Dat um , Feat ure , Fields , Layer Info , Map , ODBCQuery Info , Part s , Point , Point s , Rectangle , RowValue , RowValues , Style , Variables , Notes2
Query Info ,NotesView Info 。
综上所述 ,我们可以根据具体开发任务的需要来选择开发方式 ,笔者利用 Map X 和 GPS 技术实现的公交调度指挥系统 ,不仅开发周期短 ,而且系统运行稳定 ,并具有很好的可扩充性。随着通信技术以及 GIS 技术的发展以及市场需求不断增加 ,该开发方式将会给我们带来更大的利益。毫无疑问 ,组件式 GIS 技术将给整个 GIS 技术体系和应用模式带来巨大的影响。
从GIS的出现,到现在短短几十年,它已经融入到了这个世界,改变了人们的生活方式。它作为信息产业的一个新人,却在里面扮演着重要的角色,正以前所未有的速度发展。我觉得我们应该吸取当前GIS中的优点,结合当代的新兴技术,更好的促进GIS的发展。GIS已经深入到了各行各业,随着GIS越来越好的发展,它将会在我们的生活中扮演着越来越重要的角色,同时我们也会越来越依赖它。可是世界却因为它增加更多未知与可能,而这正是当代社会所需要的。新的地理信息时代,我们将会迎来更多挑战,新的地理信息时代,世界会变得更好。
全部0条评论
快来发表一下你的评论吧 !