//평균경사 WPS public function Get_SlopeAverage(geoPolygon:Geometry):void{ var sText:String = '<wps:Execute version="1.0.0" service="WPS"' + 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.opengis.net/wps/1.0.0"' + 'xmlns:wfs="http://www.opengis.net/wfs" xmlns:wps="http://www.opengis.net/wps/1.0.0"' + 'xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:gml="http://www.opengis.net/gml"' + 'xmlns:ogc="http://www.opengis.net/ogc" xmlns:wcs="http://www.opengis.net/wcs/1.1.1"' + 'xmlns:xlink="http://www.w3.org/1999/xlink"' + 'xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd">' + '<ows:Identifier>gs:RasterZonalStatistics</ows:Identifier>' + '<wps:DataInputs>' + '<wps:Input>' + '<ows:Identifier>data</ows:Identifier>' + '<wps:Reference mimeType="image/tiff" xlink:href="http://geoserver/wcs" method="POST">' + '<wps:Body>' + '<wcs:GetCoverage service="WCS" version="1.1.1">' + '<ows:Identifier>FGIS:K_Slope2</ows:Identifier>' + '<wcs:DomainSubset>' + '<ows:BoundingBox crs="http://www.opengis.net/gml/srs/epsg.xml#3857">' + '<ows:LowerCorner>1.4026484608555805E7 3917605.802638717</ows:LowerCorner>' + '<ows:UpperCorner>1.443535352076203E7 4664593.646995088</ows:UpperCorner>' + '</ows:BoundingBox>' + '</wcs:DomainSubset>' + '<wcs:Output format="image/tiff"/>' + '</wcs:GetCoverage>' + '</wps:Body>' + '</wps:Reference>' + '</wps:Input>' + '<wps:Input>' + '<ows:Identifier>zones</ows:Identifier>' + '<wps:Data>' + '<wps:ComplexData mimeType="application/json"><![CDATA[' + '{"type":"FeatureCollection","totalFeatures":1,' + '"features":[' + '{"type":"Feature",' + '"geometry":{' + '"type":"Polygon",' + '"coordinates":[[['; var PolygonShape:com.esri.ags.geometry.Polygon = geoPolygon as com.esri.ags.geometry.Polygon; //for(var iPG:int=0; iPG<PolygonShape.rings.length; ++iPG){ for(var iPG:int=0; iPG<1; ++iPG){ var poly_part:Array = PolygonShape.rings[iPG]; var cntVtx:uint = poly_part.length; for(var iVtx:int=0; iVtx<cntVtx; ++iVtx){ var poly_vtx1:MapPoint = poly_part[iVtx]; var MapX:Number = poly_vtx1.x; var MapY:Number = poly_vtx1.y; if(iVtx == (cntVtx-1))sText = sText + '[' + MapX.toString() + ',' + MapY.toString() + ']'; else sText = sText + '[' + MapX.toString() + ',' + MapY.toString() + '],'; } } sText = sText + ']]]},' + '"geometry_name":"the_geom",' + '}' + '],' + '"crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG::900913"}}' + '}'; sText = sText + ']]></wps:ComplexData>' + '</wps:Data>' + '</wps:Input>' + '<wps:Input>' + '<ows:Identifier>classification</ows:Identifier>' + '<wps:Reference mimeType="image/tiff" xlink:href="http://geoserver/wcs" method="POST">' + '<wps:Body>' + '<wcs:GetCoverage service="WCS" version="1.1.1">' + '<ows:Identifier>FGIS:K_Slope2</ows:Identifier>' + '<wcs:DomainSubset>' + '<ows:BoundingBox crs="http://www.opengis.net/gml/srs/epsg.xml#3857">' + '<ows:LowerCorner>1.4026172143691968E7 3918033.6966979336</ows:LowerCorner>' + '<ows:UpperCorner>1.4435007018440416E7 4664969.414824405</ows:UpperCorner>' + '</ows:BoundingBox>' + '</wcs:DomainSubset>' + '<wcs:Output format="image/tiff"/>' + '</wcs:GetCoverage>' + '</wps:Body>' + '</wps:Reference>' + '</wps:Input>' + '</wps:DataInputs>' + '<wps:ResponseForm>' + '<wps:RawDataOutput mimeType="text/xml; subtype=wfs-collection/1.0">' + '<ows:Identifier>result</ows:Identifier>' + '</wps:RawDataOutput>' + '</wps:ResponseForm>' + '</wps:Execute>'; var xml :XML = XML(sText); var httpService_XML:mx.rpc.http.mxml.HTTPService = new mx.rpc.http.mxml.HTTPService( ); httpService_XML.url = GEOServer_URL + "/ows"; //"/WPS"; httpService_XML.method = "POST"; httpService_XML.contentType = "application/xml"; httpService_XML.resultFormat = "text"; //"e4x"; httpService_XML.addEventListener(ResultEvent.RESULT, onResult_XML); httpService_XML.addEventListener(FaultEvent.FAULT, onFault); httpService_XML.send(xml); CursorManager.setBusyCursor(); function onResult_XML(e:ResultEvent):void{ CursorManager.removeBusyCursor(); var item_data:String = e.result as String; Get_SlopeAverageXML(XML(e.result)); } function onFault(e:FaultEvent):void{ CursorManager.removeBusyCursor(); //BusyIndicator.visible = false; } } public function Get_SlopeAverageXML(WPSXml:XML):void{ function xmlToObject(x:XML):Object{ var xmlStr:String = x.toString(); var xmlDoc:XMLDocument = new XMLDocument(xmlStr); xmlDoc.ignoreWhite=true; var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true); var resultObj:Object = decoder.decodeXML(xmlDoc); return resultObj; } var _min:Number = Number.MAX_VALUE; var _max:Number = -Number.MAX_VALUE; var _avg:Number = 0; var o:Object= xmlToObject(WPSXml); var top:Object=o.FeatureCollection; var componentArrayC:ArrayCollection=top.featureMember; if(componentArrayC.length > 0){ for each(var cmp:Object in componentArrayC) { _min = Math.min(_min, Number(cmp.feature.min)); _max = Math.max(_max, Number(cmp.feature.max)); _avg += Number(cmp.feature.avg); } _avg = _avg/componentArrayC.length; } Alert_show("평균경사:" + _avg.toString() + "\n*MIN:" + _min.toString() + "\n*MAX:" + _max.toString() , "평균경사", 5000); }
|