0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于WinCE 6.0操作系统实现车载终端的嵌入式地图的设计

电子设计 来源:郭婷 作者:电子设计 2019-08-14 08:03 次阅读

很多场合的嵌入式应用,需要涉及地图操作。目前嵌入式GIS产品国外主要有ESRI和MapInfo,国内主要有超图、灵图等。

本文介绍在某基于WinCE 6.0操作系统的车载信息终端上嵌入式地图的实现方法。主要的目标功能如下:能够实现基本的地图操作,例如放大、缩小、漫游、分图层显示;用户图层的绘制,例如在地图上叠加军标、绘制符号等;能够接收GPS坐标、绘制本车或它车的地理位置。

本文的开发环境使用VS 2005、ArcGIS Server v9.3,编程语言使用C#,目标操作系统为WinCE 6.0。

1 ArcGIS Mobile开发环境

ArcGIS Server是ESRI公司推出的专业的GIS应用整合套装软件,其主要目标是提供地理信息网络服务,在大型GIS系统与终端设备间提供无缝的信息交换与服务。为了支持PDA、智能手机之类的手持设备,按照任务的复杂程度,ArcGIS为移动GIS提供了三种解决方案:ArcGIS Mobile、ArcPad以及ArcGIS Engine。本文介绍依托ArcGIS Mobile开发的嵌入式应用。此外,还利用ArcMap和ArcCatalog这两个工具进行地图制作和地图发布,而且这两个工具也都包含在ArcGIS Server套装中。

ArcGIS Mobile的基本功能包括:浏览空间数据,捕捉、标注GPS位置,创建或更新点、线、面等要素,通过ADO.Net编辑表格数据,自动从GIS服务器同步更新数据等。

基于ArcGIS Mobile开发移动应用的基本步骤是:首先使用ArcMap编辑地图;然后使用ArcCatalog或者ArcGIS Server Manager发布地图;使用Visual Studio 2005以及ArcGIS Mobile SDK开发应用程序;最后将数据和应用程序部署到目标设备。

2 地图数据的准备

ArcGIS Mobile开发的应用,不仅支持在线应用,同时也支持离线应用。在应用程序有可用的网络使用时,ArcGIS Mobile可以在线同步更新数据,并下载到本地设备上作为缓存;当网络不可用时,ArcGIS Mobile可以使用缓存数据。

本文描述的终端设备不需要考虑地图编辑功能,也不需要从地图服务器读取数据,所以在应用部署时,应预先生成缓存再直接部署到目标设备上与应用程序一起发布。

ArcToolbox为Mobile应用提供了两个工具,其中Generate Mobile Service Cache用来生成Mobile地图服务的缓存。需要注意的是,为了支持移动应用,在发布服务时,应选中“Mobile Data Access”。如果用户不需要修改地图数据,还可以创建Basemap,对地图数据进行高度压缩,使之在移动设备上的性能更加优化。

3 应用程序开发

在Visual Studio 2005下提供了智能设备应用程序开发向导,可以按照向导进行应用程序的开发。为了使用ArcGIS Mobile提供的类,应当引用相应的命名空间。

3.1 在应用程序中加入Map控件

在工具箱的“ArcGIS Mobile Controls”选项卡中提供了与Mobile开发的各种控件,其中Map控件提供了对地图内容进行管理和控制的功能。当给窗体添加了一个Map对象时,Map控件会自动绑定一个MobileService对象。在ArcGIS Mobile中,地图内容通过MobileService控件获得并发送,Map主要负责地图的表现。地图服务地址和地图缓存路径的设置也保存在MobileService对象中。

3.2 从缓存读取地图数据

为了显示地图,首先通过MobileService控件读取地图缓存数据。基本步骤是:在程序初始化时,首先通过MobileService的CacheStoragePath属性设置缓存路径,然后利用MobileService的Open方法,打开缓存。示例代码如下(省略了异常捕获语句):

mobileService1.CacheStoragePath=@“MapCache”;

mobileService1.Open(CacheOpenMode.Open);

3.3 地图基本操作的实现

地图的基本操作如放大、缩小和漫游等可以通过Map控件的MapActions属性来实现。MapActions是与Map控件关联的地图操作模式集合,常用的有PanMapAction、ZoomInMapAction等。将需要的地图操作模式添加到MapActions集合,在地图操作模式需要改变时,设置Map控件的CurrentMapAction属性为MapActions集合中的一种,当前的地图操作模式也就随之改变。

例如,准备通过点击工具栏的Button实现地图放大操作,则首先创建ZoomInMapAction的新实例,然后将新实例加入Map控件的MapActions,响应Button单击事件,将Map控件的CurrentMapAction属性设置为ZoomInMapAction。代码如下:

基于WinCE 6.0操作系统实现车载终端的嵌入式地图的设计

在移动设备没有鼠标、触摸屏等定位设备时,可以采取一种变通的方式进行地图的缩放,这就是Envelope类。Envelope用来定义一个几何对象的区域,可以借助它先获取地图的显示区域,然后改变Envelope,再设置地图的显示区域。代码如下:

基于WinCE 6.0操作系统实现车载终端的嵌入式地图的设计

利用Map控件的GetExtent和SetExtent方法来获取及设置地图的可视区域。CenterAt方法可以改变地图的中心位置。为了在屏幕坐标和地理坐标之间进行转换,可以调用Map控件的ToMap和ToClient方法。

3.4 用户图层符号标绘的实现

军事上的态势标绘常常需要在地图图层之上叠加各种军标符号,比较简单的方法是响应Map控件的Paint事件。Display对象在Map图层之上显示,当所有的图层绘制完毕后,重绘Display之前会触发Paint事件,此时可以使用Display对象绘制图形、文本和图像。需要说明的是,Display对象绘制的内容不可以保持,用户应注意重绘。调用Display对象绘制一个圆点的代码如下:

基于WinCE 6.0操作系统实现车载终端的嵌入式地图的设计

另一种绘制用户符号的方法是借助绘图图层(graphic layers),Map控件的MapGraphicLayers属性表示绘图图层的集合。地图中包括地理图层(geographic layers)、注解图层(annotation layers)和绘图图层(graphic layers)三类图层。前两类图层的数据都由数据源读取,绘图图层则由用户控制,可以在地理图层、注解图层之上显示额外的信息。其使用方法是:首先为Map控件的MapGraphicLayers属性添加MapGraphicLayer对象或其派生对象的实例,然后重载该实例的Draw()方法。这样当Map重绘时,就会通过Draw()方法完成用户符号的绘制。

3.5 GPS定位功能的实现

ArcGIS Mobile提供了3个GPS相关的控件对GPS进行支持:(1)FileGpsConnection控件:提供文件GPS连接,它可以从一个包含GPS数据的文本文件中,模拟一个GPS连接,这样在调试中会非常方便;(2)Seria1P0rtGpsConnection控件:提供串口GPS连接,主要用在实际应用中;(3)GpsDisplay和上述两种GpsConnection联动,实现GPS信息在地图上的表现。

在没有GPS设备的时候,可以使用FileGpsConnection进行调试。FileGpsConnection的原理就是从一个包含GPS数据的文本文件,模拟GPS连接。将FileGpsConnection对象的FileName属性指定为这个GPS数据文件,然后调用Open和Close方法就可以打开或关闭GPS连接。每次GPS位置点改变时,都会触发GpsChanged事件,在此事件中,可以更新地图的位置。

3.6 应用程序的部署

在部署应用程序之前要在移动设备上安装一些必要的支持文件,一个是.NET CF运行,另一个是ArcGISMobile.CAB和AGMRuntime.CAB,通过ActiveSync把它们拷贝到移动设备并运行;然后把项目生成的可执行文件拷贝到移动设备上,即可以运行创建的应用程序。

如果在VS 2005环境下调试应用程序,应用程序会自动部署到目标设备上。

本文介绍了使用ArcGIS Mobile开发嵌入式GIS应用的基本方法,这些方法已经在工程实践中得到了应用。本文的主要目标是实现态势、军标在移动设备上的显示,ArcGIS Mobile作为一款专业的移动GIS平台,这些功能只是其中一小部分。ArcGIS Mobile的进一步开发,例如数据的现地编辑、数据回传等应结合ArcGIS Server来实现。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 智能手机
    +关注

    关注

    66

    文章

    18429

    浏览量

    179818
  • 嵌入式
    +关注

    关注

    5068

    文章

    19013

    浏览量

    303100
  • 操作系统
    +关注

    关注

    37

    文章

    6734

    浏览量

    123184
收藏 人收藏

    评论

    相关推荐

    嵌入式车载导航信息系统研究

    【作者】:卫小伟;【来源】:《电子设计工程》2010年02期【摘要】:分析研究嵌入式车载导航信息系统体系结构,以实时多任务嵌入式操作系统Wi
    发表于 04-24 09:31

    怎么实现嵌入式手持移动终端中文件系统

    本文中,我们将以嵌入式操作系统WINCE为背景,来讨论嵌入式手持移动终端中文件系统
    发表于 04-25 06:17

    什么是嵌入式操作系统? 

    、INTEGRITY、OSE、C ExecuTIve  什么是嵌入式操作系统 嵌入式操作系统是一种支持嵌入式
    发表于 10-28 07:35

    Android车载嵌入式操作系统怎么样?

    Android系统和汽车有什么关系?Android车载嵌入式操作系统怎么样?
    发表于 12-27 07:44

    基于Linux操作系统嵌入式网关的实现

    基于Linux操作系统嵌入式网关的实现
    发表于 03-28 09:48 29次下载

    基于嵌入式ARM & WinCE 的小型监控系统的设计

    本文介绍了嵌入式操作系统WinCE 的技术特性、构建基于WinCE嵌入式平台以及在构建的平台上开发
    发表于 06-10 14:02 22次下载

    基于嵌入式Linux的车载终端的设计与实现

    针对城市交通管理中车辆管理和调度困难的问题,提出了一种基于嵌入式Linux车辆监控管理系统车载终端方案。方案采用ARM核心处理器、嵌入式L
    发表于 01-06 17:06 30次下载

    嵌入式操作系统WINCE实践教程

    嵌入式操作系统WINCE实践教程,哈理工大学WinCE教程课件,内含实验例子。
    发表于 03-14 16:13 4次下载

    基于嵌入式ARM&WinCE的小型监控系统的设计

    本文介绍了嵌入式操作系统WinCE的技术特性、构建基于WinCE嵌入式平台以及在构建的平台上开发嵌入式
    发表于 04-18 14:12 1次下载

    谷歌车载嵌入式操作系统Android Automotive

    当中。目前,谷歌正在将该服务提供给采用谷歌车载嵌入式操作系统Android Automotive的汽车制造商。
    发表于 04-14 21:03 6017次阅读

    嵌入式操作系统如何应用_嵌入式操作系统的组成

    本文首先介绍了入操作系统的特点,其次阐述了嵌入式操作系统的应用,最后介绍了嵌入式操作系统的组成
    发表于 09-01 16:36 3575次阅读

    嵌入式操作系统FreeRTOS的原理实现

    嵌入式操作系统FreeRTOS的原理实现(嵌入式开发工具使用实验报告)-嵌入式操作系统FreeR
    发表于 07-30 12:03 31次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>FreeRTOS的原理<b class='flag-5'>实现</b>

    什么是嵌入式操作系统 常见的嵌入式系统有哪些

    、INTEGRITY、OSE、C ExecuTIve  什么是嵌入式操作系统 嵌入式操作系统是一种支持嵌入式
    发表于 10-21 09:36 27次下载
    什么是<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b> 常见的<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>有哪些

    嵌入式操作系统

    嵌入式操作系统一、嵌入式操作系统概述1.1 嵌入式操作系统的特点1.2
    发表于 11-03 18:36 46次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>

    什么是嵌入式操作系统

    嵌入式操作系统是一种专门的操作系统(OS),旨在为非计算机的设备执行特定任务。嵌入式操作系统的主要工作是运行允许设备完成其工作的代码。
    的头像 发表于 12-23 15:33 7666次阅读
    什么是<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>?