ArcGIS缓冲区分析小例子
来源:互联网 发布:淘宝卖女装货源 编辑:程序博客网 时间:2024/05/16 10:25
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:esri="http://www.esri.com/2008/ags">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
<esri:GeometryService id="myGeometryService" url="http://192.168.1.15:8399/arcgis/rest/services/Geometry/GeometryServer"/>
<esri:IdentifyTask id="identifyTask" executeComplete="identifyCompleteHandler(event)" fault="identifyTask_faultHandler(event)" url="http://192.168.1.15:8399/arcgis/rest/services/SQYF/MapServer"/>
<esri:SimpleFillSymbol id="sfs" color="0xFF0000" alpha="0.6"/>
<esri:DrawTool id="drawToolbar" map="{myMap}" graphicsLayer="{myGraphicsLayer}" drawEnd="drawEndHandler(event)" />
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.esri.ags.Graphic;
import com.esri.ags.SpatialReference;
import com.esri.ags.events.DrawEvent;
import com.esri.ags.events.GeometryServiceEvent;
import com.esri.ags.events.IdentifyEvent;
import com.esri.ags.geometry.Geometry;
import com.esri.ags.tasks.GeometryService;
import com.esri.ags.tasks.supportClasses.BufferParameters;
import com.esri.ags.tasks.supportClasses.IdentifyParameters;
import com.esri.ags.tasks.supportClasses.IdentifyResult;
import com.esri.ags.tools.DrawTool;
import com.esri.ags.tools.NavigationTool;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.events.ItemClickEvent;
import mx.messaging.management.Attribute;
import mx.rpc.events.FaultEvent;
import mx.utils.OnDemandEventDispatcher;
[Bindable]
[Embed(source="point.png")]
public var point:Class;
[Bindable]
[Embed(source="line.png")]
public var polyline:Class;
[Bindable]
[Embed(source="poly.png")]
public var polygon:Class;
[Bindable]
public var myDataProvider:Array = new Array();
private var attributesArr:Array=["政区代码","政区名称","街道名称","设施编号",
"项目","名称","建筑面积","用地面积","建设状态",
"数据来源","建筑形式","房屋来源",""];
[Bindable]public var resultArr:Array=[];
private function itemClickHandler(event:ItemClickEvent):void
{
drawToolbar.activate(DrawTool.MAPPOINT);
switch(event.index)
{
case 0:
{
drawToolbar.activate(DrawTool.MAPPOINT);
break;
}
case 1:
{
drawToolbar.activate(DrawTool.POLYLINE);
break;
}
case 2:
{
drawToolbar.activate(DrawTool.POLYGON);
break;
}
}
}
private function drawEndHandler(event:DrawEvent):void
{
var myGraphic:Graphic=event.graphic;
var geo:Geometry=event.graphic.geometry;
//以下这个设置很重要,不然缓冲区构造不会成功
geo.spatialReference = new SpatialReference(102113);
//设置buffer参数
var bufferParameters : BufferParameters = new BufferParameters();
bufferParameters.geometries=[geo];
//buffer距离半径
bufferParameters.distances = [50];
//buffer单位
bufferParameters.unit = GeometryService.UNIT_METER;
//buffer空间参照系,102113为WKID是REST API定义好的空间参照系的id
bufferParameters.bufferSpatialReference = new SpatialReference(102113);
bufferParameters.outSpatialReference = new SpatialReference(102113);
//添加BUFFER_COMPLETE监听
myGeometryService.addEventListener(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler);
myGeometryService.addEventListener(FaultEvent.FAULT, FaultHandler);
//进行buffer分析
myGeometryService.buffer( bufferParameters );
}
private function FaultHandler(event:FaultEvent):void
{
Alert.show("sorry,GeometryServiceErro");
myGeometryService.removeEventListener(FaultEvent.FAULT,FaultHandler);
}
//buffer完成后调用方法
private function bufferCompleteHandler( event : GeometryServiceEvent ) : void
{
myDataProvider=[];
myGraphicsLayer.clear();
//移除BUFFER_COMPLETE监听
myGeometryService.removeEventListener(GeometryServiceEvent.BUFFER_COMPLETE,bufferCompleteHandler);
//获取buffer结果Graphic
for each (var geometry:Geometry in event.result)
{
var graphic:Graphic = new Graphic();
graphic.geometry = geometry;
//设置显示样式
graphic.symbol = sfs;
//添加到GraphicsLayer进行显示
myGraphicsLayer.add( graphic );
var identifyParams:IdentifyParameters=new IdentifyParameters();
//查询结果需要返回Geometry
identifyParams.returnGeometry=true;
//查询冗余范围
identifyParams.tolerance=5;
//宽
identifyParams.width = myMap.width;
//高
identifyParams.height = myMap.height;
//设置查询的Geometry
identifyParams.geometry=geometry;
//从ComboBox获取选择的图层index设置要查询的图层
//查询图层id为2的图层,就是States层
identifyParams.layerIds=[2,6,9,12];
//查询可见图层
identifyParams.layerOption=IdentifyParameters.LAYER_OPTION_ALL;
identifyParams.spatialReference=myMap.spatialReference;
//重点内容
identifyParams.mapExtent=myMap.extent;
//进行查询
identifyTask.execute(identifyParams);
}
}
private function faultHandler(event:FaultEvent):void
{
Alert.show(event.toString());
}
//查询完成后执行的事件
private function identifyCompleteHandler(event:IdentifyEvent):void
{
var resultCount:int = event.identifyResults.length;
for (var i:Number = 0; i < resultCount; i++)
{
var result:IdentifyResult=event.identifyResults[i];
var obj:Object = result.feature.attributes;
for(var j:int=0;j<attributesArr.length;j++)
{
var attributesObj:Object = {cfield:attributesArr[j],cvalue:obj[attributesArr[j]]};
resultArr.push(attributesObj);
myDataProvider=resultArr;
}
}
}
protected function identifyTask_faultHandler(event:FaultEvent):void
{
// TODO Auto-generated method stub
Alert.show("sorry,identifyErro");
}
]]>
</fx:Script>
<mx:Canvas width="490" height="401" borderStyle="solid" verticalCenter="16" left="10">
<esri:Map id="myMap" >
<esri:ArcGISDynamicMapServiceLayer url="http://" />
<esri:ArcGISDynamicMapServiceLayer url="http://" />
<esri:GraphicsLayer id="myGraphicsLayer" />
</esri:Map>
</mx:Canvas>
<mx:ToggleButtonBar id="myNav" verticalCenter="-203" itemClick="itemClickHandler(event)" toggleOnClick="true" left="11">
<mx:dataProvider>
<fx:Array>
<fx:Object icon="{point}" />
<fx:Object icon="{polyline}" />
<fx:Object icon="{polygon}" />
</fx:Array>
</mx:dataProvider>
</mx:ToggleButtonBar>
<mx:DataGrid id="myDataGrid" dataProvider="{myDataProvider}" x="508" y="150" width="167" height="401" sortableColumns="false" >
<mx:columns>
<mx:DataGridColumn dataField="cfield" headerText="字段"/>
<mx:DataGridColumn dataField="cvalue" headerText="值"/>
</mx:columns>
</mx:DataGrid>
</s:Application>
- ArcGIS缓冲区分析小例子
- ArcGIS Engine+C#缓冲区分析
- 缓冲区分析—ArcGIS API for JavaScript
- ArcGIS Server中缓冲区分析的实现(点)
- redux小例子分析
- Java IO学习【6】字符缓冲区BufferWriter小例子
- arcgis 生成 多边形缓冲区
- arcgis建立缓冲区
- 一个正则小例子分析
- ArcGIS Server ADF开发:直线段缓冲分析(生成10公里缓冲区)
- arcgis api for silverlight开发系列之六:缓冲区分析实现及Geometry service服务发布
- 使用 arcgis for javascript GeometryService进行缓冲区分析 错误 Unable to complete operation.(…)
- 【例子】堆缓冲区溢出
- 缓冲区溢出的例子
- 缓冲区的一些例子
- 缓冲区溢出的例子
- 小例子分析C#继承机制
- 小例子分析C#继承机制
- [Asp.Net]页面生命周期
- 《钓鱼岛是中国的固有领土》白皮书(全文)
- 第五个纪念日
- 电影
- 有时间练习下linux下的queue.h这个程序
- ArcGIS缓冲区分析小例子
- 创新工厂笔试归来总结
- Android禁止横屏竖屏切换
- vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess .
- 如何将中缀式转化成前缀式和后缀式(波兰和逆波兰)结合二叉树(适合数据结构方面的理解)
- Ansi,UTF8,Unicode,ASCII编码
- 初任项目经理
- 关于Wake Lock
- 内联函数,构造函数,静态函数都不能是虚函数