基于GIS组件技术的软件开发
- 格式:doc
- 大小:37.50 KB
- 文档页数:9
0 引言目前,地理信息系统已广泛地应用于众多领域,为各个相关行业提供了高效的空间信息处理能力和强大的决策支持服务。
为满足需求,GIS 开发人员需要具有构建领域专用且易于使用的应用软件的能力,软件需将广泛应用的GIS 技术与友好用户的经验结合起来。
这些软件如果从头开始构建,将是一项繁冗的开发工作,会很耗费时间,并且成本不菲。
现阶段,组件技术已经广泛的被引人到GIS 软件的设计与开发中,使得高效便捷的开发应用型地理信息系统成为现实。
国内外著名的GIS 厂商都相继推出了他们的Gls 组件,其中以ESRI 公司的组件产品Arcobjects 最为著名。
ArcGIS Engine 是一组打包的核心Arcobjects 组件,相比ArcobjectS 降低了开发难度,也大大提高了GIS 应用程序的开发效率。
因此,本文主要以ArcGIs Engin 。
为研究对象,剖析其系统开发方法,并作出最终的开发实例。
1 ArcGIS Engine 开发简介ArcGIS 是一组集成家庭式的GIS 软件产品,可在单项工程、工作组以及企业级项目中用于发布完善的、可升级的GIS 系统。
它是基于一个可共享的GIS组件一Arc ohjects 的公用库来构建的。
Arcobjects 是基于Microsoft COM 技术所构建的一系列COM 组件产品,不是为最终用户而是专门为开发人员提供的二次开发软件,通过Arcobjects ,用户可以非常方便地开发出功能强大的GIS应用系统。
但它不是一个独立的应用产品,不能脱离ArcGIS 平台,只有在购买ArcGIS 产品后,才能利用其提供的组件对象进行应用开发。
ArcGIs Engine是一组完备的并且打包的嵌人式GIS 组件库和工具库,开发人员可用来创建新的或扩展已有的桌面应用程序。
使用ArcGIS Engine ,开发人员可以将GIS 功能嵌入到已有的应用软件中,或嵌人到商业生产应用软件中,还可以创建集中式自定义应用软件,并将其发送给机构内的多个用户。
基于WPF的GIS组件的开发与研究的开题报告一、选题背景和意义地理信息系统(GIS)是利用计算机软硬件实现地理空间信息的获取、存储、管理、分析、展示和应用的信息系统。
GIS已经成为现代化社会中不可或缺的技术手段之一,广泛应用于国土资源调查、城市规划、环境保护、农业生产、交通运输、地质勘探、电力管理等领域。
WPF(Windows Presentation Foundation)是微软公司推出的一种图形用户界面开发工具,提供了许多先进的绘图、动画、多媒体、文本处理等功能。
基于WPF开发的GIS组件具有良好的可视化效果、交互性能和用户体验,是目前GIS开发领域的主流技术之一。
本文选取了基于WPF的GIS组件的开发与研究作为研究课题,旨在:1. 探究WPF技术在GIS组件开发中的应用,研究WPF的核心技术、开发工具和数据库应用,分析其优势和劣势;2. 设计并实现一个基于WPF的GIS组件,包括地图显示、要素编辑、空间分析、数据查询等功能;3. 对所开发的GIS组件进行功能测试、性能测试和用户体验测试,评价其适用性和使用价值。
二、研究内容和方法1. 研究WPF技术在GIS组件开发中的应用,包括WPF的核心技术(如XAML、布局、样式、动画等)、开发工具(如Visual Studio、Expression Blend等)和数据库应用(如SQLite、PostgreSQL、MySQL 等),分析其优势和劣势;2. 设计并实现一个基于WPF的GIS组件,包括地图显示、要素编辑、空间分析、数据查询等功能,采用MVVM(Model-View-ViewModel)模式进行开发,使用C#语言和.NET Framework 4.0以上版本实现;3. 对所开发的GIS组件进行功能测试、性能测试和用户体验测试,包括地图加载速度、数据查询速度、用户交互体验等指标,对测试结果进行分析和评价。
三、预期成果1. 深入研究WPF技术在GIS组件开发中的应用,掌握其核心技术、开发工具和数据库应用,准确分析其优势和劣势;2. 设计并实现一个基于WPF的GIS组件,具有完整的地图显示、要素编辑、空间分析、数据查询等功能,能够实现基本的GIS应用要求;3. 对所开发的GIS组件进行功能测试、性能测试和用户体验测试,发现并解决存在的问题并提出改进意见,为该领域的研究和实践提供参考和借鉴。
arcgisengine二次开发实例
ArcGIS Engine是ArcGIS系列软件产品之一,用于在分布式系统环境下构建ArcGIS 技术,实现GIS应用软件开发。
开发人员可以利用ArcGIS Engine来构建自定义GIS应用程序、地理空间分析应用程序以及分布式GIS解决方案。
ArcGIS Engine提供了一个强大的开发平台,它的几乎所有的开发框架以及资源都位于一个方便的框架中,开发人员可以使用其中的几中可视化控件进行ArcGIS地图和数据应用开发。
ArcGIS Engine是一款基于COM(Component Object Model)技术的GIS应用平台,它通过COM在用户定义的交互界面之间提供了独立的组件。
组件定义了一种行为和数据的概念,组件间的交互可以非常简单的实现。
ArcGIS Engine可以作为地图数据的可视化引擎,允许开发者使用统一的图形化界面控制地图的显示和操作。
此外它还可提供复杂的数据空间分析模块,在开发人员输入实际的空间数据后,可进行数据空间分析,产生对空间结果分析的可视化输出。
ArcGIS Engine可以让开发者灵活地构建系统架构,以满足自定义的GIS应用开发需求。
开发人员可以使用ArcGIS Engine的组件,使其在分布式的应用程序框架中更好的发挥作用。
比如可以使用专业矢量处理组件,在GIS信息系统中构建面板,并在面板上放入各种可视化控件,满足对空间数据的管理和空间数据分析需求。
基于组件式gis的城市公交查询系统的设计与实现1.概述。
随着城市化的不断发展,城市公共交通成为了生活中不可或缺的组成部分。
因此,设计一个高效、便捷的城市公交查询系统显得非常重要。
本文基于组件式的GIS技术,提出了一种城市公交查询系统的设计与实现方案。
2.架构设计。
该系统采用了前后端分离的架构,前端使用 React 技术栈,后端采用 Node.js 平台。
GIS 技术的应用主要集中在前端部分,用于地图可视化和公交路径规划。
系统主要分为以下模块:(1)地图模块:用于显示城市地图并提供用户进行交互的方式,如查看站点信息、搜索目的地等功能。
(2)公交路线模块:用于查询公交线路并在地图上进行可视化展示,用户可以通过该模块查看乘坐公交的路线。
(3)公交站点模块:用于查询公交站点位置,并实时展示该站点附近的公交线路信息。
(4)搜索模块:用于搜索目的地并提供多种出行方式的选择,系统会根据用户选择的出行方式自动规划最佳路线。
3.实现细节。
(1) 地图显示:使用开源库 Leaflet 作为地图渲染引擎,在地图上叠加公交路线图层和公交站点图层,同时提供可缩放和拖动地图的功能。
(2) 公交路线查询:选择 A* 算法进行最短路径搜索并使用Dijkstra 算法计算最短时间路径,同时根据公交线路实时班次进行路线规划。
(3)公交站点查询:将公交站点数据存储在数据库中,根据用户地理位置信息查询附近的公交站点并在地图上进行展示。
(4)搜索功能:通过调用百度地图API获取目的地坐标并使用公交路线查询和步行路线查询两种方式规划最佳路线。
4.总结。
本文基于组件式GIS技术设计了一种城市公交查询系统。
通过前后端分离的架构和各个模块的合理设计,实现了地图可视化、公交路线查询、公交站点查询和搜索等功能。
该系统能够有效地提高用户出行的便利性和效率,具有一定的实用价值。
基于组件技术的分布式GIS研究综述摘要:由于空间数据量巨大,网络带宽有限,海量数据的存储与管理已经成为制约gis发展的技术因素,结合计算机科学技术的发展,分布式gis应运而生。
文章介绍了分布式gis的系统架构,基于组件技术的分布式gis的几项关键技术,分布式gis的性能评价以及存在的问题。
关键词:系统架构;分布式web gis;组件技术;com;corba;java中图分类号:g644 文献标识码:a 文章编号:1002-7661(2011)12-021-01一、系统架构该系统的应用模型采用金字塔模型,整个系统按等级不同可以分为县级结点、省级结点、国家级结点,与目前我国现行的行政划分一致,有利于数据的管理与应用。
具体架构的应用模型如下:在上图中处于最底层的为末结点,所有数据都有末结点存放,当处于高级的结点接到数据查询指令时,譬如查询全国的医疗状况,这时系统将指令进行分解成若干个医疗状况查询指令分发给下级结点,最终由下级结点来执行这些指令。
当指令执行完毕,再将执行结果反馈给上级结点,由上级结点对数据进行综合整理,反馈给用户。
二、分布式gis的关键技术目前流行的分布式组件技术模型主要有以下四种:microsoft公司的分布式构件对象模型(com/dcom)、对象管理组织(omg)的公共对象请求代理体系结构(corba)、sun公司的java企业级beans(ejb)/j2ee和现在比较流行的.net环境下的web services组件技术。
下面首先对这四种技术进行介绍,然后进行比较分析。
1、基于dcom和com + 技术的分布式web gisdcom和com + 技术是微软公司在com组件技术基础上推出的一个高级com的运行环境,是windows 2000操作系统的一部分。
dcom 和com + 技术同样也为分布式gis提供了一个分布式基础服务环境,如事务服务、同步服务、安全服务、负载均衡服务等。
基于dcom和com + 技术的分布式web gis系统最大的技术优势在于提供了对象池技术和负载均衡技术。
基于GIS组件技术的软件开发摘要:分析了GIS的功能组件MapX的主要框架和功能,旨在探讨如何在Visual C ++析功能的MapX技术构建专用电子地图。
结果表明,在GIS组件的软件开发中,采用VC ++MapX的地理信息系统(GIS)开发技术相结合来开发电子地图,既方便灵活,又增强了软件的功能和可视效果。
关键词:MapX组件;电子地图;地理信息系统0 引言GIS是地理信息系统(Geographical Information System)的简称,是一种将空间位置信息与属性数据相结合的系统。
在实际应用中,以GIS技术为基础的应用软件已广泛用于军事、商业、航空等多种领域。
MapX是MapInfo公司提供的数字地图绘制控件,是一组基于GIS技术的应用组件,它由一个称为Map的ActiveX 控件(OCX)和约45个自动化对象组成,在标准的Windows编程环境下,能够与其他图形、多媒体、数据库开发技术组成完全独立的综合性应用软件,是基于前端应用业务的良好的地图开发环境。
使用MapX进行软件开发,可以向应用程序中添加强大的地图绘制功能,增强软件的空间分析能力。
1 MapX控件基础1.1 MapX的结构分析从横向分析,MapX是空间索引与空间实体相结合的一种结构,空间实体是地理图形信息的一种抽象模型,包括点、线、面3种类型。
任何点、线、面实体都可以用直角坐标点x、y来表示。
点可以表示成一组坐标(x,y),对于线和面,则均被表示成多组坐标(x1,y1,x2,y2,...,xn,yn);空间索引是查询空间实体的一种机制,通过空间索引,就能够以尽量快的速度查询到给定坐标范围内的空间实体及其所对应的数据;从纵向分析,MapX的空间数据结构是一种分层存放的结构。
如图1。
1.2 MapX的模型结构MapX组件的基本构成单元是Object(单个对象)和Collection(集合)。
其中,集合包括对象,是多个对象的组合。
每种对象和集合负责处理地图某一方面的功能。
位于顶层的是Map 对象本身,其它均由Map对象继承。
Layers、DataSets、Annotations 是Map对象下面的三个重要的分支。
其中Layer主要用于操作地图的图层,DataSet用于访问空间数据表,Annotation用于在地图上增加文本或者符号。
1.3 MapX的主要功能专题地图绘制。
使用专题地图绘制可以直观地表示数据。
将数据与地图上的对象相关联,然后使用颜色编码(或其它样式)来直观地表现数据。
逐层细化地图绘制。
通过简单的点击即可详查数据。
对于OLAP/DSS,可以通过点击让用户逐层细化到地图上的区域。
数据绑定。
可以连接大型数据库,通过空间数据服务技术,MapX可以动态操作数据库中存储的地理空间数据,并在空间服务器的支持下,完成高级的地理信息查询和复杂的空间分析功能。
注释。
可以自行定义注释的显示方位。
突出显示特定数据。
还可加入文本、符号、表格使地图信息更加丰富直观。
图层化。
可以显示和控制地图图层,使其缩放程度在预设的距离内时才显示。
可以使用或创建无缝图层,通过特殊图层来支持特殊的应用,这些特殊图层包括动画图层和UserDraw图层。
自动标签。
可以自动向地图添加标签,并可以控制其属性和显示。
特征工厂。
用FeatureFactory对象可以创建、合并、缓冲或清除点、线、区域对象。
工具集。
用户可以通过单击和拖放操作来与地图交互。
可以使用MapX内置的导航、选择、标签、缩放工具,或者创建自定义的工具来满足程序的要求。
地图编辑。
允许用户添加、修改、删除地图上的文本、编辑区域、点等特殊对象。
投影和坐标系。
通过支持各种坐标系统和地图投影,MapX 允许微调地图的显示并在本地坐标中处理X-Y坐标数据。
2 VC环境下软件开发2.1 背景地图设置首先要将MapX.h与Mapx.cpp两个文件加入工程中,定义并实现MapX对象的类。
前者是类的说明,后者是具体实现。
在访问MapX对象属性都是通过调用类的成员函数实现的。
MapX 中使用的图层有两种:一种是矢量图层,即一种基于坐标的数据结构,用于表达地图特性;另一种是栅格图层,即位图,它不能象矢量图层那样附加数据。
地图设置是在视图类(CMapxView)中实现。
在CMapxView中WM_CREATE的消息映射函数中创建地图,代码如下:if(m_ctrlMapX.Create(NULL,WS_VISIBLE,CRect(0,0,300,300),thi s,IDC_MAP) == false) return 0;调整地图尺寸是在CMapxView中的WM_SIZE的消息映射函数中实现,代码如下:void CMapxView::OnSize(UINT nType,int cx,int cy){CWnd::OnSize(nType,cx,cy);if(cx!=0&&cy!=0) m_ctrlMapX.MoveWindow(0,0,cx,cy,TRUE);}这样就可以实现视图大小改变时,地图也随之改变大小,使其充满客户区。
MapX是按图层组织地图的,图层对象代表矢量地图数据,其包含了一组地理特征。
获得图层集合对象是用MapX对象的GetLayers成员函数。
增加图层,是用图层集合对象的Add成员函数。
删除图层是用图层集合对象的Remove成员函数。
以下源代码能实现添加图层,同时在地图窗口显示该图层:Layer = m_ctrlMapX.GetLayers().Add(varName,varPosition);2.2 图形绘制方法对于常用图形的绘制,如绘制符号、直线、多点线、区域及其格式,还有放大、缩小、漫游、选择等功能,MapX控件提供了接口,只需调用CMapX::SetCurrentTool(...)即可实现。
对于专用图形,如舰船、指挥所、站址徽标等图元的绘制,则要采用自定义方法,其步骤如下:2.2.1 创建自定义工具其函数为CmapX::CreateCustomTool(...)。
2.2.2 定义槽事件在VC应用程序中利用ON_EVENT(the Class,id,dispid,pfnHandler,vtsParams)定义系列槽事件,如鼠标按下事件(DISPID_MOUSEDOWN),鼠标弹起事件(DISPID_MOUSEUP),工具被使用事件(MapX_DISPID_TOOLUSED)等来实现控件事件的触发。
2.2.3 使用自定义工具进行绘图(1)图形的绘制。
首先,获取图形的关键点坐标:将鼠标在屏幕上按下,触发MapX控件窗口的MouseDown事件,记下按点坐标(x1,y1),并拖动后再弹起,触发MouseUp事件,记下弹起点坐标(x2,y2)。
接着,利用CmapX3ConvertCoord(...)函数将屏幕坐标转换成经纬度坐标(x1',y1'),(x2',y2'),再利用(x1',y1'),(x2',y2')组成矩形,在此矩形内选取绘制图形的关键点坐标;获取图形的关键点坐标,再利用如下函数实现线、弧或区域图元:m_ctrlMapX.GetFeatureFactory().CreateLine(...);m_ctrlMapX.GetFeatureFactory().CreateArc(...);m_ctrlMapX.GetFeatureFactory().CreateRegion(...);最后利用m_ctrlMapX.GetFeatureFactory().CombineFeatures(...)将图元组合成一个实体图形,取出实体图形的中心坐标(x0,y0),并转化为屏幕坐标(x0',y0')。
(2)图形的移动、放大、缩小。
对于图形的移动、放大、缩小,只需用Select工具选中拖动即可。
(3)图形的旋转。
首先,利用ConvertCoord(...)函数,将图形关键点经纬度坐标转换为屏幕坐标,然后进行坐标平移变换,变成以图形中心点(x0',y0')为原点的坐标,再利用旋转变换公式:x' = xcos θ–ysin θ,y' = xsin θ+ ycos θ,进行旋转变换,得到新的以中心点为原点的坐标,接着进行坐标逆平移变换,得到新的关键点屏幕坐标,再将这些关键点屏幕坐标转化为经纬度坐标,重新进行图形绘制,并通过void CMapXLayer::DeleteFeature(...)来删除初始图形。
2.3 目标航迹的绘制根据目标信息中的位置、航向等信息,在电子地图上,根据需要可实时显示目标的航迹。
首先,定义航迹图元:CMapXFeature MapXTrackFeature;然后,定义航迹点集,包括使用多点航迹:CMapXPoints TrackPoints;MapXTrackFeature.SetType(miFeatureTypeMulti-point);由于该系统采用的是线型航迹,所以定义:MapXTrackFeature.SetType(miFeatureTypeLine);以下为目标航迹显示代码:For(int i=0;i<PNum;i++){ if ((pTrackP[i].nX<=0)‖(pTrackP[i].nY<=0)){TrackPoints.DetachDispatch(); return FALSE;}TrackPoints.AddXY(pTrackP[i].nX/100,pTrackP[i].nY/100);}MapXTrackFeature.GetParts().Add(TrackPoints);MapXTrackFeature.Update();……3 结束语在地理信息系统中利用基于AcitveX技术的MapX组件建立进行软件开发,与其它技术相比,GIS组件开发速度快,占用资源少,而且易实现许多底层的编程和开发功能,加之结合应用成熟的VC ++一步增强了软件的可视化效果。
但由于MapX支持的空间数据有限,无法直接操作除MapInfo格式之外的地理信息数据,限制了其在特殊领域的应用。
此外,电子地图的精度有待于进一步提高,这些方面都是今后还须完善的地方。
参考文献:[1]刘光.地理信息系统二次开发教程-组件篇[M].北京:清华大学出版社,2004.[2]邬伦,刘瑜.地理信息系统-原理,方法和应用[M].北京:科学出版社,2005.[3]李兰友,VC ++.NET图形图像编程[M].北京:电子工业出版社,2005.[4]刘刀桂、孟繁晶.VisualC ++-数据库篇[M].北京:中国铁道出版社,2003.[5]梁日辉,罗建军.MapX在VC ++用图标系统的研究[J].计算机应用与软件,2005(6).。