GNServer(几何网络分析)扩展ArcGIS Rest—客户端实现
2011-08-28 13:24
471 查看
GNTrace
Geometric Network Trace需要的参数由GNTrace传入。
[b]GNTrace定义[/b]
GNTraceTask
GNTraceTask实现GeometricNetwork Trace的功能,包括queryGNLayerInfos和execute两个方法,前者查询Geometric Network包含的所有图层信息;后者执行Trace功能并返回结果(edge、junction)。
查询Gemetric Network图层信息
解析查询返回的图层信息
执行Trace功能
解析Trace返回的结果
Geometric Network Trace需要的参数由GNTrace传入。
[b]GNTrace定义[/b]
package com.esrichina { import com.esri.ags.FeatureSet; public class GNTrace { private var _edgeFlags:FeatureSet; private var _junctionFlags:FeatureSet; private var _edgeBarriers:FeatureSet; private var _junctionBarriers:FeatureSet; private var _traceType:String; private var _disableLayers:String; private var _edgeOutFields:String; private var _junctionOutFields:String; public function GNTrace() { } } }
GNTraceTask
GNTraceTask实现GeometricNetwork Trace的功能,包括queryGNLayerInfos和execute两个方法,前者查询Geometric Network包含的所有图层信息;后者执行Trace功能并返回结果(edge、junction)。
查询Gemetric Network图层信息
public function queryGNLayerInfos(responder:IResponder=null):AsyncToken{ var urlVariable:URLVariables = new URLVariables(); urlVariable.f = "json"; return (sendURLVariables(null, urlVariable, responder, handleLayerInfosDecodedObject)); }
解析查询返回的图层信息
private function handleLayerInfosDecodedObject(decodedObject:Object, asyncToken:AsyncToken):void{ var responder:IResponder; _gnLayerInfos = decodedObject["Geometric Network Layers"]; for each (responder in asyncToken.responders) { responder.result(_gnLayerInfos); }; }
执行Trace功能
public function execute(gnTrace:GNTrace, responder:IResponder=null):AsyncToken{ var urlVariable:URLVariables = new URLVariables(); urlVariable.f = "json"; urlVariable.JunctionFlags = gnTrace.junctionFlags.convertToJSON();// "{\"features\":[{\"geometry\":{\"x\":557456.645, \"y\":42840.961}}]}"; urlVariable.EdgeFlags = gnTrace.edgeFlags == null ? "" : gnTrace.edgeFlags.convertToJSON(); urlVariable.JunctionBarriers = gnTrace.junctionBarriers == null ? "" : gnTrace.junctionBarriers.convertToJSON(); urlVariable.EdgeBarriers = gnTrace.edgeBarriers == null ? "" : gnTrace.edgeBarriers.convertToJSON(); urlVariable.TraceType = gnTrace.traceType;// "Trace Downstream"; urlVariable.DisableLayers = gnTrace.disableLayers; //""; urlVariable.EdgeOutFields = gnTrace.edgeOutFields; urlVariable.JunctionOutFields = gnTrace.junctionOutFields; return (sendURLVariables("/Trace", urlVariable, responder, handleDecodedObject)); }
解析Trace返回的结果
private function handleDecodedObject(decodedObject:Object, asyncToken:AsyncToken):void{ var responder:IResponder; edgesFeatureSet = new FeatureSet(); junctionsFeatureSet = new FeatureSet(); edgesFeatureSet.features = []; junctionsFeatureSet.features = []; var edges:Array = decodedObject.Edges; var junctions:Array = decodedObject.Junctions; for(var egIndex:int = 0; egIndex < edges.length; egIndex++) { var paths:Array = edges[egIndex].geometry.paths; var plinePaths:Array = new Array(); for (var pthIndex:int = 0; pthIndex < paths.length; pthIndex++) { var pts:Array = paths[pthIndex]; var plinePts:Array = new Array(); for(var ptIndex:int = 0; ptIndex < pts.length; ptIndex++) { var plinePt:MapPoint = new MapPoint((Number)(pts[ptIndex][0]), (Number)(pts[ptIndex][1])); plinePts.push(plinePt); } plinePaths.push(plinePts); } var pline:Polyline = new Polyline(plinePaths); var linegra:Graphic = new Graphic(pline); linegra.attributes = edges[egIndex].attributes; edgesFeatureSet.features.push(linegra); } for(var jcIndex:int = 0; jcIndex < junctions.length; jcIndex++) { var pt:MapPoint = new MapPoint((Number)(junctions[jcIndex].geometry.x), (Number)(junctions[jcIndex].geometry.y)); var ptgra:Graphic = new Graphic(pt); ptgra.attributes = junctions[jcIndex].attributes; junctionsFeatureSet.features.push(ptgra); } for each (responder in asyncToken.responders) { responder.result(edgesFeatureSet); }; }
相关文章推荐
- GNServer(几何网络分析)扩展ArcGIS Rest—简介
- GNServer(几何网络分析)扩展ArcGIS Rest—GNServer的Schema
- GNServer(几何网络分析)扩展ArcGIS Rest—Flex Widget
- GNServer(几何网络分析)扩展ArcGIS Rest—服务器端实现
- 【python】网络编程-SocketServer 实现客户端与服务器间非阻塞通信
- ArcGIS网络分析之Silverlight客户端路径分析(三)
- ArcGIS 10.1 最短路径分析:Network Analyst(网络分析) 扩展功能(NAService)
- ArcGIS网络分析之Silverlight客户端最近设施点分析(四)
- ArcGISServer Flex API 调用GP服务实现服务区分析
- ArcGIS网络分析之Silverlight客户端路径分析(三)
- ArcGIS网络分析之Silverlight客户端最近设施点分析(四)
- ArcGIS网络分析之Silverlight客户端服务区分析(五)
- ArcGIS几何网络分析
- ArcGISServer Flex API调用GP模型实现最短路径分析
- ArcGIS.Server.9.2.DotNet实现EditorTask功能扩展
- Arcgis 几何网络分析
- ArcGIS网络分析之Silverlight客户端最近设施点分析(四)
- ArcGIS.Server.9.2.DotNet网络分析之最短路径分析
- ArcGIS网络分析之Silverlight客户端服务区分析(五)-分析部分
- ArcGIS网络分析之Silverlight客户端路径分析(三)