网络运营路测数据展示技术之同色及混合的聚合

0
分享 2013-05-21
对于运营网络路测数据来说,我们通常不仅仅会通过信号扇区对他们归类,同时也有可能通过其信号等级或者其它业务属性对他们进行归类,对于大数据量的展示来说,效率成为其在Web端运用需要考虑的一个重要因素,所以我们需要用到聚合。
在此通过扩展,我们对期路测点分为六类,每类赋予不同的颜色进行渲染,在此我们把它称为同色聚合。
当比例尺放大到一定等级之后,为了更好的展示数据,我们需要对他们一起聚合,也就是我们常说的常规聚合,在此我们称为混合聚合!
代码分别:
private var pointArr:ArrayCollection=new ArrayCollection();	
private var redpointArr:ArrayCollection=new ArrayCollection();
private var pinkpointArr:ArrayCollection=new ArrayCollection();
private var yellowpointArr:ArrayCollection=new ArrayCollection();
private var bluepointArr:ArrayCollection=new ArrayCollection();
private var bluegreenpointArr:ArrayCollection=new ArrayCollection();
private var greenpointArr:ArrayCollection=new ArrayCollection();
//private var wnmspointArr:ArrayCollection=new ArrayCollection();
private var arr:Array = new Array();
private var points4326:ArrayCollection=new ArrayCollection();

protected function map1_extentChangeHandler(event:ExtentEvent):void
{

if(MyMap.scale<15000)
{
redGraphicLayer.graphicProvider=null;
pinkGraphicLayer.graphicProvider=null;
yellowGraphicLayer.graphicProvider=null;
blueGraphicLayer.graphicProvider=null;
bluegreenGraphicLayer.graphicProvider=null;
greenGraphicLayer.graphicProvider=null;
myGraphicLayer.graphicProvider=pointArr;
}
else
{
myGraphicLayer.graphicProvider=null;
redGraphicLayer.graphicProvider=redpointArr;
pinkGraphicLayer.graphicProvider=pinkpointArr;
yellowGraphicLayer.graphicProvider=yellowpointArr;
blueGraphicLayer.graphicProvider=bluepointArr;
bluegreenGraphicLayer.graphicProvider=bluegreenpointArr;
greenGraphicLayer.graphicProvider=greenpointArr;
}


}


//坐标数组投影完成事件
private function projectCompleteHandler(event:GeometryServiceEvent):void
{
try
{
// Note: 投影后的结果数据
var myPoints3857:Array = (event.result as Array);
}
catch (error:Error)
{
Alert.show(error.toString());
}

for(var i:int=0;i<arr.length;i++){
//var myPoint:MapPoint = new MapPoint(arr[i].longitude, arr[i].latitude,new SpatialReference(3857));

//var myPoint:MapPoint = new MapPoint(obj.x,obj.y);
//trace("x-->" + myPoint.x);
//trace("y-->" + myPoint.y);
var myPoint:MapPoint=myPoints3857[i] as MapPoint;
var myGraphic:Graphic=null
//trace("state == " + arr[i].state);
//switch(arr[i].state){
if(arr[i].state >= 0 && arr[i].state < 0.5)
{
//trace("state1 == " + arr[i].state);
myGraphic=new Graphic(myPoint,new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 22, 0xf70a0a),null);
redpointArr.addItem(myGraphic);
}
else if(arr[i].state >= 0.5 && arr[i].state < 1.5)
{
//trace("state2 == " + arr[i].state);
myGraphic=new Graphic(myPoint,new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 22, 0xff5a02),null);
pinkpointArr.addItem(myGraphic);
}
else if(arr[i].state >= 1.5 && arr[i].state < 2.5 )
{
//trace("state3 == " + arr[i].state);
myGraphic=new Graphic(myPoint,new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 22, 0xef9212),null);
yellowpointArr.addItem(myGraphic);
}
else if(arr[i].state >= 2.5 && arr[i].state < 3.5 )
{
//trace("state4 == " + arr[i].state);
myGraphic=new Graphic(myPoint,new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 22, 0xffc600),null);
bluepointArr.addItem(myGraphic);
}
else if(arr[i].state >= 3.5 && arr[i].state < 4.5){
//trace("state5 == " + arr[i].state);
myGraphic=new Graphic(myPoint,new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 22, 0xb1de55),null);
bluegreenpointArr.addItem(myGraphic);
}
else if(arr[i].state >= 4.5){
//trace("state6 == " + arr[i].state);
myGraphic=new Graphic(myPoint,new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 22, 0x46df23),null);
greenpointArr.addItem(myGraphic);
}
//}
pointArr.addItem(myGraphic);
}


}

[i][i][i][i][i][i][i][i][i][i][i][i][i][i][i][i][i][i][i][i][i]效果分别如下图所示:





文章来源:http://blog.csdn.net/esrichinacd/article/details/8100785
[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]

0 个评论

要回复文章请先登录注册