摘要:本文主要采用Dephi+ArcObject的组件式开发模式,实现地理信息查询以及车辆管理方案。
关键词:Arcobjects,信息查询论文,空间分析论文,车辆监控
一、Arcobjects简介
ArcObject是ESRI公司Arcinfo系列软件的底层组件集,是基于COM技术所构建的一系列COM组件集。虽然AO是依附在ArcGISDesktop产品中的软件开发包,不能开发独立的应用;但对于定制强大的GIS编辑于分分析功能的项目来说仍然是不二的选择。使用AO时我们只需要利用ESRI提供的这些AO组件来进行积木式的组装任务,按照应用需求将这些底层功能组装集合成一个更强大的COM对象。AO是基于微软的COM技术来构建的,因此它的开放性和扩展性很强大,可以有VBA、VB、VC++、DEPHI等多种支持COM标准的开发工具,而扩展性是指AO组件没有提供的功能,如需要定义一种新的数据格式,你就可以利用COM技术来写自己的COM组件,对AO组件库进行扩展补充。ArcGIS软件具有良好的系统开放性,可与其他系统实现真正的无缝集成
二、开发实例论文
笔者参加的“石林地理信息查询系统”是GIS和MIS相结合的一个应用系统,对数据库操作较多,我们采用了Dephi+AO的组件式开发模式。即采用ArcGIS、MicrosoftSQLServer2005、Delphi7.0进行系统开发工作。实践证明这种方法给我们的开发带来了很大的方便性和可操作性。
1、 系统简介
石林地理信息查询系统以信息查询为主的系统,图形的基本操作:放大、缩小、平移、图层可见性选择;查询功能:图形对象的属性查询、点查询、线查询、查询最近目标等;最短路径分析,空间分析:主要是缓冲区分析;距离和面积量测;图形上加点、加线、加多边形、注记文字。车辆监控、跟踪当前车辆、定越界报警、车辆历史轨迹回放等。系统功能完备,界面友好,操作方便,具有无级放缩,分层显示、地理信息查询、显示位置准确等特点。
在每辆车上配备GPS终端接收机,信息中心主机通过GPRS网络或Internet网络发送控制命令和接收来自车辆的各种数据(包括坐标信息、工作状态等信息),信息中心不断的把这些数据写入数据库(MicrosoftSQLServer2005数据库),车辆信息放在数据库中。从而达到对车辆轨迹进行追踪分析。
安装在车辆上的车载终端由先进的GPRS通信模块、GPS卫星定位系统、卫星天线以及汽车防盗器接口、数据接口、防破坏自动报警和遥控熄火电路所组成。本系统兼容GSM/GPS系统功能,如无GPRS网络,可以自动切换在GSM方式进行数据传输和报警。
2、软件功能
1、查询
点状物查询,线状物查询、面状物查询、以点为中心查询、圆选择查询、矩形选择查询、
多边形选择查询、地名查询、查找最近目标等
2、 最短路径分析(A点->B点)
//最短路径查询
RoadQueryForm.ManualDock(PageControl1,RoadQueryForm,altop);
PageControl1.ActivePageIndex:=PageControl1.PageCount
//查询结果显示
RoadQueryForm.Show;
鼠标点击法:在图上的道路的端点任意点击两点,得到分析路径如下图(图1)(图2):
(图1)(图2)
3、空间分析
缓冲区分析:点缓冲分析、线缓冲分析、多边形缓冲分析。
//多边形缓冲分析';
mainform.ADOConnection1.DefaultDatabase:='StoneForest';//选择数据库
/***********************/
selectcarform.ADOQuery2.sql.add('selectCarID,CarNO,Telphonefromdbo.carlistdbo_carlist');
selectcarform.DBGrid1.Columns[0].FieldName:='CarID';
selectcarform.DBGrid1.Columns[1].FieldName:='CarNO';
selectcarform.DBGrid1.Columns[2].FieldName:='Telphone';
//查询结果显示
selectcarform.show;
自定义点缓冲区分析:先选择要查询的图层,在工具栏的工作层的编辑框选择,然后在地图上任意点击一下,就会出现输入缓冲距离的对话框,输入距离后,地图就移动到你点击的点位置,就会在图上画的点外画一个圆圈为你的选择范围,并且高亮显示这个范围内的工作层的所有对象(点或线),属性和数目显示在对话框中。还有就是自定义线缓冲区分析、自定义多边形缓冲区分析。如下图3
(图3)
4、车辆监控:在电子地图上显示当前车辆运动轨迹以及实时、历史的状况:(坐标、所在的位置、定位状态、采样时间等)。
(图4)
withmainform.adoStoredproc1dobegin
ProcedureName:='SlCarInfoQuery';//调用查询参数
/***********************/
Parameters.ParamByName('@CarID').Value:=trim(selectcarform.DBGrid1.Fields[0].AsString);
ExecProc;//执行查询
cardisform.Xcoord.Caption:=mainform.adoStoredproc1.Recordset.Fields['Xcoord'].Value;
cardisform.Ycoord.Caption:=mainform.adoStoredproc1.Recordset.Fields['ycoord'].Value;
cardisform.driver.Caption:=mainform.adoStoredproc1.Recordset.Fields['driver'].Value;
cardisform.Position.Caption:=mainform.adoStoredproc1.Recordset.Fields['position'].Value;
cardisform.DateTime.Caption:=mainform.adoStoredproc1.Recordset.Fields['datetime'].Value;
cardisform.carInfo.Caption:=mainform.adoStoredproc1.Recordset.Fields['note'].Value;
//查询结果的显示
cardisform.show;
5、车辆回放轨迹效果:
车辆行驶轨迹的回放、查询、维护:所有车辆终端发送过来的GPS定位数据在数据库中都有轨迹记录.数据库管理模块提供了工具可以对这些数据进行查询及维护.
地图上完全清晰地显示车辆全程行车轨迹。车辆历史轨迹回放:用户利用该功能在某个时间段里该车所走的路线,在回放中用户可以选择“车辆、时间段、回放速度的快慢”等。如下图5
//请选择你要跟踪的车辆,数据库记录
ADOTable1.TableName:='dbo.CarGPS';
ADOTable1.Open;
withselectCarformdobegin
/***********************/
ADOQuery1.sql.add('SELECTmax(ID)FROMCarGPS');
/***********************/
MaxID:=ADOQuery1.Recordset.Fields[0].Value;
/***********************/
ifselectcarForm.DBGrid1.DataSource.DataSet.Recno=1then
StringGrid1.rows[1].Clear
elseifselectcarForm.DBGrid1.DataSource.DataSet.RecNo=2then
StringGrid1.rows[2].Clear;
readroadlinecoord('data'+trim(selectcarform.DBGrid1.Fields[0].AsString)+'.txt');
tracking:=true;
iftrackingthenclpt:=roadpoints.Item(0);
iftrim(selectcarform.DBGrid1.Fields[0].AsString)='车牌号'then
tl.AddEvent(clpt,7)
elseiftrim(selectcarform.DBGrid1.Fields[0].AsString)='车牌号'then
/***********************/
zkmmap.CenterAt(clpt.x,clpt.y);//居中显示
zkmmap.FromMapPoint(clpt,tipX,tipY);//移到当前车辆位置
(图5)
6、结语
该系统综合运用了GPS卫星定位技术、GPRS无线网络传输技术、GIS应用系统,将三者结合应用在车辆导航和监控调度中。将GIS应用系统开发一般原理(查询、空间分析)与车辆导航和监控具体实际相结合,然后提出了基于ArcGIS的地理信息查询及车辆管理解决方案。
参考文献
[1]蒋波涛编著ArcObject开发基础与技巧——基于VisalBasic.NET武汉大学出版社2006
[2]韩鹏等编著地理信息系统开发—ArcObjects方法武汉大学出版社2005
[3]胡志杰王长琼基于ArcGIS的物流配送系统集成研究武汉理工大学物流工程学院
[4]廖凌松,黄杏元.基于Arclnfo的开放式组件GIS的开发探讨.计算机应用研究,2002年第二期.
[5]2009BorlandSoftwareCorporation-Delphi帮助文件