ArcServer +Flex 发布GP服务生成等值面(三) ---前端调用

<?xml version="1.0" encoding="utf-8"?>
<mx:Application    xmlns:mx="http://www.adobe.com/2006/mxml"
                   xmlns:esri=http://www.esri.com/2008/ags             
                   layout="absolute" width="100%" height="100%" xmlns:layers="com.esri.ags.layers.*">
 
    <mx:Script>      
        <![CDATA[
            import classes.GPContainer;
            import mx.managers.PopUpManager;
            import mx.containers.TitleWindow;
            import mx.containers.VBox;
            import com.esri.ags.layers.ImageParameters;
            import com.esri.ags.layers.GPResultImageLayer;
            import com.esri.ags.tasks.Query;
            import com.esri.ags.tasks.QueryTask;
            import com.esri.ags.layers.GraphicsLayer;
            import mx.messaging.channels.StreamingAMFChannel;
            import mx.rpc.events.FaultEvent;
            import com.esri.ags.tasks.JobInfo;
            import com.esri.ags.events.GeoprocessorEvent;           
            import com.esri.ags.Graphic;           
            import com.esri.ags.events.MapMouseEvent;           
            import com.esri.ags.geometry.MapPoint;           
            import com.esri.ags.tasks.ExecuteResult;           
            import com.esri.ags.tasks.FeatureSet;           
            import com.esri.ags.tasks.ParameterValue;           
            import mx.controls.Alert;           
            import mx.rpc.AsyncResponder;           

            private var jobid:String="";


            private function computeServiceArea(mapPoint:MapPoint):void           
            {    

                 //先查询出FeatureSet 作为GP的输入参数
                 var queryTask:QueryTask=new QueryTask("http://sps-010/ArcGIS/rest/services/guangyuangp/MapServer/0");
                queryTask.showBusyCursor=true;
                var query:Query=new Query();
                query.outFields=new Array("OBJECTID","SHAPE","DYP");
                query.where="STCD <>''";
                queryTask.execute(query,new AsyncResponder(onQueryResult,onQueryFault));
                function onQueryResult(featureSet:FeatureSet, token:Object = null):void
                {

                    var params:Object = {                   
                    "Input_point_features":featureSet

                    };      
               
                     gp.addEventListener(GeoprocessorEvent.JOB_COMPLETE, completeCallback);

                    gp.addEventListener(FaultEvent.FAULT,onFault);
                    gp.submitJob( params ); 
                }


                function onQueryFault(info:Object, token:Object = null):void
                {
                    Alert.show(info.toString());  
                }
            } 

            function completeCallback(event: GeoprocessorEvent) : void
            {
                jobid=event.jobInfo.jobId;
                 var imageParameters : ImageParameters = new ImageParameters();
                  imageParameters.format="png32";
                  imageParameters.width=600;
                  imageParameters.height=400;
    
                gp.getResultImage(event.jobInfo.jobId,"outputMap",imageParameters,new AsyncResponder(onimgok, onimgno));

            }  


          function onimgok(info:Object, token:Object = null):void
            {
                var obj:Object=gp.getResultImageLastResult;
                var imageParameters : ImageParameters = new ImageParameters();
                  imageParameters.format="png32";
                  imageParameters.width=600;
                  imageParameters.height=400;
                var myImageLayer :GPResultImageLayer=gp.getResultImageLayer(jobid,"outputMap",imageParameters);
                //myMap.addLayer(myImageLayer); 

                
                var gpWin:GPContainer=PopUpManager.createPopUp(this,GPContainer,false) as GPContainer;
                gpWin.ShowResultLayer(myImageLayer);
                gpWin.title="降雨等值面";
 
                PopUpManager.centerPopUp(gpWin);
            }


            function onimgno(info:Object, token:Object = null):void
            {
            }
            private function mapClickHandler(event:MapMouseEvent):void           
            {               
                computeServiceArea(event.mapPoint);           
            }      
        ]]>   
    </mx:Script>   
    
        <esri:Map id="myMap" mapClick="mapClickHandler(event)" width="100%"  height="100%" >       
    <!--       <esri:extent>           
           <esri:Extent xmin="-95.41" ymin="38.86" xmax="-95.1" ymax="39.06">               
           <esri:SpatialReference wkid="4326"/>           
           </esri:Extent>       
           </esri:extent>-->
        <esri:ArcGISDynamicMapServiceLayer      url="http://sps-010/ArcGIS/rest/services/gpBase/MapServer"/>   
        <esri:GraphicsLayer id="graphicsLayer"  renderer="{uniqueValueRenderer}"/>
        </esri:Map>

    <esri:Geoprocessor    showBusyCursor="true"     id="gp"        url="http://sps-010/ArcGIS/rest/services/guangyuangp/GPServer/dengzhi"/>
</mx:Application>

image

posted @ 2010-04-09 17:02  千禧牛  阅读(3402)  评论(6编辑  收藏  举报