关于PDA、GPS等动态资源的几种GIS解决方案(原创)

今年来GIS发展迅速,特别是实时监控中引入了GPS,PDA等动态资源,使得GIS在各个行业的应用更为广泛。

1.在这些动态资源资源的监控中主要要求的功能如下:
(1).动态标绘:动态标绘各种形状的资源
(2).轨迹模拟:动态显示轨迹
(3).轨迹回放:回放模拟历史轨迹状况
(4).移动资源:移动拖放资源放到任意位置
以上功能均是根据数据库实时更新读取和保存的

以下是本人对于PDA、GPS等动态资源的几种GIS解决方案的一些思考

2.基于BS的做法
比较简单
(1).使用控件画出来
(2).使用VML语言进行绘制

3.基于CS的做法
比较麻烦

(1).使用控件画出来
缺点:
拖放地图是必须隐藏控件,因联动占用内存较大,切效果很差;
当资源控件布满地图控件时无法用鼠标点击触发地图控件,因资源控件挡住了地图控件

(2).使用IElement
以下是可用的接口和根据接口可实现的功能
IGraphicsContainer 添加 IElement

组添加管理
IGroupElement

IGraphicsContainer.LocateElementsByEnvelope 
获取Envelope内的Element

IGraphicsContainer.LocateElements
通过点及缓冲获取Element

IGraphicsContainer.UpdateElement 
修改Element(包括位置)

IGraphicsContainer.DeleteElement
删除Element 可以组删除

IGraphicsContainerSelect
管理选择,不选或获取选择的接口

IElementProperties(IElement)
用以自定义Element属性信息的接口
可以存取用户自定义信息

IElement的可视控制
通过删除
或者移动到视图外边

IGroupElement3.ReplaceElement
用以修改位置

缺点:使用Element是效率很低的,或者说最低的方案,程序写不好还会由内存泄漏问题。尤其做监控系统,多个目标可能会长时间使用,因为监控系统往往很多天不关闭或重启。

本人做了Element的实现类,可以实现轨道的模拟,和数据库的动态交互

(3).AE中的GPS模块

ArcMap中的GPS模块。进到帮助里找到这么几个核心的接口:IGpsConnection负责与GPS的连接;IGpsDisplay负责地图上的实时显示;IGpsFeed用来测试连接状态。

要在地图上实时显示GPS的运动轨迹,必然要先连接GPS。IGpsConnection中有BaudRate(波特率)、CoomPort(通讯端口)、Parity(奇偶)、DataBits(数据位)、StopBits这些属性可以在连接之前进行设置。

GPS Support(CoClass)

GPS 支持的Coclass和接口主要在Carto库,还有一些class和接口(例如GpsExtension)可以在ArcMapUI库找到。

主要的coclass是RealTimeFeedManager,通过这个对象,你可以访问和控制realtime feed从GPS装置,或者模拟feed 从feature class.

利用GpsFeed与GpsConnection结合可以连接GPS设备。

如果你想回放数据,可以利用RealTimeFeedSimulator。

RealTimeFeedManager的IGpsDisplayProperties,你可以定制显示位置。也可以利用IRealTimeDestination控制目标属性,通过IPositionTrails控制位置特征。也可以通过IRealTImeLog接口在Feature class存贮位置。

(4).动态图层
该种方法比较麻烦,但是效果和内存节约情况很好。主要是实现自己的IDynamicLayer类

以下是可用的接口:
IDynamicDisplay接口进行绘画 InterfaceProvides access to Dynamic Display. 
DrawLine Draws a line between the specified points on the dynamic display. 
DrawMarker Draws a marker at the specified point on the dynamic display. 
DrawMultipleLines Draws specified lines on the dynamic display. 
DrawMultipleMarkers Draws a marker at the specified points on the dynamic display. 
DrawPolygon Draws specified polygon with fill and line on the dynamic display. 
DrawPolyline Draws specified polyline on the dynamic display. 
DrawRectangle Draws specified rectangle with fill and line on the dynamic display. 
DrawText Draws text at the specified point on the dynamic display. 
DynamicGlyphFactory Retrieves the dynamic glyph factory.

在动态图层中,需要自己写一个继承自Control, ILayer, IDynamicLayer, IGeoDataset, IPersistVariant, ILayerGeneralProperties, ILayerExtensions, IEnumerable, IDisposable的类`并实现IDynamicLayer.DrawDynamicLayer方法,将对象的重绘方法写在些方法内,绘制对象可采用ESRI.ArcGIS.Display.IDynamicDisplay.DrawMarker()或者DrawPolygon()等方法,也可以直接采用csgl(OPENGL For C#)的方法进行绘制.

如以下OPENGL方法

GL.glPushMatrix();
        GL.glLoadIdentity();

//draw the compass list
        GL.glPushMatrix();
        GL.glTranslatef((float)m_deviceFrame.left + 70.0f, (float)m_deviceFrame.top + 70.0f, 0.0f);
        GL.glScalef(90.0f, 90.0f, 0.0f);
        GL.glRotatef((float)Display.DisplayTransformation.Rotation, 0.0f, 0.0f, 1.0f);
        GL.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
        GL.glCallList(m_compassList);
        GL.glPopMatrix();

经过测试采用DynamicLayer的方法在地图上绘制上千个移动点对象在亚秒级时间间隔下也是非常的流畅.测试机器为(Pentium M 1.6G,1.5G RAM,FX5200  32bit 64M RAM  ).

动态图层可以很好的利用在交通、航空等移动对象跟踪的领域.

(5).使用动态生成图层并更新起Featureclass

这种方式就是读取属性表并生成点图层,然后刷新图层,这样在对GPS的操作上更为方便,就是对图层的操作。但是这种有一

点确定,对于大数据量的时候,速度方面是个限制。我已对这种做法进行测试。

(6).使用IMapcontrol.DrawShape方法

这种方式,速度上有一定的优越性,但是对于GPS点的选取和调度有点麻烦,且速度不可取。
现自己对GPS点选择的一种思路:当鼠标点击下时,对鼠标点击点进行缓冲生成面元素,然后使用

IRelationalOperator.Within接口逐个判断哪个GPS点在该范围内。

关于PDA、GPS等动态资源的几种GIS解决方案的更多相关文章

  1. servlet基本原理(手动创建动态资源+工具开发动态资源)

    一.手动开发动态资源 1 静态资源和动态资源的区别 静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源. 动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变. <scr ...

  2. zzy:请求静态资源和请求动态资源, src再次请求服务器资源

    [总结可以发起请求的阶段:请求动态资源:通过web.xml匹配action然后,自定义Servlet处理该action1)form表单提交请求的时候,用action设定,该页面发起请求的Servlet ...

  3. Liferay 6.2 改造系列之十一:默认关闭CDN动态资源

    在行业客户中,一般无法提供CDN服务,因此默认关闭CDN动态资源功能: 在/portal-master/portal-impl/src/portal.properties文件中,有如下配置: # # ...

  4. WPFの静态资源(StaticResource)和动态资源(DynamicResource)

    下面是前台代码: <Window.Resources>        <TextBlock x:Key="res1" Text="好好学习"/ ...

  5. nginx+tomcat集群配置(2)---静态和动态资源的分离

    前言: 在web性能优化的领域, 经常能听到一个词, 就是静态/动态资源分离. 那静态/动态资源分离究竟是什么呢? 本文不讲文件系统服务, 云存储, 也不讲基于CDN的优化. 就简单讲讲基于nginx ...

  6. 学习笔记4_ServletContext(重要整个Web应用的动态资源之间共享数据)

    ServletContext(重要) 一个项目只有一个ServletContext对象! 我们可以在N多个Servlet中来获取这个唯一的对象,使用它可以给多个Servlet传递数据! 与天地同寿!! ...

  7. [WPF]静态资源(StaticResource)和动态资源(DynamicResource)

    一.文章概述 本演示介绍WPF基本采用静态和动态的资源.而且两者都做一个简单的比较. 静态资源(StaticResource)指的是在程序加载内存时对资源的一次性使用,之后就不再訪问这个资源了:动态资 ...

  8. WPF基础篇之静态资源和动态资源

    静态资源(StaticResource)指的是在程序载入内存时对资源的一次性使用,之后就不再访问这个资源了. 动态资源(DynamicResource)指的是在程序运行过程中然会去访问资源. 一.定义 ...

  9. wpf中静态资源和动态资源的区别

    静态资源(StaticResource)指的是在程序载入内存时对资源的一次性使用,之后就不再访问这个资源了. 动态资源(DynamicResource)指的是在程序运行过程中然会去访问资源.

随机推荐

  1. Docker自学纪实(六)搭建docker私有仓库

    docker的镜像仓库分两种:一种是从官方公有仓库拉取:还有就是自己搭建私有仓库.官方的镜像仓库是面对整个应用市场的:私有仓库一般用于公司内部,就是公司项目自身所需的镜像.搭建私有仓库有什么好处?私有 ...

  2. 在github上查找star最多的项目

    如何在github上查找star最多的项目 在search中输入stars:>1 就可以查找所有有star的项目,然后右上角根据自己的需要筛选 当我输入stars:>10000的时候,就会 ...

  3. 解决php文字及图片显示乱码的问题

    我们在学习PHP的过程中,想必有不少新手朋友们都遇到过乱码的问题,解决乱码问题不仅是小白们必须掌握的基础知识点,也是最为常见的PHP面试题之一.下面就结合简单代码示例给大家总结介绍下,PHP遇到乱码时 ...

  4. scrapy--selenium(二)

    今天学习了很多,还是想给大家讲一讲正题:scrapy的动态加载AJax的网页爬取:selenium.让我们开始 三: 针对大型电商网站:京东网,因为比较有代表性,爬出来有点小成就.先给大家看下效果图. ...

  5. 易语言制作的QQ聊天中常用的GIF图片【带源码下载】

    该软件调用网页实现表情包制作,使用了精益模块. 最近比较火的王境泽.张学友.切格瓦拉.为所欲为.今天星期五.黑人问号脸.偷电瓶车.诸葛孔明.金坷垃等都可以通过此软件在线制作属于你的表情包. 太困了懒得 ...

  6. iOS-修改modal出来的控制器的大小

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{    static BOOL sh ...

  7. POJ:1064-Cable master

    Cable master Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 58613 Accepted: 12231 Descri ...

  8. Arch + Win10 EFI 引导重装记录

    Lenovo G50-70 BCM43142网卡,Win10原版镜像. 主板调成EFI启动. 制作Win10启动盘,打开UltraISO,文件,打开,选中Win10镜像,启动,写入硬盘映像,格式化,写 ...

  9. 理解JAVA与C的运行机制

    1.java的运行机制 java的编译过程,将java的源程序(扩展名为.java的文件),由java编译程序将java的字节码文件(.class文件)在jvm上运行,机器码有cpu运行, jvm编译 ...

  10. luoguP1726 上白泽慧音

    P1726 上白泽慧音 题目描述 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村 ...