关闭

Arcgis Flex下的缓冲分析

标签: flexArcGIS
1107人阅读 评论(0) 收藏 举报
分类:

       最近在研究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
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Arcgis for js之GP实现缓冲区计算

GP服务的存在使得在Web端使用ArcGIS 提供的空间分析,而这些分析的能力是和桌面中的一样的。因此,是Arcgis for js的一个重点,也是一个难点。因此,在本文讲述如何发布并在代码中调用GP...
  • GISShiXiSheng
  • GISShiXiSheng
  • 2015-11-18 07:38
  • 4090

ArcGIS对矢量进行缓冲分析,并将缓冲区域转化为栅格数据

应用需求:矢量数据与栅格数据叠加,对矢量进行2个缓冲区分析,不同缓冲区赋不同的值,并将生成的缓冲区转为栅格数据 矢量数据:道路线矢量 栅格数据:高分正射影像 栅格矢量叠加: (1)对矢量进缓冲区分...
  • u011574296
  • u011574296
  • 2017-03-01 11:32
  • 1425

ArcGIS Flex API进行缓冲分析的讨论

在ArcGIS Flex API中可以通过GeometryService服务来进行缓冲分析,下面我们来探讨一下缓冲分析的实现。API中有专门用于处理Geometry服务,要进行缓冲分析,首先我们需要在...
  • lxping1012
  • lxping1012
  • 2013-01-10 12:48
  • 3492

基于ArcGis10缓冲分析方法的超高压送电线路路径优化

  • 2013-12-23 20:57
  • 350KB
  • 下载

arcgis for flex api version3.7 教程:7.使用Directions查询路线(最短路径分析)

通过使用Directons组件来计算两点或多点之间的路线,在地图上添加出行路线并显示逐步说明。本节主要是讲解如何添加使用Directons组件,自定义布局让组件面板显示在屏幕左边,与地图窗口分两栏显示...
  • xiliangxiaoke
  • xiliangxiaoke
  • 2015-04-02 13:56
  • 854

GNServer(几何网络分析)扩展ArcGIS Rest—Flex Widget

GNTraceWidget.xml GNTraceWidget会使用到的一些参数,在GNTraceWidget.xml文件中设置,有些参数根据规范可以在xml文件一次配置好,不需要提供用...
  • heyubingzju
  • heyubingzju
  • 2011-08-28 13:56
  • 1623

ArcGIS Server Web ADF框架与FLEX API的比较分析

  • 2012-05-01 21:32
  • 2.04MB
  • 下载

ArcGis Flex 聚合 POI聚合分析

  • 2015-05-21 17:25
  • 3.68MB
  • 下载

ArcGIS.Server.9.3和ArcGIS API for Flex的GeoprocessingServices和服务区分析(十二)

目的: 1.ArcGIS API for Flex用GeoprocessingServices实现网络分析中的服务区分析,本例子根据driveTimes值分析出在指定时间内的区域范围情况,效果图中有...
  • luckypeng
  • luckypeng
  • 2015-04-14 09:59
  • 756

ArcGIS.Server.9.3和ArcGIS API for Flex的GeoprocessingServices和最短路径分析(十三)

目的: 1.ArcGIS API for Flex用GeoprocessingServices实现网络分析中的最短路径分析,本例子根据在地图上指定Stops点和Barriers点然后进行最短路径的分...
  • luckypeng
  • luckypeng
  • 2015-04-14 10:01
  • 538
    个人资料
    • 访问:25724次
    • 积分:596
    • 等级:
    • 排名:千里之外
    • 原创:34篇
    • 转载:5篇
    • 译文:0篇
    • 评论:7条
    最新评论