Arcgis Flex下的缓冲分析
来源:互联网 发布:手机怎么开淘宝直播 编辑:程序博客网 时间:2024/05/18 00:57
最近在研究flex下针对点要素实现缓冲分析,并查询指定图层在缓冲区域内的点要素。实现思路是先使用GeometryService服务的Buffer方法对点进行缓冲分析,然后将分析出的缓冲区域作为QueryTask的参数去查询指定图层中的要素,这样查询出来的要素都是包含在缓冲区域内的。但是,在有些业务场景中,要查询的点要素是保存在业务数据库中的。所以,就需要我们自己去写一些方法代替QueryTask的工作。基本思路是:将点的经纬度坐标转换成魔卡托投影后,使用几何学公式(x1-x2)^2+(y1-y2)^2 <= r^2 来判断点是否在圆的范围内。
下面是实现的步骤:
第一步:使用GeometryService服务的Buffer方法进行缓冲分析,将得到的缓冲区域显示在地图上。
private var geometryService:GeometryService = new GeometryService();//缓冲分析private function onBufferAnlysis():void { if(building != null && queryTarget != null){var bufferParm:BufferParameters=new BufferParameters(); bufferParm.bufferSpatialReference = map.spatialReference; bufferParm.outSpatialReference=map.spatialReference; bufferParm.unit=GeometryService.UNIT_METER; //指定单位为米bufferParm.distances=[this.txtScope.value*1000]; bufferParm.geometries = [cmbLP.selectedItem.geo]; //缓冲分析的点geometryService.showBusyCursor = true;geometryService.buffer(bufferParm, new AsyncResponder(onBufferCompleted, onBufferFaultd, null)); } }//加载缓冲区private function onBufferCompleted(event:Object,token:Object = null):void{bufferLayer.clear();var sfs:SimpleFillSymbol=new SimpleFillSymbol("solid",0x6699FF,0.5);for each (var geometry:Polygon in event) { var graphic:Graphic = new Graphic(); graphic.geometry = geometry; graphic.symbol = sfs; bufferLayer.add(graphic); this.queryTask.url = LayerOper.getInstance().getLayerUrl(queryTarget); //设置图层Url//定位到点this.map.zoomTo(geometry);//查询指定图层在缓冲区域内的点要素indentifyQuery(geometry);} } //缓冲区建立失败private function onBufferFaultd(error:Object, token:Object = null):void{ Alert.show(String(error), "缓冲分析失败!");}第二步:查询指定图层在缓冲区域内的点要素,讲查询到的要素在地图上显示。
//查询指定图层在缓冲区域内的点要素private function indentifyQuery(geo:Geometry):void { var query:Query = new Query();query.returnGeometry = true;query.geometry = geo; //指定缓冲区域,对区域内的要素进行查询query.where="1=1";query.outFields = ["UserID","Name"];queryTask.showBusyCursor = true;queryTask.execute(query, new AsyncResponder(onQueryComplated, onQueryFault));}//将查询到的要素在地图上显示private function onQueryComplated(results:FeatureSet, token:Object = null):void{ if (results.features.length > 0) { var source:ArrayCollection = new ArrayCollection();for each (var obj:Object in results.features) {var _g:Graphic = Graphic(obj);_g.toolTip = _g.attributes.Name;source.addItem({id:_g.attributes.UserID,name:_g.attributes.Name,geo:_g.geometry});_g.symbol = LayerOper.getInstance().getSymbol(queryTarget);this.bufferLayer.add(_g);}} }//查询失败private function onQueryFault(error:Object, token:Object = null):void{ Alert.show(String(error), "查询要素失败!");}
参考资料:http://blog.csdn.net/lxping1012/article/details/8489115
0 0
- Arcgis Flex下的缓冲分析
- ArcGIS Flex API进行缓冲分析的讨论
- ArcGIS for SilverLight 线要素缓冲分析的问题
- ArcGis下的叠加分析
- arcgis flex的提示
- ArcGIS.Server.9.3和ArcGIS API for Flex的GeometryService和buffer分析(十)
- ArcGIS.Server.9.3和ArcGIS API for Flex的GeoprocessingServices和服务区分析(十二)
- ArcGIS.Server.9.2.DotNet实现点、线、面的缓冲分析Buffer
- ArcGIS.Server.9.3和ArcGIS API for Flex的GeoprocessingServices和最短路径分析(十三)
- ArcGIS对矢量进行缓冲分析,并将缓冲区域转化为栅格数据
- ArcGIS Flex 3.1版本的新特点
- arcgis for flex 的编辑功能解读
- linux下的缓冲机制
- ArcGIS Viewer for Flex(部件在Flex的ArcGIS的浏览器)
- ArcGIS Viewer for Flex(部件在Flex的ArcGIS的浏览器) .(转帖)
- ArcGIS API for Flex (使用ArcGIS API for Flex 创建一个新的地图项目)
- arcgis api for flex 地图选点画线 可拖动变色【写给已逝去的arcgis flex】
- flex的用法分析
- 21个Javascript技巧
- Android仿微信底部菜单
- Holo 与 Android Design(转载观点,仁者见仁)
- 精心收集的Hadoop学习资料(持续更新)
- Windows 下编译安装lua
- Arcgis Flex下的缓冲分析
- java synchronized
- netsh命令修改IP
- iOS开发者必备:六大图片、图标处理类工具
- 第五届蓝桥杯——入门训练:圆的面积
- ADT 队列 queue
- Redis基础
- 量力而行,如何根据家庭收入和资产选车?
- data实体web应用程序