How to do intersection in Flex?

4400
14
07-07-2015 07:32 AM
akshayloya
Occasional Contributor II

Hi All,

Can any help me with code in flex which can intersect two feature class?

Regards

Tags (2)
0 Kudos
14 Replies
akshayloya
Occasional Contributor II

Hi,

Actually I copy pasted that which was in bit n pieces....I dint recognise before putting here. But I have assigned that outside the loop only.

Regards,

Akshay Loya

0 Kudos
akshayloya
Occasional Contributor II

Hi,

Can you find any other issue?

Regards,

Akshay

0 Kudos
RobertScheitlin__GISP
MVP Emeritus

Akshay,

   With the small portions of code you are sharing I am not able to find your issue.

0 Kudos
akshayloya
Occasional Contributor II

Hi ,

Sharing my complete code with you.

<?xml version="1.0" encoding="utf-8"?>
<viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/mx"
    xmlns:viewer="com.esri.viewer.*"
    xmlns:esri = "http://www.esri.com/2008/ags"
    widgetConfigLoaded="init()" initialize="basewidget1_initializeHandler(event)">



  <viewer:states>
  <s:State name="queryInput"/>
  <s:State name="resultsList"/>
  </viewer:states>

  <viewer:transitions>
  <s:Transition autoReverse="true" toState="*">
  <s:Fade targets="{[queryInput, resultsList]}"/>
  </s:Transition>
  </viewer:transitions>
  <fx:Style>
  @namespace s "library://ns.adobe.com/flex/spark";         
  @namespace mx "library://ns.adobe.com/flex/mx";      

  .labelText{
  color: #1F038F;
  fontSize: 12;
  font-weight: bold;
  }

  .labelText1{
  color: #000000;
  fontSize: 12;
  font-weight: bold;
  }


  .labelButtonStyle 
  {    
  corner-radius: 4;
  chrome-color: #0B610B;
  color: #FFFFFF;
  border-visible: true;
  border-color: #0B2075;
  border-alpha: 1;
  font-weight: bold;
  drop-shadow-visible: true;
  }      

  s|VScrollBar  
  {    
  skinClass: ClassReference("spark.skins.spark.VScrollBarSkin"); 
  }  

  s|HScrollBar  
  {    
  skinClass: ClassReference("spark.skins.spark.HScrollBarSkin"); 
  }  
  </fx:Style>

  <fx:Script>
  <![CDATA[
  import com.esri.ags.FeatureSet;
  import com.esri.ags.Graphic;
  import com.esri.ags.events.ExtentEvent;
  import com.esri.ags.events.GeometryServiceEvent;
  import com.esri.ags.events.GeoprocessorEvent;
  import com.esri.ags.events.GraphicEvent;
  import com.esri.ags.geometry.Extent;
  import com.esri.ags.geometry.Geometry;
  import com.esri.ags.geometry.MapPoint;
  import com.esri.ags.geometry.Polygon;
  import com.esri.ags.geometry.Polyline;
  import com.esri.ags.layers.GraphicsLayer;
  import com.esri.ags.symbols.PictureMarkerSymbol;
  import com.esri.ags.tasks.QueryTask;
  import com.esri.ags.tasks.supportClasses.Query;
  import com.esri.ags.utils.GraphicUtil;

  import mx.collections.ArrayCollection;
  import mx.collections.ArrayList;
  import mx.collections.ICollectionView;
  import mx.collections.IViewCursor;
  import mx.controls.Alert;
  import mx.controls.dataGridClasses.DataGridColumn;
  import mx.core.FlexGlobals;
  import mx.events.FlexEvent;
  import mx.events.ListEvent;
  import mx.managers.PopUpManager;
  import mx.rpc.AsyncResponder;
  import mx.rpc.AsyncToken;
  import mx.rpc.Responder;
  import mx.rpc.events.FaultEvent;
  import mx.rpc.events.ResultEvent;
  import mx.rpc.soap.WebService;
  import mx.states.AddItems;

  import spark.effects.animation.SimpleMotionPath;
  import spark.events.IndexChangeEvent;

  import flashx.textLayout.elements.BreakElement;

  import org.alivepdf.drawing.Blend;
  import org.alivepdf.drawing.Joint;
  import org.alivepdf.layout.Align;
  import org.alivepdf.layout.Layout;
  import org.alivepdf.pages.Page;
  import org.alivepdf.viewing.WindowUI;
  private const ICON_URL:String = "assets/images/";  
  private var adminType:String = new String();
  private var arrAdminType:Array = new Array();
  [Bindable]
  private var arrAdminTypeCollection:ArrayCollection;
  public var queryGraphic:GraphicsLayer = new GraphicsLayer();
  private var strApplicableTo:String = new String();
  private var DCode:String = new String();
  private var DCode1:String = new String();

  private var BCode:String = new String();
  private var PCode:String = new String();
  public var ws:WebService = new WebService();
  private var mapLayer:String = new String();
  private var proxyurl:String = new String();
  private var BlockCode:String = new String();
  private var PanchayatCode:String = new String();
  public var method:String = new String();
  private var progresspopup:ProgressPopup = new ProgressPopup();
  private var graphisB:GraphicsLayer= new GraphicsLayer();
  private var strCriteriaOption:String = new String();
  private var DistrictCode:String = new String();
  public var tblData:Object= new Object();
  private var arrCollDistrictCode:ArrayCollection;
  private var arrDistCode:ArrayCollection=new ArrayCollection();
  private var arrMDistColl:ArrayCollection = new ArrayCollection();
  private var arrCollDistrictName:ArrayCollection;
  private var arrCollBlockCode:ArrayCollection;
  private var arrCollBlockName:ArrayCollection;   
  private var arrCollPanchayatCode:ArrayCollection;
  private var arrCollPanchayatName:ArrayCollection;

  private var responder:mx.rpc.Responder;
  private var arrQueryName:ArrayCollection = new ArrayCollection();
  private var Administrative:String = new String();
  private var geometryMain:Geometry=new Geometry();
  [Bindable]public var Units:ArrayCollection = new ArrayCollection(
  [  
  { data: GeometryService.UNIT_METER, label: "Meter" },
  { data: GeometryService.UNIT_KILOMETER, label: "Kilometer" }

  ]);
  private var strTargetLayer:String = new String();
  private var sqlquerywithin:String=new String();
  private var sqlquerynotwithin:String=new String();
  private var strAliasName:String = new String();
  private var strTargetLayerID:String = new String();
  private var strQuery:String = new String();
  private var strSourceLayer:String = new String();
  private var strSourceID:String = new String();
  private var strOperators:String = new String();
  private var strOutputCol:String = new String();
  private var strFilter:String = new String();
  private var StrFiltAdmin:String= new String ();
  private var StrFiltAdminBlock:String= new String ();
  private var StrFiltAdminPanchayat:String= new String ();
  private var StrFiltAdminCode:String= new String ();
  private var FilterDistBlockPanch:String= new String ();
  private var intCountCode:int;
  private var i_redalarm:PictureMarkerSymbol = new PictureMarkerSymbol("assets/images/Red_glow.swf", 20, 20);
  private var districtsLoaded:int = 0;
  public var CurrentGeom:Geometry = new Geometry();

  //Initial widget load 

  ////// 19/02/2015
  //District symbols
  private var distBorderSymbol:SimpleLineSymbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,0x2EFEF7,1,4);
  private var distFillSymbol:SimpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,0xFA5858,0,distBorderSymbol);
  private var distGraphicsLayer:GraphicsLayer = new GraphicsLayer();
  private var districtFeatureSet:FeatureSet = new FeatureSet();                                                                                                                                                                            
  private var fullextent:Extent = new Extent();
  //////////

  private function init():void
  {
  wSpatialQuery.widgetTitle="SpatialQuery";
  if(configXML)
  {

  adminType = configXML.AdminType;
  arrAdminType = adminType.split(",");                                 
  mapLayer = configXML.MapLayer;           
  DistrictCode = configXML.DistrictCode;
  proxyurl=     configXML.proxyurl;
  BlockCode= configXML.BlockCode;
  PanchayatCode= configXML.PanchayatCode;
  }                          
  arrAdminTypeCollection = new ArrayCollection(arrAdminType);
  ddlAdminType.dataProvider = arrAdminTypeCollection;
  ws.wsdl = configData.webServiceConfig;   

  fullextent = map.initialExtent;
  distGraphicsLayer.id = "DtGraphicLayer";
  map.addLayer(distGraphicsLayer);

  ////Code to remove this graphic layer from the map object
  //Note the layer must be already present in the map
  /*

  var layer:Layer = map.getLayer("DtGraphicLayer");
  map.removeLayer(layer);

  */
  /////


  }
  //Change handler event  for drop down of AOI
  protected function ddlAdminType_changeHandler(event:IndexChangeEvent):void
  {                                               
  if (ddlAdminType.selectedItem == "State")
  {
  strApplicableTo = "State";

  ddlDistorLAorPA.enabled=false;

  ddlBlockorTehsil.enabled=false;
  ddlPanchayat.enabled=false;

  DistorLAorPAGroup.enabled=false;
  BlockorTehsilGroup.enabled=false;
  PanchayatGroup.enabled=false;
  }
  if (ddlAdminType.selectedItem == "District" || ddlAdminType.selectedItem == "PA" ||ddlAdminType.selectedItem == "LA")
  {
  strApplicableTo = "District|Block|PA|LA|Tehsil";
  method = "PopulateDistrict";      
  ws.loadWSDL();
  ws[method].addEventListener(ResultEvent.RESULT, PopulateDistrictResult);
  ws[method].addEventListener(FaultEvent.FAULT, PopulateDistrictFault);
  ws.getOperation(method).send();   
  ddlDistorLAorPA.enabled=true;

  ddlBlockorTehsil.enabled=false;
  ddlPanchayat.enabled=false;

  DistorLAorPAGroup.enabled=true;
  BlockorTehsilGroup.enabled=false;
  PanchayatGroup.enabled=false;
  }

  if (ddlAdminType.selectedItem == "Block")
  {
  strApplicableTo = "Block";
  method = "PopulateDistrict";      
  ws.loadWSDL();
  ws[method].addEventListener(ResultEvent.RESULT, PopulateDistrictResult);
  ws[method].addEventListener(FaultEvent.FAULT, PopulateDistrictFault);
  ws.getOperation(method).send();   
  ddlDistorLAorPA.enabled=true;
  ddlBlockorTehsil.enabled=true;
  ddlPanchayat.enabled=false;
  DistorLAorPAGroup.enabled=true;
  BlockorTehsilGroup.enabled=true;
  PanchayatGroup.enabled=false;

  }
  if (ddlAdminType.selectedItem == "Panchayat")
  {
  strApplicableTo = "Panchayat";
  method = "PopulateDistrict";      
  ws.loadWSDL();
  ws[method].addEventListener(ResultEvent.RESULT, PopulateDistrictResult);
  ws[method].addEventListener(FaultEvent.FAULT, PopulateDistrictFault);
  ws.getOperation(method).send();   
  ddlDistorLAorPA.enabled=true;
  ddlBlockorTehsil.enabled=true;
  ddlPanchayat.enabled=true;
  DistorLAorPAGroup.enabled=true;
  BlockorTehsilGroup.enabled=true;
  PanchayatGroup.enabled=true;

  }
  method = "SpatialQuerySector";    
  ws.loadWSDL();
  ws[method].addEventListener(ResultEvent.RESULT, SectorResult);
  ws[method].addEventListener(FaultEvent.FAULT, SectorFault);
  ws.getOperation(method).send(strApplicableTo);

  ddlBlockorTehsil.selectedIndex=-1;
  ddlDistorLAorPA.selectedIndex=-1;

  ddlPanchayat.selectedIndex=-1;
  }
  //Service call reult event  
  protected function PopulateDistrictResult(event:ResultEvent):void
  {
  arrCollDistrictCode = new ArrayCollection();
  arrCollDistrictName = new ArrayCollection();
  if (event.result != null)
  {                    
  tblData=event.result.Tables.Table;
  for each (var obj:Object in tblData.Rows)
  {
  arrCollDistrictCode.addItem(obj[tblData.Columns[0]]);
  arrCollDistrictName.addItem(obj[tblData.Columns[1]]);
  }
  }
  else
  {
  Alert.show(resourceManager.getString('ViewerStrings', 'SearchAlert1'));
  }
  ddlDistorLAorPA.dataProvider = arrCollDistrictName;    

  method = "SpatialQuerySector";    
  ws.loadWSDL();
  ws[method].addEventListener(ResultEvent.RESULT, SectorResult);
  ws[method].addEventListener(FaultEvent.FAULT, SectorFault);
  ws.getOperation(method).send(strApplicableTo);
  }
  //service call fault event
  protected function PopulateDistrictFault(event:FaultEvent):void 
  {
  Alert.show("Service temporarily unavailable. Please try again","Information");
  method = "";
  }

  protected function SectorResult(event:ResultEvent):void
  {      
  var arrSectorName:ArrayCollection = new ArrayCollection();
  if (event.result != null)
  {                    
  tblData=event.result.Tables.Table;
  for each (var obj:Object in tblData.Rows)
  {
  arrSectorName.addItem(obj[tblData.Columns[0]]);
  }                                 
  }
  else
  {
  Alert.show(resourceManager.getString('ViewerStrings', 'SearchAlert1'));
  }
  ddlFirstSector.dataProvider = arrSectorName;    
  method = "";
  }

  protected function SectorFault(event:FaultEvent):void 
  {
  Alert.show("Service temporarily unavailable. Please try again","Information");
  method = "";
  }
  //Change handler for district , PA etc
  protected function ddlDistorLAorPA_changeHandler(event:IndexChangeEvent):void
  {
  if (ddlDistorLAorPA.enabled == true)
  {
  intCountCode=1;
  var selIndices:Vector.<int> = event.currentTarget.selectedIndices;
  //var selItems:Vector.<Object> = event.currentTarget.selectedItems;
  var numItems:Number = selIndices.length;

  arrDistCode.removeAll();
  distGraphicsLayer.clear();                             
  for (var i:Number = 0; i<numItems; i++)
  {
  arrDistCode.addItem(arrCollDistrictCode.getItemAt(selIndices));

  }
  StrFiltAdmin=arrDistCode.toString();
  //DCode="District_DCP_Code IN (" + StrFiltAdmin + ")";        //For this DCode String District_DCP_Code is coming from GIS database

  districtFeatureSet = index.districtFeatureSet;

  if(districtFeatureSet.features != null)
  {


  for (var j:Number = 0; j<arrDistCode.length; j++)
  {
  for(var x:int=0;x<districtFeatureSet.features.length;x++)

  {
  if(arrDistCode == districtFeatureSet.features.attributes.District_DCP_Code)
  {
  var graphic:Graphic = districtFeatureSet.features;
  graphic.symbol = distFillSymbol;
  distGraphicsLayer.add(graphic);
  //DCode= "District_DCP_Code='" + arrDistCode + "'";

  break;

  }
  }

  }

  var graphicProvider:ArrayCollection = distGraphicsLayer.graphicProvider as ArrayCollection;
  var graphicsExtent:Extent = GraphicUtil.getGraphicsExtent(graphicProvider.toArray());

  if (graphicsExtent)
  {
  map.extent = graphicsExtent;
  map.zoomOut();
  }

  }

  else
  {
  intCountCode=1;
  var queryTaskDistrict:QueryTask = new QueryTask();
  queryTaskDistrict.url=DistrictCode;
  queryTaskDistrict.useAMF= false;
  var queryDistrict:Query= new Query();
  queryDistrict.outSpatialReference=map.spatialReference;
  queryDistrict.returnGeometry=true;
  queryDistrict.outFields=['*'];
  queryDistrict.where= "District_DCP_Code='" + arrCollDistrictCode.getItemAt(ddlDistorLAorPA.selectedIndex) + "'";
  //DCode= queryDistrict.where;
  var selIndices:Vector.<int> = event.currentTarget.selectedIndices;
  //var selItems:Vector.<Object> = event.currentTarget.selectedItems;
  var numItems:Number = selIndices.length;

  arrDistCode.removeAll();
  distGraphicsLayer.clear();                             
  for (var i:Number = 0; i<numItems; i++)
  {
  arrDistCode.addItem(arrCollDistrictCode.getItemAt(selIndices));

  }
  StrFiltAdmin=arrDistCode.toString();
  //DCode="District_DCP_Code IN (" + StrFiltAdmin + ")"; 
  //arrDistCode.push("'"+arrCollDistrictCode.getItemAt(ddlDistorLAorPA.selectedIndex)+"'");

  queryTaskDistrict.execute(queryDistrict, new AsyncResponder(onResult, onFault));
  function onResult(featureSet:FeatureSet, token:Object = null):void
  {
  if (featureSet.features.length == 0)
  {
  Alert.show(resourceManager.getString('ViewerStrings', 'SearchAlert3'));
  }
  else
  {                                        
  var graphic:Graphic = featureSet.features[0];
  graphic.symbol = distFillSymbol;
  distGraphicsLayer.add(graphic);
  var graphicsExtent:Extent = GraphicUtil.getGraphicsExtent(featureSet.features);
  if (graphicsExtent)
  {
  map.extent = graphicsExtent;      
  map.zoomOut();

  } 
  } 
  }
  function onFault(info:Object, token:Object = null):void
  {
  Alert.show("Service temporarily unavailable. Please try again","Information");
  }
  }      
  }
  if (ddlBlockorTehsil.enabled == true)
  {

  method = "PopulateBlock";  
  ws.loadWSDL();
  ws[method].addEventListener(ResultEvent.RESULT, PopulateBlockResult);
  ws[method].addEventListener(FaultEvent.FAULT, PopulateBlockFault);
  ws.getOperation(method).send(arrCollDistrictCode.getItemAt(ddlDistorLAorPA.selectedIndex));     
  }
  }


  //Service call Result event
  protected function PopulateBlockResult(event:ResultEvent):void
  {
  arrCollBlockCode = new ArrayCollection();
  arrCollBlockName = new ArrayCollection();
  if (event.result != null)
  {                    
  tblData=event.result.Tables.Table;
  for each (var obj:Object in tblData.Rows)
  {
  arrCollBlockCode.addItem(obj[tblData.Columns[0]]);
  arrCollBlockName.addItem(obj[tblData.Columns[1]]);
  }
  }
  else
  {
  Alert.show(resourceManager.getString('ViewerStrings', 'SearchAlert1'));
  }
  ddlBlockorTehsil.dataProvider = arrCollBlockName;      




  }
  //Service call fault event
  protected function PopulateBlockFault(event:FaultEvent):void 
  {
  Alert.show("Service temporarily unavailable. Please try again","Information");
  method = "";
  }



  protected function ddlBlockorTehsil_changeHandler(event:IndexChangeEvent):void
  {
  if (ddlBlockorTehsil.enabled == true)
  {

  intCountCode=2;

  var queryTaskBlock:QueryTask = new QueryTask();
  queryTaskBlock.url=BlockCode;
  queryTaskBlock.useAMF= false;
  var queryBlock:Query= new Query();
  queryBlock.outSpatialReference=map.spatialReference;
  queryBlock.returnGeometry=true;
  queryBlock.outFields=['*'];
  queryBlock.where= "DCPBlockCode ='" + arrCollBlockCode.getItemAt(ddlBlockorTehsil.selectedIndex) + "'";
  StrFiltAdminBlock= arrCollBlockCode.getItemAt(ddlBlockorTehsil.selectedIndex).toString();
  //BCode="DCPBlockCode IN (" + StrFiltAdminBlock + ")";  //For this BCode String DCPBlockCode is coming from GIS database
  //BCode="DCPBlockCode IN (" + StrFiltAdminBlock + ")"; 
  queryTaskBlock.execute(queryBlock, new AsyncResponder(onResult, onFault));
  function onResult(featureSet:FeatureSet, token:Object = null):void
  {
  if (featureSet.features.length == 0)
  {
  Alert.show(resourceManager.getString('ViewerStrings', 'SearchAlert3'));
  }
  else
  {                                        
  var graphicsExtent:Extent = GraphicUtil.getGraphicsExtent(featureSet.features);
  if (graphicsExtent)
  {
  map.extent = graphicsExtent;
  geometryMain=graphicsExtent;
  } 
  } 
  }
  function onFault(info:Object, token:Object = null):void
  {
  Alert.show("Service temporarily unavailable. Please try again","Information");
  }
  }
  if (ddlPanchayat.enabled == true)
  {
  method = "PopulatePanchayat";     
  ws.loadWSDL();
  ws[method].addEventListener(ResultEvent.RESULT, PopulatePanchayatResult);
  ws[method].addEventListener(FaultEvent.FAULT, PopulatePanchayatFault);
  ws.getOperation(method).send(arrCollDistrictCode.getItemAt(ddlDistorLAorPA.selectedIndex),arrCollBlockCode.getItemAt(ddlBlockorTehsil.selectedIndex));       
  }
  }


  protected function PopulatePanchayatResult(event:ResultEvent):void
  {
  arrCollPanchayatCode = new ArrayCollection();
  arrCollPanchayatName = new ArrayCollection();
  if (event.result != null)
  {                    
  tblData=event.result.Tables.Table;
  for each (var obj:Object in tblData.Rows)
  {
  arrCollPanchayatCode.addItem(obj[tblData.Columns[0]]);
  arrCollPanchayatName.addItem(obj[tblData.Columns[1]]);
  }
  }
  else
  {
  Alert.show(resourceManager.getString('ViewerStrings', 'SearchAlert1'));
  }
  ddlPanchayat.dataProvider = arrCollPanchayatName;      
  }

  protected function PopulatePanchayatFault(event:FaultEvent):void 
  {
  Alert.show(event.toString());
  method = "";

  }

  protected function ddlPanchayat_changeHandler(event:IndexChangeEvent):void
  {
  if (ddlPanchayat.enabled == true)
  {
  intCountCode=3;
  var queryTaskPanchayat:QueryTask = new QueryTask();
  queryTaskPanchayat.url=PanchayatCode;
  queryTaskPanchayat.useAMF= false;
  var queryPanchayat:Query= new Query();
  queryPanchayat.outSpatialReference=map.spatialReference;
  queryPanchayat.returnGeometry=true;
  queryPanchayat.outFields=['*'];
  queryPanchayat.where= "DCP_Panchayat_Code ='" + arrCollPanchayatCode.getItemAt(ddlPanchayat.selectedIndex) + "'";
  StrFiltAdminPanchayat= arrCollPanchayatCode.getItemAt(ddlPanchayat.selectedIndex).toString();
  //PCode="DCP_Panchayat_Code IN ('" + StrFiltAdminPanchayat + "')"; 
  //PCode="DCP_Panchayat_Code IN (" + StrFiltAdminPanchayat + ")";    //For this PCode String DCP_Panchayat_Code is coming from GIS database 
  queryTaskPanchayat.execute(queryPanchayat, new AsyncResponder(onResult, onFault));
  function onResult(featureSet:FeatureSet, token:Object = null):void
  {
  if (featureSet.features.length == 0)
  {
  Alert.show(resourceManager.getString('ViewerStrings', 'SearchAlert3'));
  }
  else
  {                                        
  var graphicsExtent:Extent = GraphicUtil.getGraphicsExtent(featureSet.features);
  if (graphicsExtent)
  {
  map.extent = graphicsExtent;
  geometryMain=graphicsExtent;
  } 
  } 
  }
  function onFault(info:Object, token:Object = null):void
  {
  Alert.show("Service temporarily unavailable. Please try again","Information");
  }
  }
  }

  protected function ddlFirstSector_changeHandler(event:IndexChangeEvent):void
  {
  method = "SpatialQueryName";
  ws.loadWSDL();
  ws[method].addEventListener(ResultEvent.RESULT, SpatialQueryNameResult);
  ws[method].addEventListener(FaultEvent.FAULT, SpatialQueryNameFault);
  ws.getOperation(method).send(strApplicableTo,ddlFirstSector.selectedItem);
  }

  protected function SpatialQueryNameResult(eventThemeName:ResultEvent):void
  { 
  arrQueryName = new ArrayCollection();
  if (eventThemeName.result != null)
  {                    
  var tblDataThemeName:Object = eventThemeName.result.Tables.Table;
  for each (var obj:Object in tblDataThemeName.Rows)
  {
  arrQueryName.addItem(obj[tblDataThemeName.Columns[0]]);
  }                                 
  }
  else
  {
  Alert.show(resourceManager.getString('ViewerStrings', 'SearchAlert1'));
  }
  ddlFirstQuery.dataProvider = arrQueryName;      
  method = "";
  }

  protected function SpatialQueryNameFault(event:FaultEvent):void 
  {
  Alert.show("Service temporarily unavailable. Please try again","Information");
  }

  protected function ddlFirstQuery_changeHandler(event:IndexChangeEvent):void
  {
  method = "SpatialQueryConfig";
  ws.loadWSDL();
  ws[method].addEventListener(ResultEvent.RESULT, SpatialQueryConfigResult);
  ws[method].addEventListener(FaultEvent.FAULT, SpatialQueryConfigFault);
  ws.getOperation(method).send(strApplicableTo,ddlFirstSector.selectedItem, ddlFirstQuery.selectedItem);

  }

  private function showProgress(message:String,title:String):void{

  if(progresspopup.isPopUp){
  progresspopup.message = message;
  progresspopup.txtprogresstitle = title;

  }
  else{
  var parent:Sprite= Sprite(FlexGlobals.topLevelApplication);
  PopUpManager.addPopUp(progresspopup,parent,false);
  PopUpManager.centerPopUp(progresspopup);
  progresspopup.message = message;
  progresspopup.txtprogresstitle = title;
  }
  }

  private function hideProgress():void{
  PopUpManager.removePopUp(progresspopup);
  }




  //Cofig table data loaded in variables 
  protected function SpatialQueryConfigResult(event:ResultEvent):void
  { 
  if (event.result != null)
  {                    
  var tblData:Object = event.result.Tables.Table;
  for each (var obj:Object in tblData.Rows)
  {
  strTargetLayer = obj[tblData.Columns[0]];
  strTargetLayerID = obj[tblData.Columns[1]];
  strSourceLayer = obj[tblData.Columns[2]];
  strSourceID = obj[tblData.Columns[3]];
  strOperators = obj[tblData.Columns[4]];
  StrFiltAdminCode=obj[tblData.Columns[7]];
  strOutputCol = obj[tblData.Columns[10]];
  strCriteriaOption = obj[tblData.Columns[9]];
  strFilter = obj[tblData.Columns[12]];
  sqlquerywithin=obj[tblData.Columns[16]];
  sqlquerynotwithin=obj[tblData.Columns[17]];
  strAliasName=obj[tblData.Columns[18]];
  FilterDistBlockPanch=obj[tblData.Columns[19]];
  strAliasName=strAliasName.replace(", ",",");
  FilterDistBlockPanch=FilterDistBlockPanch.replace(", ",",");
  }
  var Target:String = new String();
  var Source:String = new String();
  var array:Array = FilterDistBlockPanch.split(",");
  Source = array[0];
  Target = array[1];


  if (ddlAdminType.selectedItem == "District" || ddlAdminType.selectedItem == "PA" ||ddlAdminType.selectedItem == "LA")
  {

  //Administrative="dbo.DISTRICT_POLY"    //District table in GIS database,Having District code in it.
  Administrative="dbo.DISTRICT"
  DCode= Target  + " IN (" + StrFiltAdmin + ")";
  DCode1= Source + " IN (" + StrFiltAdmin + ")";
  }


  if (ddlAdminType.selectedItem == "Block") 
  {
  Administrative="dbo.BLOCK_POLY"          //Block table in GIS database,Having Block code in it.
  //Administrative="dbo.BLOCK"
  DCode= Target  + " IN (" + StrFiltAdminBlock + ")";
  DCode1= Source + " IN (" + StrFiltAdminBlock + ")";
  }

  if (ddlAdminType.selectedItem == "Panchayat")
  {
  Administrative="dbo.PANCHAYAT_POLY"           //Panchayat table in GIS database,Having Panchayat code in it.
  //Administrative="dbo.PANCHAYAT"
  DCode= Target  + " IN (" + StrFiltAdminPanchayat + ")";
  DCode1= Source + " IN ('" + StrFiltAdminPanchayat + "')";
  }

  if(strFilter == "Yes")
  {
  FirstCriteria.enabled=true;


  }else
  {
  //FirstCriteria.enabled=false;
  txtFirstCriteria.enabled=false;
  cmbBuffer.enabled=false;
  }
  }
  else
  {
  Alert.show(resourceManager.getString('ViewerStrings', 'SearchAlert1'));
  }                          
  }

  protected function SpatialQueryConfigFault(event:FaultEvent):void 
  {
  Alert.show("Service temporarily unavailable. Please try again","Information");
  }
  //Reset event 
  protected function Reset():void
  {      
  showStateTextSearch();
  arrAdminType = null;
  txtFirstCriteria.text = ""; 
  ddlAdminType.selectedIndex=-1;
  ddlBlockorTehsil.selectedIndex=-1;
  ddlDistorLAorPA.selectedIndex=-1;
  ddlFirstCriteria.selectedIndex=-1;
  ddlFirstQuery.selectedIndex=-1;
  ddlFirstSector.selectedIndex=-1;
  ddlPanchayat.selectedIndex=-1;
  map.extent=map.initialExtent;
  queryGraphic.clear();
  FirstCriteria.enabled=true;
  txtFirstCriteria.text = ""; 
  map.removeLayer(queryGraphic);
  strSourceID="";
  strSourceLayer="";
  strFilter="";
  strTargetLayer="";
  strOperators="";
  strTargetLayerID="";
  strQuery="";
  dg.visible=false;
  ddlAdminType.selectedIndex=-1;
  ddlBlockorTehsil.selectedIndex=-1;
  ddlDistorLAorPA.selectedIndex=-1;
  ddlFirstCriteria.selectedIndex=-1;
  ddlFirstQuery.selectedIndex=-1;
  ddlFirstSector.selectedIndex=-1;
  ddlPanchayat.selectedIndex=-1;
  cursorManager.removeBusyCursor();
  Countfeature.text="Total no of records : 0";
  ddlDistorLAorPA.enabled=false;

  ddlBlockorTehsil.enabled=false;
  ddlPanchayat.enabled=false;

  DistorLAorPAGroup.enabled=false;
  BlockorTehsilGroup.enabled=false;
  PanchayatGroup.enabled=false;
  distGraphicsLayer.clear();
  map.extent = fullextent;
  hideProgress();
  }             

  //Spatial query search button event 
  var query:Query = new Query();
  var QueryTk:QueryTask = new QueryTask();
  protected function btnSearch_clickHandler(event:MouseEvent):void
  {
  cursorManager.setBusyCursor();    
  queryGraphic.clear();
  dg.dataProvider=[];
  var bufdistance:Number=0;
  showProgress("Processing.......Please wait", "Information");

  if(ddlFirstCriteria.selectedIndex==0)
  {  
  method = "SpatialWithin";
  ws.loadWSDL();
  ws[method].addEventListener(ResultEvent.RESULT, QueryResult);
  ws[method].addEventListener(FaultEvent.FAULT, QueryFault);
  if(strFilter.toUpperCase()=="YES")
  {   
  if(cmbBuffer.selectedIndex!=-1)
  {
  if(cmbBuffer.selectedIndex==1)
  {

  bufdistance=parseInt(txtFirstCriteria.text) * 1000;

  }
  else
  {
  bufdistance=parseInt(txtFirstCriteria.text);
  }
  }
  if(cmbBuffer.selectedIndex==-1)
  {
  bufdistance=0;
  }
  /*if(strCriteriaOption.toUpperCase()=="YES")
  {
  having="YES";
  }
  if(strCriteriaOption.toUpperCase()=="NO")
  {
  having="NO";
  }*/

  //ws.getOperation(method).send(sqlquerywithin,sqlquerynotwithin,bufdistance.toString(),having);

  if (ddlAdminType.selectedItem == "District" || ddlAdminType.selectedItem == "PA" ||ddlAdminType.selectedItem == "LA")
  {
  ws.getOperation(method).send(sqlquerywithin,sqlquerynotwithin,bufdistance.toString(),Administrative,DCode);       
  }
  else if (ddlAdminType.selectedItem == "Block")
  {
  ws.getOperation(method).send(sqlquerywithin,sqlquerynotwithin,bufdistance.toString(),Administrative,DCode);       
  }
  else if (ddlAdminType.selectedItem == "Panchayat")
  {
  ws.getOperation(method).send(sqlquerywithin,sqlquerynotwithin,bufdistance.toString(),Administrative,DCode);       
  }

  }
  else if (strFilter.toUpperCase()=="NO")

  {

  var queryT:QueryTask = new QueryTask();
  queryT.url = "url";
  queryT.useAMF= false;
  var queryB:Query = new Query();
  queryB.outSpatialReference = map.spatialReference;
  queryB.returnGeometry = true;
  queryB.outFields = ["*"];
  queryB.where= "DCPDistrictCode = 1732";

  queryT.execute(queryB, new AsyncResponder(onResultT, onFaultT));

  function onResultT(featureSetB:FeatureSet, token:Object = null):void
  {

  var graphicProvider1:ArrayCollection = new  ArrayCollection();
  if (featureSetB.features.length == 0)
  {
  Alert.show(resourceManager.getString('ViewerStrings', 'SearchAlert3'));
  }
  else
  {                                        

  /*for each(var myFirstGraphic:Graphic in  featureSetB.features)
  {
  var arrtest:Array= new Array;
  arrtest.push(myFirstGraphic.geometry);

  }*/
  //responder = new mx.rpc.Responder(union,union_fault);
  // myGeometryService.union(arrtest,responder);

  var graphExtent:Extent = GraphicUtil.getGraphicsExtent(featureSetB.features);

  doQuery(graphExtent);

  /* query.geometry = arrtest;
  query.outFields = ["*"];
  query.outSpatialReference = map.spatialReference;
  query.returnGeometry = true;
  query.spatialRelationship = Query.SPATIAL_REL_INTERSECTS;                         
  QueryTk.url = "http://164.100.196.130/spcgis/rest/services/MPSPC/SPCMP10_WebApp/MapServer/52";
  QueryTk.useAMF = false;
  QueryTk.execute(query,new AsyncResponder(QueryIntersect,QueryIntersectFault));*/



  }

  }




  function onFaultT(info:Object, token:Object = null):void
  {
  Alert.show("Service temporarily unavailable. Please try again","Information");
  }




  /*if (ddlAdminType.selectedItem == "District" || ddlAdminType.selectedItem == "PA" ||ddlAdminType.selectedItem == "LA")
  {
  ws.getOperation(method).send(sqlquerywithin,sqlquerynotwithin,"0",Administrative,DCode);
  }
  else if (ddlAdminType.selectedItem == "Block")
  {
  ws.getOperation(method).send(sqlquerywithin,sqlquerynotwithin,"0",Administrative,DCode);
  }
  else if (ddlAdminType.selectedItem == "Panchayat")
  {
  ws.getOperation(method).send(sqlquerywithin,sqlquerynotwithin,"0",Administrative,DCode);
  }*/
  }
  else
  {
  Alert.show("Plesase correct query configuration");
  cursorManager.removeBusyCursor();
  hideProgress();
  }
  }
  if(ddlFirstCriteria.selectedIndex==1)
  {
  method = "SpatialNotWithin";
  ws.loadWSDL();
  ws[method].addEventListener(ResultEvent.RESULT, QueryResult);
  ws[method].addEventListener(FaultEvent.FAULT, QueryFault);
  if(strFilter.toUpperCase()=="YES")
  {   
  if(cmbBuffer.selectedIndex!=-1)
  {
  if(cmbBuffer.selectedIndex==1)
  {

  bufdistance=parseInt(txtFirstCriteria.text) * 1000;

  }
  else
  {
  bufdistance=parseInt(txtFirstCriteria.text);
  }
  }
  if(cmbBuffer.selectedIndex==-1)
  {
  bufdistance=0;
  }
  /*if(strCriteriaOption.toUpperCase()=="YES")
  {
  having="YES";
  }
  if(strCriteriaOption.toUpperCase()=="NO")
  {
  having="NO";
  }*/

  showProgress("Processing.......Please wait", "Information");
  if (ddlAdminType.selectedItem == "District" || ddlAdminType.selectedItem == "PA" ||ddlAdminType.selectedItem == "LA")
  {
  ws.getOperation(method).send(sqlquerywithin,sqlquerynotwithin,bufdistance.toString(),Administrative,DCode,DCode1);
  }
  else if (ddlAdminType.selectedItem == "Block")
  {
  ws.getOperation(method).send(sqlquerywithin,sqlquerynotwithin,bufdistance.toString(),Administrative,DCode,DCode1);
  }
  else if (ddlAdminType.selectedItem == "Panchayat")
  {
  ws.getOperation(method).send(sqlquerywithin,sqlquerynotwithin,bufdistance.toString(),Administrative,DCode,DCode1);
  }
  }
  else if (strFilter.toUpperCase()=="NO")
  {

  if (ddlAdminType.selectedItem == "District" || ddlAdminType.selectedItem == "PA" ||ddlAdminType.selectedItem == "LA")
  {
  ws.getOperation(method).send(sqlquerywithin,sqlquerynotwithin,"0",Administrative,DCode,DCode1);
  }
  else if (ddlAdminType.selectedItem == "Block")
  {
  ws.getOperation(method).send(sqlquerywithin,sqlquerynotwithin,"0",Administrative,DCode,DCode1);
  }
  else if (ddlAdminType.selectedItem == "Panchayat")
  {
  ws.getOperation(method).send(sqlquerywithin,sqlquerynotwithin,"0",Administrative,DCode,DCode1);
  }
  }
  else
  {
  Alert.show("Plesase correct query configuration");
  cursorManager.removeBusyCursor();
  hideProgress();
  }
  }

  }

   
  /*protected function union(event:)
  {
  doQuery(event.rings as Geometry);

  }
  protected function union_fault(event:FaultEvent)
  {
  Alert.show("Service temporarily unavailable. Please try again","Information");
  cursorManager.removeBusyCursor();
  }*/
  protected function doQuery(geom:Extent):void
  {

  query.geometry = geom;
  query.outFields = ["*"];
  query.outSpatialReference = map.spatialReference;
  query.returnGeometry = true;
  query.spatialRelationship = Query.SPATIAL_REL_INTERSECTS;                         
  QueryTk.url = "url";
  QueryTk.useAMF = false;
  QueryTk.execute(query,new AsyncResponder(QueryIntersect,QueryIntersectFault));
  function QueryIntersect(featureSetSpa:FeatureSet, token:Object = null):void
  {
  if (featureSetSpa.features.length = 0)
  {

  Alert.show("No Records found");
  cursorManager.removeBusyCursor();
  }
  else
  {
  var arrObjectId:Array=new Array(); 
  var strObjectId:String= new String();
  for(var i:int=0;i<featureSetSpa.features.length;i++)
  {
  arrObjectId.push("'" +FeatureSet+ "'");
  }
  strObjectId = arrObjectId.toString() ; 


  //arr = QueryTk.executeLastResult.attributes;

  /*for each (var myGraphic:Graphic in featureSetSpatial.features)
  {


  }*/
  }



  }

  function QueryIntersectFault(featureSet:FeatureSet, token:Object = null):void
  {
  Alert.show("Service temporarily unavailable. Please try again","Information");
  }
  }
   



  // Service call result event of spatial query
  protected function QueryResult(event:ResultEvent):void

  { 
  try

  {
  //var arrFilterCode:ArrayCollection();
  /*var arrFilterCode:Array=new Array();
  arrFilterCode= StrFiltAdminCode.split(',');            
  var strFilter:String= new String();
  if (intCountCode==1)
  {
  strFilter= arrFilterCode[0];
  }
  else if (intCountCode==1)
  {
  strFilter= arrFilterCode[1];
  }
  else
  {
  strFilter= arrFilterCode[2];
  }*/


  if (event.result != null)
  {      var arrObjectId:Array=new Array(); 
  var strObjectId:String= new String();
  for(var i:int=0;i<event.result .length;i++)
  {
  arrObjectId.push("'" +event.result+ "'");
  }
  strObjectId = arrObjectId.toString() ; 
  /*strObjectId.replace(""","");

  for(var i:int=0;i<arrObjectId.length;i++)
  {

  strObjectId = strObjectId + ", '" + arrObjectId + "'";

  }
  */
  if (arrObjectId.length>0)
  {

  var spatialQuery:Query= new Query();
  spatialQuery.outFields = [strOutputCol];
  //spatialQuery.geometry =  geometryMain;
  spatialQuery.returnGeometry = true;
  spatialQuery.outSpatialReference = map.spatialReference;
  //spatialQuery.where="OBJECTID IN ("+strObjectId+") and "+ strFilter +" in ("  +StrFiltAdmin+ ")";
  spatialQuery.where="OBJECTID IN (" + strObjectId + ")";                     
  var spatialQueryTask:QueryTask = new QueryTask();
  spatialQueryTask.url = mapLayer + "/" + strSourceID;
  spatialQueryTask.useAMF = false;
  spatialQueryTask.execute(spatialQuery, new AsyncResponder(onResultS, onFaultS));

  function onResultS(featureSetSpatial:FeatureSet, token:Object = null):void
  {
  if (featureSetSpatial.features.length>0)
  {
  if (featureSetSpatial.features.length >= 1000)
  {
  Alert.show(resourceManager.getString('ViewerStrings', 'SearchAlert6'));
  cursorManager.removeBusyCursor();
  hideProgress();
  }
  else
  {      
  result=featureSetSpatial;
  var geom:Geometry;         
  var count:Number=0;
  for each (var myGraphic:Graphic in featureSetSpatial.features)
  {
  switch (myGraphic.geometry.type)
  {
  case Geometry.MAPPOINT:
  {
  myGraphic.symbol = i_redalarm;
  break;
  }
  case Geometry.POLYLINE:
  {
  myGraphic.symbol = sls;

  break;
  }
  case Geometry.POLYGON:
  {
  myGraphic.symbol = sfs;

  break;
  }

  }
  queryGraphic.add(myGraphic);      
  count++;
  }

  map.addLayer(queryGraphic);
  Countfeature.text="Total no of records : " + count.toString();    
  dg.visible=true;
  dg.dataProvider = featureSetSpatial.attributes;
  var arrayAlias:ArrayCollection=new ArrayCollection(strAliasName.split(",").sort());

  for(var i:int = 0; i < dg.columns.length; i++) {
  var col:DataGridColumn = DataGridColumn(dg.columns);
  //       col.headerText=arrayAlias.getItemAt(i).toString();

  }
  showStateResults();
  wSpatialQuery.selectedTitlebarButtonIndex = 1;
  cursorManager.removeBusyCursor();
  hideProgress();
  }
  }
  else
  {
  Alert.show("No Record Found");
  cursorManager.removeBusyCursor();
  hideProgress();
  }
  }
  function onFaultS(info:Object, token:Object = null):void
  {
  Alert.show(info.faultString + "\n\n" + info.faultDetail, "queryTask fault " + info.faultCode);
  cursorManager.removeBusyCursor();
  }
  }
  else
  {
  Alert.show("No Records found");
  cursorManager.removeBusyCursor();
  hideProgress();
  }

  }
  else
  {
  Alert.show("Selection Error");
  cursorManager.removeBusyCursor();
  hideProgress();
  }
  }
  catch(e:Error)
  {
  Alert.show("No Record Found");
  cursorManager.removeBusyCursor();
  hideProgress();

  }
  }


  protected     function QueryFault(event:FaultEvent):void
  {
  Alert.show("Service temporarily unavailable. Please try again","Information");
  cursorManager.removeBusyCursor();
  }

  protected function btnExport_clickHandler(event:MouseEvent):void
  {
  PopUpManager.addPopUp(ttlExl, this, true);
  PopUpManager.centerPopUp(ttlExl);
  }
  //excel export
  public function GridToExcel (grid:Object):void
  {
  var resultLabel:String=new String();
  var dataSource:ICollectionView =  grid.dataProvider as ICollectionView;
  var headers:String = "";          
  var tabDelimiter:String = "\t";
  var newLine:String = "\n";
  var pageStart:String = newLine + newLine;
  for each (var hcol:Object in grid.columns)//coltypes differe between DG & ADG
  {
  if (headers.length > 0)//avoid firstcolumn having extra delimeter
  headers += tabDelimiter;                               
  headers += hcol.headerText.toUpperCase();                     
  }
  headers += newLine;

  //populate data
  var cursor:IViewCursor = dataSource.createCursor();
  var data:String = "";
  var item:Object;
  var itemData:String;

  do 
  {
  item = cursor.current;
  itemData = "";

  for each (var col:Object in grid.columns)
  {
  if (itemData.length > 0)   //avoid firstcolumn having extra delimeter                         
  itemData += tabDelimiter;
  itemData += col.itemToLabel(item);                            
  }

  data += itemData +newLine;
  }while (cursor.moveNext())

  var fr:FileReference = new FileReference(); 
  fr.save(pageStart + headers + data,"Result.xls"); 


  }
  protected function btnOK_clickHandler(event:MouseEvent):void
  {
  PopUpManager.removePopUp(ttlExl);
  GridToExcel(dg);

  }

  protected function myTextArea_enterHandler(event:FlexEvent):void
  {
  PopUpManager.removePopUp(ttlExl);
  GridToExcel(dg);

  }

  //Export to pdf
  import org.alivepdf.pdf.PDF;
  import org.alivepdf.layout.Orientation;
  import org.alivepdf.layout.Size;
  import org.alivepdf.layout.Unit;
  import org.alivepdf.display.Display;
  import org.alivepdf.saving.Method;              
  import org.alivepdf.colors.RGBColor;
  import org.alivepdf.images.ImageFormat;
  import org.alivepdf.data.GridColumn;
  import org.alivepdf.data.Grid;

  //add a page to the PDF and set the title, footer, and frame
  //x, y, width and height are set up for A4 format in landscape

  private function setPDFPageElements(docPDF:PDF,
  w:Number, h:Number,
  title:String, 
  footerLeft:String, 
  footerRight:String):void {
  docPDF.addPage();                               

  docPDF.addText(title, 30, 15);
  docPDF.setTitle(title);

  docPDF.addText(footerLeft, 20, 200);
  docPDF.addText(footerRight, 30, 200);                                                    
  docPDF.lineStyle(new RGBColor (0x000000), 1, .3, 1,CapsStyle.SQUARE, JointStyle.MITER );
  //docPDF.drawRect(new Rectangle (30,30,220,150));      

  }  

  //create PDF document 
  //it can include map, chart and data, depending on user selections
  private function doPrintPDF():void 
  {             
  var myPDF:PDF;                           
  var w:Number = 582;  //approximate number of points fitting on A4 in landscape (width) 
  var h:Number = 400 - 80; //approximate number of points fitting on A4 in landscape (height) - 80 for header and footer 

  var ratio:Number = map.width/map.height;
  try
  {
  //create the PDF document              
  myPDF = new PDF(Orientation.LANDSCAPE,Unit.MM, Size.LETTER); 
  myPDF.setDisplayMode(Display.FULL_PAGE, Layout.SINGLE_PAGE); 
  //if user wants a map in the PDF, 
  //add the map to the PDF
  //if (chkMap.selected) {                        
  map.scaleBarVisible = true;
  map.zoomSliderVisible = false; 
  map.panArrowsVisible = false;                                 
  setPDFPageElements(myPDF, 220, 150, " Spatial Query Output " , "", "Copyright: State Planning Commision");
  myPDF.addImage(map,null,20,20,240,150,0,1,false,ImageFormat.JPG,100,Blend.NORMAL,null);
  var grid:org.alivepdf.data.Grid;
  var dataArray:Array =  ArrayCollection(dg.dataProvider).toArray();                
  grid = new org.alivepdf.data.Grid(dataArray, 0, 0, new RGBColor(0x999999), new RGBColor(0xFFFFFF),false,
  new RGBColor(0x000000), 1,Joint.MITER, null);
  grid.columns = createGridColumns();                    
  var newPage:Page = new Page ( Orientation.LANDSCAPE, Unit.MM, Size.LETTER );
  myPDF.addPage(newPage);
  myPDF.getCurrentPage().setUnit(Unit.MM);                                                  
  myPDF.textStyle(new RGBColor(0x000000), 1);     
  myPDF.addGrid(grid, 3.5, 3.5, true);      
  var file : FileReference = new FileReference()
  file.save(myPDF.save(Method.LOCAL),"exportresult.pdf");                                                    
  }
  catch (error:Error) {
  Alert.show(error.message.toString());                  
  } 
  }

  //Next function is to be used with the addGrid method 
  //Columns here is the array that contains my DataGrid columns
  private function createGridColumns():Array {
  var gridColumns:Array = new Array();
  for each (var gridColumn:DataGridColumn in dg.columns) {
  var grColumn:org.alivepdf.data.GridColumn;                    
  grColumn = new GridColumn(gridColumn.headerText, gridColumn.dataField, 30, org.alivepdf.layout.Align.CENTER, org.alivepdf.layout.Align.LEFT);                                                                              
  gridColumns.push(grColumn);               
  }                    
  return gridColumns;
  }


  protected function button1_clickHandler(event:MouseEvent):void
  {
  doPrintPDF();
  }

  //export shp
  private var result:FeatureSet = new FeatureSet();
  import widgets.Export2Shp.mio.as3shplib.ShpWriter;
  private var shpWriter:ShpWriter = null;
  protected function button2_clickHandler(event:MouseEvent):void
  {
  shpWriter = new ShpWriter("shpexport", result.geometryType, result.spatialReference.wkid, result.fields);
  shpWriter.write(result.features);

  if (shpWriter != null) {
  var fr:FileReference = new FileReference();
  fr.save(shpWriter.getData(), "shpexport.zip");
  }
  else
  {
  Alert.show("Export failed");
  }

  }

  //export png
  import com.esri.ags.Graphic;
  import com.esri.ags.geometry.Extent;
  import com.esri.ags.geometry.Geometry;
  import com.esri.ags.symbols.SimpleFillSymbol;
  import com.esri.ags.symbols.SimpleLineSymbol;
  import mx.collections.ArrayCollection;
  import mx.controls.Alert;
  import mx.core.UIComponent;
  import mx.graphics.codec.PNGEncoder;
  private const FILE_NAME:String = "screen.png";
  private var mapExtent:Extent;
  private var bitmapData:BitmapData;              
  private var logoBitmapData:BitmapData;

  /**
  * Save as png clicked
  */
  protected function onSaveAsPng(event:MouseEvent):void
  {
  trace("Save button clicked");
  saveMapImage();
  }

  /**
  * @private
  */
  private function saveMapImage():void
  {
  trace("Image export started");
  var fileReference:FileReference = new FileReference();
  hideComponents();
  // add listeners to show zoom slider after execution
  fileReference.addEventListener(Event.COMPLETE, fileSaveComplete);
  fileReference.addEventListener(Event.CANCEL, fileSaveCancel);

  try
  {
  var mapComponent:UIComponent = map as UIComponent;
  var exportData:BitmapData = getBitmapData(mapComponent);
  if (exportData)
  {
  // encode to PNG format
  var pngEncoder:PNGEncoder = new PNGEncoder();
  var byteArray:ByteArray = pngEncoder.encode(exportData);
  // open dialog box
  fileReference.save(byteArray, FILE_NAME);
  exportData = null;
  bitmapData = null;
  }
  }
  catch (ioError:IllegalOperationError)
  { 
  trace(ioError.getStackTrace());
  }
  catch (error:Error)
  { 
  trace(error.getStackTrace());
  }
  }

  /**
  * get bitmap data from IBitmapDrawable component
  */
  private function getBitmapData(uiComponent:UIComponent):BitmapData
  {
  try
  {
  // map image size
  var mapWidth:Number = uiComponent.width;
  var mapHeigth:Number = uiComponent.height;
  // get flash map bitmap data
  bitmapData = new BitmapData(mapWidth, mapHeigth);
  var matrix:Matrix = new Matrix();
  bitmapData.draw(uiComponent, matrix);

  }
  catch (error:Error)
  {
  trace(error.getStackTrace()); 
  }
  return bitmapData;
  }

  /**
  * Hide crosshair, logo, scalebar ...
  */
  private function hideComponents():void
  {
  // TODO: complete code
  // force UIComponent update/redraw
  map.validateNow();
  }

  /**
  * Restore hidden map components: crosshair, logo, scalebar ...
  * Restore map extent.
  */
  private function showComponents():void
  {
  // TODO: complete code
  // restore map extent
  map.extent = mapExtent;
  mapExtent = null;
  }




  /**
  * File upload/download canceled by user
  */
  protected function fileSaveCancel(event:Event):void
  {
  showComponents();
  }

  /**
  * File upload/download completed
  */
  protected function fileSaveComplete(event:Event):void
  {
  showComponents();
  }




  //Export to KML Reusable components

  import com.esri.ags.utils.WebMercatorUtil;
  private function saveKML():void 
  {
  //create string to hold KML
  var KML:String = new String;
  KML = "";
  KML = '<?xml version="1.0" encoding="UTF-8"?>\n<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">\n<Document>\n<Folder>\n';

  for (var i:int = 0; i < queryGraphic.numGraphics; i++)
  {
  var gra:Graphic = queryGraphic.getChildAt(i) as Graphic;
  var symTypeName:String = "";
  var symType:String = "";
  var symLType:String = "";
  var symFontE:String = "";
  var symFontP:String = "middle";
  var symSize:Number = 1;
  var symColor:Number = 0x000000;
  var symColor2:Number = 0x000000;
  var symColor3:Number = 0x000000;
  var symWidth:Number = 1;
  var symText:String = "";
  var symAlpha1:Number = 1;
  var symAlpha2:Number = 1;
  var geomType:String = "";
  var geomSR:Number;
  var gname:String = "";
  var symAngle:Number = 0;
  var symcolour:String = "";
  var polysymcolour:String = "";
  var symAlpha:String = "FF";
  var symAlphaOutline:String = "FF"; 

  switch(gra.geometry.type)
  {
  case Geometry.MAPPOINT:
  {
  var pnt:MapPoint = gra.geometry as MapPoint;
  var latlong:MapPoint = WebMercatorUtil.webMercatorToGeographic(pnt) as MapPoint;

  KML = KML + "<Placemark>\n<Style>\n<IconStyle>\n<scale>1.000000</scale>\n<Icon>\n<href>" + sms + "</href>\n</Icon>\n</IconStyle>\n</Style>\n<name> Asset/Worksite</name>\n<description></description>\n<Point>\n<coordinates>\n" + latlong.x.toString() + "," + latlong.y.toString() + "\n</coordinates>\n</Point>\n</Placemark>\n";
  break;
  }
  case Geometry.POLYLINE:
  {
  var polyline:Polyline = gra.geometry as Polyline;
  var lineSym:SimpleLineSymbol = gra.symbol as SimpleLineSymbol;
  symcolour = lineSym.color.toString(16);
  while (symcolour.length < 6)
  {
  symcolour = 0 + symcolour;
  }
  symWidth = lineSym.width;
  symAlpha = (lineSym.alpha * 255).toString(16);

  for (var i1:int = 0; i1 < polyline.paths.length; i1++)
  {
  KML = KML + "<Placemark>\n<name> Asset/Worksite</name>\n<description></description>\n<Style>\n<LineStyle>\n<color>" + symAlpha + symcolour.substr(4,2) + symcolour.substr(2,2) + symcolour.substr(0,2)  + "</color>\n<width>" + symWidth + "</width>\n</LineStyle>\n</Style>\n<LineString>\n<coordinates>\n";
  for (var j:int = 0; j < polyline.paths[i1].length; j++)
  {
  var mp:MapPoint = polyline.getPoint(i1,j) as MapPoint;
  var latlong:MapPoint = WebMercatorUtil.webMercatorToGeographic(mp) as MapPoint;
  KML = KML + latlong.x.toString() + "," + latlong.y.toString() + ",0 ";

  }
  KML = KML + "\n</coordinates>\n</LineString>\n</Placemark>\n";
  }
  break;
  }
  case Geometry.POLYGON:
  {
  var poly:Polygon= gra.geometry as Polygon;
  var polySym:SimpleFillSymbol = gra.symbol as SimpleFillSymbol;

  polysymcolour = polySym.color.toString(16);

  while (polysymcolour.length < 6)
  {
  polysymcolour = 0 + polysymcolour;
  }

  symcolour = polySym.outline.color.toString(16);

  while (symcolour.length < 6)
  {
  symcolour = 0 + symcolour;
  }

  symWidth = polySym.outline.width;

  if(polySym.style != "solid")
  {
  symAlpha = (polySym.alpha * 128).toString(16);
  }
  else
  {
  symAlpha = (polySym.alpha * 255).toString(16);
  }

  symAlphaOutline = (polySym.outline.alpha * 255).toString(16);

  for (var i2:int = 0; i2 < poly.rings.length; i2++)
  {
  KML = KML + "<Placemark>\n<name> Asset/Worksite/Admin Boundary </name>\n<description></description>\n<Style>\n<PolyStyle>\n<color>" + symAlpha + polysymcolour.substr(4,2) + polysymcolour.substr(2,2) + polysymcolour.substr(0,2) + "</color>\n</PolyStyle>\n<LineStyle>\n<color>" + symAlphaOutline + symcolour.substr(4,2) + symcolour.substr(2,2) + symcolour.substr(0,2)  + "</color>\n<width>" + symWidth + "</width>\n</LineStyle>\n</Style>\n<Polygon>\n<outerBoundaryIs>\n<LinearRing>\n<coordinates>\n";
  for (var j1:int = 0; j1 < poly.rings[i2].length; j1++)
  {
  var mp2:MapPoint = poly.getPoint(i2,j1) as MapPoint;
  var latlong:MapPoint = WebMercatorUtil.webMercatorToGeographic(mp2) as MapPoint;
  KML = KML + latlong.x.toString() + "," + latlong.y.toString() + " ";
  }
  KML = KML + "\n</coordinates>\n</LinearRing>\n</outerBoundaryIs>\n</Polygon>\n</Placemark>\n";
  }
  break;
  }

  }

  }
  KML = KML + "</Folder>\n</Document>\n</kml>";
  var fr:FileReference = new FileReference(); 
  if(!fr) fr = new FileReference();
  fr.save(KML,"SavedGraphics.kml"); 
  }
  protected function basewidget1_initializeHandler(event:FlexEvent):void
  {
  wSpatialQuery.addTitlebarButton(ICON_URL + "i_search.png", "Attribute Query Window", showStateTextSearch);
  wSpatialQuery.addTitlebarButton(ICON_URL + "i_table.png", "View Attribute Data", showStateResults); 
  dg.visible = false;
  }
  private function showStateTextSearch():void
  {
  setCurrentState("queryInput", true);
  cursorManager.removeBusyCursor();
  wSpatialQuery.selectedTitlebarButtonIndex = 0;
  }

  private function showStateResults():void
  {
  setCurrentState("resultsList", true);
  cursorManager.removeBusyCursor();
  wSpatialQuery.selectedTitlebarButtonIndex = 1;
  }
  protected function resultsgrid_itemClickHandler(event:ListEvent):void
  {
  var selectedGraphic:Graphic;
  var attr:Object = event.itemRenderer.data;
  var i:int=0;

  for each (var gr:Graphic in queryGraphic.graphicProvider)
  {

  i++;
  if (gr.attributes == attr){
  selectedGraphic=gr;
  queryGraphic.moveToTop(selectedGraphic);
  zoomToRow(selectedGraphic);
  }
  }


  }

  private function zoomToRow(graphic:Graphic):void            
  {  
  var gm:Geometry = graphic.geometry;
  switch (gm.type)
  {
  case Geometry.POLYGON:
  {
  var offset:int=1000;
  var graphicsExtent:Extent;
  if (graphic)
  {
  graphicsExtent = graphic.geometry.extent;
  graphicsExtent.xmax=graphicsExtent.xmax+offset;
  graphicsExtent.xmin=graphicsExtent.xmin-offset;
  graphicsExtent.ymax=graphicsExtent.ymax+offset;
  graphicsExtent.ymin=graphicsExtent.ymin-offset;
  map.extent = graphicsExtent; 
  }
  break;
  }
  case Geometry.MAPPOINT:
  {
  map.centerAt(graphic.geometry as MapPoint);
  map.scale = 18056;
  break;
  }
  }
  }




  ]]>
  </fx:Script>
  <fx:Declarations>


  <s:ArrayCollection id="arrLayer">
  <fx:Object id="obj1" label="WITHIN" />
  <fx:Object id="obj2" label="NOT WITHIN" />

  </s:ArrayCollection>
  <esri:SimpleFillSymbol id="sfs" style="solid" color="0xFF0000" alpha="0.4">
  <esri:SimpleLineSymbol color="0xFF0000" width="2" alpha="1" style="solid" />
  </esri:SimpleFillSymbol>
  <esri:SimpleMarkerSymbol id="sms" style="circle" color="0x000000" size="20"/>
  <esri:SimpleLineSymbol id="sls" style="solid" color="0xF5D0A9" width="10"/>
  <s:GlowFilter id="glowFilter"                                   
   alpha="1"
   color="0xE95A22"
   inner="true"
   strength="100"/>
  <!--<mx:DataGrid id="dg" width="650"  visible="false"  />-->
  <mx:TitleWindow id="ttlExl" title="Header For Excel" >
  <s:TextInput id="myTextArea"  contentBackgroundColor="0xFFFFFF" styleName="search_text" 
  width="200" height="80" color="0x000000" chromeColor="0x000000" 
  editable="true" enter="myTextArea_enterHandler(event)"/>
  <s:Button id="btnOK" label="OK" click="btnOK_clickHandler(event)" />
  </mx:TitleWindow>
  <esri:GeometryService id="myGeometryService" 
   url="http://164.100.196.130/spcgis/rest/services/Utilities/Geometry/GeometryServer"
   showBusyCursor="true"/>
  </fx:Declarations>



  <viewer:WidgetTemplate id="wSpatialQuery"
    open="init()" 
    width="455" height="410" closed="Reset()" minHeight="410" minWidth="455" maxHeight="410">

  <!--<s:Scroller id="scr" width="100%" height="100%">-->

  <!--   <viewer:layout>
  <s:VerticalLayout horizontalAlign="center" verticalAlign="middle"/>
  </viewer:layout>-->
  <s:Group id="queryInput"
  visible="false"
  visible.queryInput="true">
  <s:VGroup>

  <s:HGroup width="70">
  <s:Spacer width="10"/>
  <s:Label id="lblAO" text="Area of Interest" styleName="labelText1"/>
  </s:HGroup>   
  <s:BorderContainer borderStyle="solid" backgroundColor="0x87CEFA" width="{wSpatialQuery.width-42}" height="175" cornerRadius="5">
  <s:VGroup>
  <s:Spacer height="3"/>
  <s:HGroup id="AdminGroup" gap="43" >
  <s:HGroup width="70">
  <s:Spacer width="10"/>
  <s:Label id="lblAdminType" text="{resourceManager.getString('ViewerStrings', 'SpatialAdminType')}" styleName="labelText"/>
  </s:HGroup>                       
  <s:DropDownList id="ddlAdminType" prompt="Select Admin Boundary" toolTip="{ddlAdminType.selectedItem}" width="{wSpatialQuery.width-195}" change="ddlAdminType_changeHandler(event)"/>
  </s:HGroup>
  <s:HGroup id="DistorLAorPAGroup" gap="32" enabled="false">
  <s:HGroup width="82">
  <s:Spacer width="10"/>
  <s:Label id="lblDistorLAorPA"  text="{resourceManager.getString('ViewerStrings', 'SpatialDistrictPALA')}" styleName="labelText"/>
  </s:HGroup>   
  <s:List id="ddlDistorLAorPA"  enabled="false" allowMultipleSelection="true" height="80" toolTip="For multiple District selection, use 'Ctrl'."
  width="{wSpatialQuery.width-195}" change="ddlDistorLAorPA_changeHandler(event)" selectionColor="0x81F7F3" />
  </s:HGroup>
  <s:HGroup id="BlockorTehsilGroup" gap="40" enabled="false">
  <s:HGroup width="74">
  <s:Spacer width="10"/>
  <s:Label id="lblBlockorTehsil" text="{resourceManager.getString('ViewerStrings', 'SpatialBlockTehsil')}" styleName="labelText"/>
  </s:HGroup>
  <s:DropDownList id="ddlBlockorTehsil"  enabled="false" prompt="Select Block/Tehsil" toolTip="{ddlBlockorTehsil.selectedItem}" width="{wSpatialQuery.width-195}" change="ddlBlockorTehsil_changeHandler(event)"/>
  </s:HGroup>
  <s:HGroup id="PanchayatGroup" gap="47" enabled="false">
  <s:HGroup width="68">
  <s:Spacer width="10"/>
  <s:Label id="lblPanchayat" text="{resourceManager.getString('ViewerStrings', 'SpatialPanchayat')}" styleName="labelText"/>
  </s:HGroup>
  <s:DropDownList id="ddlPanchayat"  enabled="false" prompt="Select Panchayat" toolTip="{ddlPanchayat.selectedItem}" width="{wSpatialQuery.width-195}" change="ddlPanchayat_changeHandler(event)"/>
  </s:HGroup>
  </s:VGroup>
  </s:BorderContainer>
  <s:HGroup width="70">
  <s:Spacer width="10"/>
  <s:Label id="lblC" text="Criteria" styleName="labelText1"/>
  </s:HGroup>   
  <s:BorderContainer borderStyle="solid" backgroundColor="0x87CEFA" width="{wSpatialQuery.width-42}" height="90" cornerRadius="5">
  <s:VGroup gap="5">
  <s:Spacer height="3"/>
  <s:HGroup id="FirstSector" gap="74" visible="true">
  <s:HGroup width="42">
  <s:Spacer width="5"/>
  <s:Label id="lblFirstSector" text="{resourceManager.getString('ViewerStrings', 'SpatialSector')}" styleName="labelText"/>
  </s:HGroup>
  <s:HGroup>
  <s:DropDownList id="ddlFirstSector" prompt="Select Sector" toolTip="{ddlFirstSector.selectedItem}" width="{wSpatialQuery.width-195}" change="ddlFirstSector_changeHandler(event)"/>                                    
  </s:HGroup>
  </s:HGroup>   
  <s:HGroup id="FirstQuery" gap="77" visible="true">
  <s:HGroup width="39">
  <s:Spacer width="5"/>
  <s:Label id="lblFirstQuery" text="{resourceManager.getString('ViewerStrings', 'SpatialQuery')}" styleName="labelText"/>
  </s:HGroup>
  <s:HGroup>
  <s:DropDownList id="ddlFirstQuery" prompt="Select Query" toolTip="{ddlFirstQuery.selectedItem}" width="{wSpatialQuery.width-195}" change="ddlFirstQuery_changeHandler(event)"/>                                     
  </s:HGroup>
  </s:HGroup>
  <!--<s:HGroup  gap="70" visible="true">
  <s:HGroup width="60">
  <s:Spacer width="5"/>
  <s:CheckBox id="chkUseCriteria" label="Select for using buffer in query analysis" styleName="labelText" selected="false"/>
  </s:HGroup>


  </s:HGroup>   -->
  <s:HGroup id="FirstCriteria" gap="70" >
  <s:HGroup width="45">
  <s:Spacer width="5"/>
  <s:Label id="lblFirstCriteria" text="{resourceManager.getString('ViewerStrings', 'SpatialCriteria')}" styleName="labelText"/>
  </s:HGroup>
  <s:HGroup>
  <s:DropDownList id="ddlFirstCriteria" prompt="Select" dataProvider="{arrLayer}" toolTip="{ddlFirstCriteria.selectedItem}" width="{wSpatialQuery.width-305}"/>
  <s:TextArea id="txtFirstCriteria" width="60" height="20" restrict="0-9"/>
  <s:ComboBox id="cmbBuffer" dataProvider="{Units}" width="65"/>
  </s:HGroup>
  </s:HGroup>                              
  </s:VGroup>
  </s:BorderContainer>

  <s:VGroup>
  <s:Spacer height="1"/>
  <s:HGroup horizontalAlign="center" verticalAlign="middle">
  <s:Button id="btnSearch" label="{resourceManager.getString('ViewerStrings', 'SpatialSubmit')}" click="btnSearch_clickHandler(event)" />
  <s:Button id="btnReset" label="{resourceManager.getString('ViewerStrings', 'SpatialClear')}" click="Reset()" />


  </s:HGroup>
  </s:VGroup>
  </s:VGroup>

  </s:Group>
  <!--</s:Scroller>-->

  <s:Group id="resultsList"
  visible="false" 
  visible.resultsList="true">
  <s:VGroup>
  <s:Spacer height="2"/>
  <mx:DataGrid id="dg" visible="false"  width="{wSpatialQuery.width-50}" itemClick="resultsgrid_itemClickHandler(event)" height="{wSpatialQuery.height-100}"  alternatingItemColors="[0xFFFFCC,0xCCCCCC]" sortableColumns="true" styleName="search_text"/>
  <s:HGroup gap="5">
  <mx:Image toolTip="Export to PDF" source="assets/images/pdf.jpg" click="button1_clickHandler(event)"/>
  <mx:Image toolTip="Export to Shapefile" source="assets/images/shp1.png" click="button2_clickHandler(event)"/>
  <mx:Image toolTip="Export to PNG" source="assets/images/png.png" click="onSaveAsPng(event)"/>
  <mx:Image toolTip="Export to KML" source="assets/images/kml.gif" click="saveKML()"/>
  <mx:Image toolTip="Export to Excel" source="assets/images/csv.gif" click="GridToExcel(dg)"/>
  <mx:Label id="Countfeature" text="Total no of records : 0" styleName="labelText1"/>
  </s:HGroup>
  </s:VGroup>
  </s:Group>
  </viewer:WidgetTemplate>
</viewer:BaseWidget>












0 Kudos
akshayloya
Occasional Contributor II

The thing is if I do union it will return geometries only , so again cannot use it.

I tried using Extent also but even that dint help.

0 Kudos