Arcgis for Flex GIS系统基本功能.docx
- 文档编号:6184242
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:28
- 大小:206.46KB
Arcgis for Flex GIS系统基本功能.docx
《Arcgis for Flex GIS系统基本功能.docx》由会员分享,可在线阅读,更多相关《Arcgis for Flex GIS系统基本功能.docx(28页珍藏版)》请在冰豆网上搜索。
ArcgisforFlexGIS系统基本功能
GIS系统代码研究
*主要用到开发语言Html(Flash载体),Mxml,ActionScript,C#(Web服务),C++视频播放OCX控件。
*主要用到的技术Flash,WebService,OCX。
一、系统总体架构
GIS部分主要需要跟以下三个部分进行交互:
系统结构示意图
1.视频服务主要处理视频部分的业务。
这部分需要用到三个SQLServer数据库NVR_Data,NVR_Storage,police数据库,视频服务包括NVC(视频存储)NVT(流媒体)NVP(中心服务)三个自服务,另外还包括NSC服务(存储服务暂时没有涉及)。
2.地图代理服务可以访问本地离线或者XX,google等在线数据库,GIS部分显示的地图数据就是从地图代理服务而来。
3.WebService调用police数据库查询结果返回给GIS部分用于标点查询等。
比如查询所有视频,卡口,警力分布等均是调用该服务。
二、程序代码层次结构
整体结构如下;
其中src目录下为代码结构
Flex4.6.0是Flex的库文件
引用的库是我们需要引用的
其中agslib-3.0-2012-06-06.swc是我们用到的核心的东西既Arcgisapiforflex
下面其他文件夹都是生成目录或者项目的一些临时文件夹我们不需要关注
Src目录下的结构层次如下图:
其中widgets是我们需要开发的所有插件
Config-all.xml是全局配置文件其他都是框架代码一般不需要做任何修改
Widgets目录下是我们所有的插件,每一个插件对应一个包
正常情况下以一个插件包含一个mxmx和同名的xml文件
生成到发布目录后就分别是swf文件和xml文件
三、GIS总体框架
目前的GIS部分采用ArcgisViewer也就是GIS+Widget插件方式以下均是Widget
这种方式开发比较灵活,我们可以将GIS部分业务功能进行分解。
通过业务功能的组合满足不同用户的需求。
另外将业务功能封装成widget可以使不同的开发者关注各自侧重的问题,便于系统开发。
所有业务插件与GIS系统的整合是通过Config.Xml的文件进行配置的:
典型的一个config.xml配置文件如下:
xmlversion="1.0"?
>
///基础信息配置以及地图底色配置
--BlackGold-->
--BADCF3old0xFFFFFF,0x333333,0x101010,0x000000,0xFFD700-->
--walnuthe20121115,字体需要修改--> ///地图代理服务器地址配置 //192.168.1.133/WebMapProxy/RequestProxy.ashx --replacethefollowingurlwithyourowngeometryservice--> -- ///地图基本放大缩小鹰眼等工具插件配置 //以下这些widget是一些地图上的小插件比如郭鹰眼比例尺放大缩小等常用工具 -- //地图初始化位置层级图层配置 ///地图基本图层配置 //基础地图配置这里配置了一个卫星地图和一个普通电子地图。 url="BAIDU_SATELLITE"/> url="BAIDU_EMAP"/> -- url="http: //localhost/ArcGIS/rest/services/data_mercator/MapServer"/> --> --horizontal(default)|float|vertical|fix--> ///业务插件配置列表这一部分插件会出现在GIS的工具条中并且按照各自配置的图标进行显示点击后弹出相应的业务窗体。 icon="assets/images/i_bookmark.png"//插件对应图标 config="widgets/Bookmark/BookmarkWidget.xml"//插件对应配置文件 url="widgets/Bookmark/BookmarkWidget.swf"/>/插件swf文件路径(相对web根目录相对路径) icon="assets/images/i_draw2.png" config="widgets/Draw/DrawWidget.xml" url="widgets/Draw/DrawWidget.swf"/> icon="assets/images/coord_correct.png" config="widgets/CoordinatesCorrection/CoordinatesCorrectionWidget.xml" url="widgets/CoordinatesCorrection/CoordinatesCorrectionWidget.swf"/> icon="assets/images/i_webcam.png"x="100"y="250" config="widgets/VideoList/VideoListWidget.xml" url="widgets/VideoList/VideoListWidget.swf"/> icon="assets/images/policeman.png" config="widgets/Policeman/PolicemanWidget.xml" url="widgets/Policeman/PolicemanWidget.swf"/> icon="assets/images/i_satellite.png" url="widgets/GpsTracker/GpsTrackerWidget.swf"/> icon="assets/images/i_search.png" url="widgets/BufferSearch/BufferSearchWidget.swf"/> icon="assets/images/i_camera.png" config="widgets/KKVideoList/KKVideoListWidget.xml" url="widgets/KKVideoList/KKVideoListWidget.swf"/> icon="assets/images/i_camera.png" url="widgets/KKVideoQuery/KKVideoQueryWidget.swf"/> icon="assets/images/i_search.png" config="widgets/Search/SearchWidget_Louisville.xml" url="widgets/Search/SearchWidget.swf"/> config="widgets/Legend/LegendWidget.xml" icon="assets/images/Legend32.png" url="widgets/Legend/LegendWidget.swf"/> config="widgets/Chart/ChartWidget.xml" icon="assets/images/i_piechart.png" url="widgets/Chart/ChartWidget.swf" left="80"bottom="80"/> //GIS系统相关WebServiced地址配置 //192.168.1.133/dongguanWebService/dongguan.asmx? wsdl"TimeOut="60"/>//GIS部分需要调用的数据查询WebService地址。 四、功能分解实现 1.程序插件配置方式 Config.Xml配置文件参见第三节内容。 2.Flex调用webservice服务 munication.webservice.WebServiceHelper;提供了调用Webservice的通用方法 需要调用webService的时候 privatefunctioninit(): void { varext: Extent=map.extent; trace(ext.xmin.toString()+""+ext.ymin.toString()+""+ext.xmax.toString()+""+ext.ymax.toString()); graphicsLyr=newGraphicsLayer(); graphicsLyr.symbol=newPictureMarkerSymbol("assets/images/i_camera.png"); //map.addLayer(graphicsLyr); LayerManager.addGraphicsLayer(map,graphicsLyr); graphicsLyrLabel=newGraphicsLayer(); LayerManager.addGraphicsLayer(map,graphicsLyrLabel); varvalue: Object=configData.wsdls.find("dongguan"); varwsUrl: String=String(value.address); wsHelper=newWebServiceHelper(wsUrl); wsHelper.sendRequestShort("GetAllKKCamera",null,getAllCameraHandler); cluseterTool=newClustererTool(map); graphicsLyr.clusterer=cluseterTool.cluseter; infoWIndowManager=newInfoWindowManager(); } privatefunctiongetAllCameraHandler(value: Object): void { if(videoList==null) videoList=newArrayCollection() varresult: ArrayCollection=valueasArrayCollection; varitem: Object=null; vararr: Array=null; varcamera: Graphic=null; varlabel: Graphic=null; varmercator: MapPoint=null; varlonlat: MapPoint=null; for(vari: int=0;i { arr=result[i].toString().split(","); mercator=newMapPoint(); mercator.x=Number(arr[4].toString()); mercator.y=Number(arr[5].toString()); item=newObject();//木场隧道口,木场隧道口,0,12636835.13,2623397.21 item.cameraType="KK"; item.cameraId=arr[0].toString(); item.cameraName=arr[1].toString(); item.cameraAddress=arr[2].toString(); item.cameraStatus=arr[3].toString()=="1"? "开启": "关闭"; item.cameraLng=arr[4].toString(); item.cameraLat=arr[5].toString(); item.videoNames=arr[6].toString(); item.videoUrl=videoUrl; item.geometry=mercator; videoList.addItem(item); camera=newGraphic(mercator); camera.attributes=item; //camera.addEventListener(MouseEvent.DOUBLE_CLICK,cameraDoubleClickHandler); camera.addEventListener(MouseEvent.CLICK,cameraClickHandler); graphicsLyr.add(camera); camera.infoWindowRenderer vartxtSymbol: TextSymbol=newTextSymbol(arr[1].toString(),null,0x000000,1,true,0x000000,true,0xFFFFFF,"middle"); txtSymbol.textFormat=newTextFormat(null,12); txtSymbol.yoffset=-35; label=newGraphic(mercator); label.symbol=txtSymbol; graphicsLyrLabel.add(label); } } 3.动态绘制摄像头(视频卡口等) privatefunctiongetAllCameraHandler(value: Object): void { if(videoList==null) videoList=newArrayCollection() varresult: ArrayCollection=valueasArrayCollection; varitem: Object=null; vararr: Array=null; varcamera: Graphic=null; varlabel: Graphic=null; varmercator: MapPoint=null; varlonlat: MapPoint=null; for(vari: int=0;i { arr=result[i].toString().split(","); mercator=newMapPoint(); mercator.x=Number(arr[4].toString()); mercator.y=Number(arr[5].toString()); item=newObject();//木场隧道口,木场隧道口,0,12636835.13,2623397.21 item.cameraType="KK"; item.cameraId=arr[0].toString(); item.cameraName=arr[1].toString(); item.cameraAddress=arr[2].toString(); item.cameraStatus=arr[3].toString()=="1"? "开启": "关闭"; item.cameraLng=arr[4].toString(); item.cameraLat=arr[5].toString(); item.videoNames=arr[6].toString(); item.videoUrl=videoUrl; item.geometry=mercator; videoList.addItem(item); camera=newGraphic(mercator); camera.attributes=item; //camera.addEventListener(MouseEvent.DOUBLE_CLICK,cameraDoubleClickHandler); camera.addEventListener(MouseEvent.CLICK,cameraClickHandler); graphicsLyr.add(camera); camera.infoWindowRenderer vartxtSymbol: TextSymbol=newTextSymbol(arr[1].toString(),null,0x000000,1,true,0x000000,true,0xFFFFFF,"middle"); txtSymbol.textFormat=newTextFormat(null,12);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Arcgis for Flex GIS系统基本功能 GIS 系统 基本功能