|
阅读:1035回复:1
用MO构建3S跟踪显示系统的设想
<P>图没贴上可以到<a href="http://www.gps.org.cn/newlw/1p5n10f123.htm" target="_blank" >http://www.gps.org.cn/newlw/1p5n10f123.htm</A>看看
<P> <P>摘要:笔者在使用MO作课题的基础上,通过对MO显示和查询功能的阐述,以及现有条件与技术的分析,论证了用MO构建3S跟踪显示系统的可能性,便捷性,优势和所面临的不利条件。 <p> <P>关键字: MO 3S RS GPS GIS 国家空间信息基础设施 数字地球 对象链结与嵌入 <p> <p> <P> <p> <p> <P> 1. 引言 <p> <p> <P>当前,RS.GPS.GIS已经成为测绘学的代表和象征,3S集成越来越多地应用于社会发展的不同行业和国民经济的各个部门。在3S集成中,RS在远距离高空以及外层空间的各种平台上,利用可见光、红外微波等电磁波探测仪器,通过摄影或扫描,获取地面物体的形状、大小、位置及其环境的相互关系和变化等信息;GPS基于覆盖全球的一个GPS卫星群,由用户获取至少四颗卫星的观测值,在适当的参考坐标系中,根据已知卫星的坐标确定用户天线的坐标,从而实现实时导航与定位;GIS研究计算机技术与空间地理分布数据的结合,通过一系列空间操作与分析,为地球科学、环境科学、和工程设计,乃至国民经济发展、城市建设和企业经营提供对规划管理和决策有用的信息。RS和GPS是GIS的数据源和数据更新的手段,而GIS则实现对RS和GPS空间数据信息的应用。在3S的应用中,利用GIS的电子地图和GPS接收机的实用差分定位技术,可以构成电子导航系统。 <p> <p> <P>笔者在使用MapObjects 2.0(以下简称MO)完成课题的过程中,在MO 的TrackingLayer图层便捷的跟踪与显示功能的启发下,产生了用MO来构建一个3S跟踪显示系统的设想,可应用于交通、公安侦破、船只导航等。 <p> <p> <P> 2. MO简介。 <p> <p> <P>在实际工作中,有些应用围绕地图展开,而在其它一些应用中,地图只是其中一部分。此时应用开发人员迫切需要一种制图与GIS功能组件,而不是最终的应用软件,来定制或扩展已有的应用。一方面,开发人员希望建立的应用能与通用的桌面软件产品(如文字处理器、数据库等)一起使用;另一方面,希望保留以前的开发成果,对于开发工具,则希望基于一个标准的开发环境,这样可以不必再学习新的编程语言。MO正是为了满足这种需要而开发出来的。 <p> <p> <P>MO是一组供应用开发人员使用的制图与GIS功能软件。它由一个ActiveX控件和一系列可编程ActiveX对象组成。MO的ActiveX对象可以分为五组,即:数据访问对象,地图显示对象,投影对象,几何对象和地址匹配对象。在本系统中,起关键作用的是数据访问对象、地图显示对象和几何对象,系统的跟踪显示与查询功能主要由这三组对象完成。利用MO,开发人员可以在应用程序中添加制图和GIS功能,例如:显示,缩放,漫游,拾取,渲染,动态实时显示,甚至空间分析等等。由于MO以微软的对象链结与嵌入标准(OLE)为基础,MO的控件和对象可以方便地用于各种工业标准的编程平台,如Visual Basic, Visual C++, Delphi, PowerBuilder 和 VBA 等。应用时,只要将Map控件加到ActiveX容器中,如VB的Form,即可使用MO的包括Map控件在内的所有ActiveX对象. <p> <p> <P> MO的特点包括: <p> <p> <P>.支持ARC/INFO COVERAGE <p> <p> <P>.支持ESRI SHAPE文件格式、SDE(Spatial Database Engine)图层以及大量栅格图象格式,如BMP、TIFF等等 <p> <p> <P>.支持通过微软ODBC标准进行的外部数据库访问 <p> <p> <P>.把数据作为多个图层在一张图中进行显示 <p> <p> <P>.特征表示使用数理方法如数值地图、分类、个体符号、以及点值图等 <p> <p> <P>.文字注记和放置 <p> <p> <P>.用一个事件跟踪层来动态显示实时数据 <p> <p> <P>.用标准SQL表达式进行特征选择和查询 <p> <p> <P>.通过大量搜索与框架操作符进行空间选择 <p> <p> <P>.地址匹配(地理编码) <p> <p> <P>.可靠的在线帮助 <p> <p> <P>.强大而出色的对象模型 <p> <p> <P> 3. 系统实现的技术和方法。 <p> <p> <P> 3.1. 定位数据获取。跟踪系统首先要获取定位数据,其方法各有不同。从测绘专业角度来看,可以使用GPS全球定位系统。GPS是美国国防部为军事目的而建立的,旨在彻底坚决海上空中和陆地运载空间的导航和定位问题。由于受美国SA政策的影响,美国及其盟国以外的国家只能获得100米的定位精度,差分GPS定位技术的出现,使定位精度提高到5-3米以上。GPS定位科技含量高,具有全天候、全时域、连续快速、高精度、抗干扰性好的特点,但GPS接收机必须同时与四颗以上的GPS卫星通视,才能完成定位。也可以使用普通的跟踪器,实时获取目标的相对位置,再根据参考点的坐标,转换成期望坐标系统下的坐标。一般而言,普通跟踪器的跟踪范围较小,但不需要通视条件。如果将GPS接收机与普通跟踪器结和起来,就可以满足各种不同的需要。 <p> <p> <P> 3.2. 地图数据获取。3S跟踪显示系统的地图数据获取与电子导航系统的电子地图一样,可以通过扫描或数字化地图后经过编辑生成,或者用遥感(RS)的方法直接成图。遥感技术是测绘界获取空间数据的传统手段,也是大面积测图或勘测的最佳途径。现代航空航天遥感技术的发展主要表现在多传感器、多时相、高分辨率和快速机动的特征上,可以满足快速获取和更新空间数据的要求。 <p> <p> <P> 3.3. 显示。数据获取的结果是得到了目标的坐标,这些坐标不加以处理,对我们并没有实际的意义。如果能够根据这些坐标,获取目标所在的具体区域的地理名称,并在屏幕上显示出目标的位置,那么就达到了我们跟踪的目的。如图1-1所示。 <p> <p> <P> 为此,首先要加载一副符合要求的地图,其中包括我们所需要的地理位置信息,并且能够在跟踪屏幕上显示出来。MO的MapLayer对象和ImageLayer对象可以接收各种矢量和栅格数据,把它们加载到Map控件后,即可按照需要显示地图。 <p> <p> <P> 数据获取之后,要求系统能够读取数据,在屏幕上显示出目标的位置。Map控件读取目标的地理坐标后,可以将其转换为屏幕坐标,并赋给GeoEvent对象。GeoEvent对象有一系列的属性和方法,通过这些属性和方法,可以将目标的动态坐标赋予GeoEvent对象,将目标与GeoEvent对象实时地联系起来。Map控件加载任何图层之后,即可生成一个特殊的透明图层,称为TrackingLayer图层。将目标所对应的GeoEvent对象加载到TrackingLayer图层,即可显示动态实时的目标。而TrackingLayer图层位于其它图层(如地图图层)的上面,可以独立刷新,这样,就能够达到目标在地图上移动的视觉效果。不仅如此,使用TrackingLayer对象的symbol属性,还可以显示各种形象的标志符号,代表不同的目标。另外,使用MO的AFCustom动态连接库可以创建各种标志符号,以显示不同的目标对象。 <p> <p> <P> 根据实际需要,目标在屏幕上显示出来之后,还要求系统能够报告目标的地理位置,这就对所使用的地图提出了较高的要求。只要地图的属性信息足够丰富,使用Map控件的属性和方法可以方便地获取目标的所在位置。. <p> <p> <P> 3.4. 其它功能。系统除了显示和报告目标的位置之外,还可以完成一些常规的信息查询,如目标附近有何重要建筑,离目标最近的车站在哪里等等,如图1-2所示。在MO中,使用MapLayer对象的SearchByDistance, SearchExpression, SearchShape和Table对象的SearchExpression方法,可以通过距离、查询语句、和图形之间的相互关系(如相交,包括,点在面内等十五种关系)进行查询,使系统更能满足实际需要。 <p> <p> <P><v:shapetype><v:stroke joinstyle="miter"></v:stroke><v:path gradientshapeok="t" connecttype="rect"></v:path></v:shapetype><v:shape></v:shape><v:group><v:group><v:shapetype><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0 "></v:f><v:f eqn="sum @0 1 0 "></v:f><v:f eqn="sum 0 0 @1 "></v:f><v:f eqn="prod @2 1 2 "></v:f><v:f eqn="prod @3 21600 pixelWidth "></v:f><v:f eqn="prod @3 21600 pixelHeight "></v:f><v:f eqn="sum @0 0 1 "></v:f><v:f eqn="prod @6 1 2 "></v:f><v:f eqn="prod @7 21600 pixelWidth "></v:f><v:f eqn="sum @8 21600 0 "></v:f><v:f eqn="prod @7 21600 pixelHeight "></v:f><v:f eqn="sum @10 21600 0 "></v:f></v:formulas><v:path gradientshapeok="t" connecttype="rect" extrusionok="f"></v:path><LOCK v:ext="edit" aspectratio="t"></LOCK></v:shapetype><v:shape><v:imagedata title=track3 src="./1p5n10f123.files/image001.jpg"></v:imagedata></v:shape><v:shape><v:imagedata title=track1 src="./1p5n10f123.files/image002.jpg"></v:imagedata></v:shape><v:shapetype><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="sum 10800 0 #0 "></v:f><v:f eqn="sum 10800 0 #1 "></v:f><v:f eqn="sum #0 0 #1 "></v:f><v:f eqn="sum @0 @1 0 "></v:f><v:f eqn="sum 21600 0 #0 "></v:f><v:f eqn="sum 21600 0 #1 "></v:f><v:f eqn="if @0 3600 12600 "></v:f><v:f eqn="if @0 9000 18000 "></v:f><v:f eqn="if @1 3600 12600 "></v:f><v:f eqn="if @1 9000 18000 "></v:f><v:f eqn="if @2 0 #0 "></v:f><v:f eqn="if @3 @10 0 "></v:f><v:f eqn="if #0 0 @11 "></v:f><v:f eqn="if @2 @6 #0 "></v:f><v:f eqn="if @3 @6 @13 "></v:f><v:f eqn="if @5 @6 @14 "></v:f><v:f eqn="if @2 #0 21600 "></v:f><v:f eqn="if @3 21600 @16 "></v:f><v:f eqn="if @4 21600 @17 "></v:f><v:f eqn="if @2 #0 @6 "></v:f><v:f eqn="if @3 @19 @6 "></v:f><v:f eqn="if #1 @6 @20 "></v:f><v:f eqn="if @2 @8 #1 "></v:f><v:f eqn="if @3 @22 @8 "></v:f><v:f eqn="if #0 @8 @23 "></v:f><v:f eqn="if @2 21600 #1 "></v:f><v:f eqn="if @3 21600 @25 "></v:f><v:f eqn="if @5 21600 @26 "></v:f><v:f eqn="if @2 #1 @8 "></v:f><v:f eqn="if @3 @8 @28 "></v:f><v:f eqn="if @4 @8 @29 "></v:f><v:f eqn="if @2 #1 0 "></v:f><v:f eqn="if @3 @31 0 "></v:f><v:f eqn="if #1 0 @32 "></v:f><v:f eqn="sum #0 0 0 "></v:f><v:f eqn="sum #1 0 0 "></v:f></v:formulas><v:path connecttype="custom" connectlocs="10800,0;0,10800;10800,21600;21600,10800;@34,@35"></v:path><v:handles><v:h position="#0,#1"></v:h></v:handles></v:shapetype><v:shape><v:textbox style="MARGIN-TOP: 4.937pt; LEFT: auto; MARGIN-LEFT: 64.312pt; WIDTH: 26.531pt; TOP: auto; HEIGHT: 13.781pt; mso-next-textbox: #_x0000_s2058"> <TABLE cellSpacing=0 cellPadding=0 width="100%"> <TR> <TD> <DIV> <P><B>目标 <p></B> <p></DIV></TD></TR></TABLE></v:textbox></v:shape></v:group><v:group><v:shape><v:imagedata title=track2 src="./1p5n10f123.files/image003.jpg"></v:imagedata></v:shape><v:shape><v:imagedata title=track4 src="./1p5n10f123.files/image004.jpg"></v:imagedata></v:shape><v:shape><v:textbox style="MARGIN-TOP: 31.843pt; LEFT: auto; MARGIN-LEFT: 83.187pt; WIDTH: 26.531pt; TOP: auto; HEIGHT: 13.781pt"> <TABLE cellSpacing=0 cellPadding=0 width="100%"> <TR> <TD> <DIV> <P><B>目标 <p></B> <p></DIV></TD></TR></TABLE></v:textbox></v:shape><v:shapetype><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="sum #0 0 0 "></v:f><v:f eqn="sum #1 0 0 "></v:f><v:f eqn="sum 10800 0 #0 "></v:f><v:f eqn="sum 10800 0 #1 "></v:f><v:f eqn="atan2 @2 @3 "></v:f><v:f eqn="sumangle @4 11 0 "></v:f><v:f eqn="sumangle @4 0 11 "></v:f><v:f eqn="cos 10800 @4 "></v:f><v:f eqn="sin 10800 @4 "></v:f><v:f eqn="cos 10800 @5 "></v:f><v:f eqn="sin 10800 @5 "></v:f><v:f eqn="cos 10800 @6 "></v:f><v:f eqn="sin 10800 @6 "></v:f><v:f eqn="sum 10800 0 @7 "></v:f><v:f eqn="sum 10800 0 @8 "></v:f><v:f eqn="sum 10800 0 @9 "></v:f><v:f eqn="sum 10800 0 @10 "></v:f><v:f eqn="sum 10800 0 @11 "></v:f><v:f eqn="sum 10800 0 @12 "></v:f><v:f eqn="mod @2 @3 0 "></v:f><v:f eqn="sum @19 0 10800 "></v:f><v:f eqn="if @20 #0 @13 "></v:f><v:f eqn="if @20 #1 @14 "></v:f></v:formulas><v:path textboxrect="3163,3163,18437,18437" connecttype="custom" connectlocs="10800,0;3163,3163;0,10800;3163,18437;10800,21600;18437,18437;21600,10800;18437,3163;@21,@22"></v:path><v:handles><v:h position="#0,#1"></v:h></v:handles></v:shapetype><v:shape><v:textbox style="MARGIN-TOP: 12.062pt; LEFT: auto; MARGIN-LEFT: 55.093pt; WIDTH: 23.625pt; TOP: auto; HEIGHT: 35.25pt; mso-next-textbox: #_x0000_s2060"> <TABLE cellSpacing=0 cellPadding=0 width="100%"> <TR> <TD> <DIV> <P><B>机密</B><B>大厦</B></P></DIV></TD></TR></TABLE></v:textbox></v:shape></v:group></v:group><v:shape></v:shape> <TABLE cellSpacing=0 cellPadding=0 width="100%"> <TR> <TD> <DIV class='shape v:shape="_x0000_s2056"'> <P>图 1-1</P></DIV></TD></TR></TABLE> <TABLE cellSpacing=0 cellPadding=0 width="100%"> <TR> <TD> <DIV class='shape v:shape="_x0000_s2057"'> <P>图 1-2</P></DIV></TD></TR></TABLE> <p> <p> <P> <p> <p> <P> <p> <p> <P> <p> <p> <P> <p> <p> <P> <p> <p> <P> <p> <p> <P> <p> <p> <P> <p> <p> <P> <p> <p> <P> <p> <p> <P> <p> <p><BR clear=all> <P> 4. 用MO构建3S跟踪显示系统的优势 <p> <p> <P> 如前所述,由于MO本身具有的各种特点,使得用MO构建3S跟踪显示系统,不仅方便、快捷,而且能够提供各种辅助查询功能,以更好地满足实际需要。总结如下: <p> <p> <P> (1) MO是一组ActiveX控件和对象,可以方便地用于各种工业标准的编程平台,所以用MO构建3S跟踪显示系统对程序开发人员来说是很容易的。 <p> <p> <P> (2) MO支持多种图象格式,支持通过微软ODBC标准进行的外部数据库访问,因此,用MO构建的3S跟踪显示系统与外部数据将会有良好的接口。 <p> <p> <P> (3) MO用一个事件跟踪层(TrackingLayer图层)来动态显示实时数据,可以独立刷新,且允许用户创建自己的符号,因而能够很好地在屏幕上显示跟踪目标。 <p> <p> <P> (4) MO有强大而出色的对象模型,为用户提供丰富的属性和方法,并且用标准SQL表达式进行特征选择和查询,所以使用MO构建的3S跟踪显示系统能够快捷而准确地报告目标的坐标和地理位置所在,同时提供各种辅助查询功能,更好地满足实际需要。 <p> <p> <P> 5. 系统实现的难点 <p> <p> <P> 由于现代计算机技术、电子技术及卫星技术的飞速发展,GPS技术已经发展成为全天候、全时域、连续快速、高精度、抗干扰的实时导航定位技术;现代航空航天遥感技术的发展则主要表现在多传感器、多时相、高分辨率和快速机动的特征上,可以满足快速获取和更新空间数据的要求;MO所提供的各种对象具有丰富的属性和方法,完全可以满足用户的显示和查询需要。但是,由于我国国家空间基础设施建设起步较晚,大部分地区还不能提供出完全满足需要的具有丰富信息的基础地图,作为系统的地理信息数据源。这就为系统的实现和充分发挥作用提出了一个难题。随着家空间基础设施建设和数字地球计划的进一步深入和发展,这一问题也将得到圆满的解决。另外,MO是一组通用的GIS功能软件,在将其应用于3S跟踪显示系统的过程中,不可避免地会遇到各种实际问题,需要系统开发人员逐一解决。 <p> <p> <P> <p> <p> <P align=center>参考文献 <p> <p> <P> <p> <p> <P>[1] 李德仁、郑肇保、边馥苓、龚健雅.《空间信息科学及应用》.武汉测绘科技大学出版社,1998年12月。 <p> <p> <P>[2] 周忠漠、易杰军、周琪. 《GPS卫星测量原理与应用》.测绘出版社,1997年1月。 <p> <p> <P>[3] 王广运、郭秉义、李洪涛.《差分GPS定位技术及应用》.电子工业出版社,1996年3月。 <p> <p> <P>[4] ESRI公司. 《MapObjects 2.0用户手册》.1999年1月。 <p> <p> <P>[5] 富融科技有限公司. 《ESRI公司产品简介》.1999年1月。 <p> <p> [此贴子已经被作者于2004-7-16 11:39:55编辑过]
|
|
|