GeometryService方法研究之intersect

来源:互联网 发布:淘宝一千零一夜 编辑:程序博客网 时间:2024/06/05 16:46

此方发可以判断一组geometry与某个geometry是否相交


myGeometryService.intersect(geoArr,testgeo,new AsyncResponder(ResultHandle2,FaultHandle2));
function ResultHandle2(arrGraphic:Array, token:Object = null):void{
1.如果 arrGraphic 类型为Polygon,此数组数组大于0,说明有相交的地方

如果是面相交arrGraphic的rings数组值大于0;

如果是点和线相交arrGraphic的rings数组值等于0;



}


function FaultHandle2(info:Object, token:Object = null):void{
Alert.show(info.toString(), "提示");
}


如下图所示





增加一个方法学习

protected function testBtn1_clickHandler(event:MouseEvent):void
{
var wkt:String = "POLYGON((108.49865570600002 30.664672235000012,108.50770146500004 30.66732200299998,108.51230810200002 30.66534229199999,108.515827801 30.655754016000003,108.500713464 30.64970066699999,108.49423942700002 30.660065599000006,108.49865570600002 30.664672235000012))";
var geo:Geometry = WKT.WKT2Geometry(wkt,map.spatialReference);
var geoArr:Array = new Array();
geoArr.push(geo);
myGeometryService.cut(geoArr,lineGraphic.geometry as Polyline,new AsyncResponder(ResultHandle,FaultHandle));

function ResultHandle(cr:CutResult, token:Object = null):void{
if(cr.geometries.length == 2){
var geo1:Geometry = cr.geometries[0];
var gra1:Graphic = new Graphic();
var resultFillSymbol1:SimpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,0x8470FF,0.5,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,0x8470FF,0.8,2));
gra1.geometry = geo1;
gra1.symbol = resultFillSymbol1;
map.defaultGraphicsLayer.add(gra1);

var geo2:Geometry = cr.geometries[1];
var gra2:Graphic = new Graphic();
var resultFillSymbol2:SimpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,0x847000,0.5,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,0x847000,0.8,2));
gra2.geometry = geo2;
gra2.symbol = resultFillSymbol2;
map.defaultGraphicsLayer.add(gra2);

// var wkttest:String = "POLYGON((108.49865570600002 30.664672235000012,108.49397387924492 30.66694414480465,108.498371123183730.667686536638463,108.49865570600002 30.664672235000012))"
// var testgeo:Geometry = WKT.WKT2Geometry(wkttest,map.spatialReference);
// var gra3:Graphic = new Graphic();
// var resultFillSymbol2:SimpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,0x847000,0.5,
// new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,0x847000,0.8,2));
// gra3.geometry = testgeo;
// gra3.symbol = resultFillSymbol2;
// map.defaultGraphicsLayer.add(gra3);



var geoArr:Array = new Array();
geoArr.push(geo1);
myGeometryService.intersect(geoArr,geo2,new AsyncResponder(ResultHandle2,FaultHandle2));
function ResultHandle2(arrGraphic:Array, token:Object = null):void{
var a:int = 0;
if(arrGraphic.length>0){
for each(var pol:Polygon in arrGraphic){
if(pol.rings.length == 0){
Alert.show("点或线相交");
a++;
}else{
Alert.show("面相交");
}
}
if(a == arrGraphic.length){
Alert.show("验证通过");
}
}else{
Alert.show("不相交");
}

}


function FaultHandle2(info:Object, token:Object = null):void{
Alert.show(info.toString(), "提示");
}

}else{
Alert.show("切割后不是2个面");
}


}


function FaultHandle(info:Object, token:Object = null):void{
Alert.show(info.toString(), "提示");
}
}

0 0
原创粉丝点击