网络运营路测数据展示技术剖析之数据来源获取及投影

0
分享 2013-06-22
1、数据来源获取
数据源获取有多种方式:
1)通过ArcGIS桌面将业务数据库数据导出成ArcGIS要素类,这种方式是最原始的,也比较简单
2)通过AO程序自动将业务表读取到SDE数据库中,实现数据的自动后面导入,这个在后续博客中,也会和大家分享
3)通过WebService,从业务客户端,自动生成数据展现,这是这篇博客采用的方式
如下:
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
var service:HTTPService = new HTTPService();
service.url = "http://*.*.*.*:*/wnms_web/3gtest/dtMap_view.cst";
service.useProxy = false;
service.resultFormat="text";
service.addEventListener(ResultEvent.RESULT,http_resultHandler);
service.addEventListener(FaultEvent.FAULT,http_resultHandler);
var param:URLVariables = new URLVariables();
param["vo.startTime"] = "2012.05.01 00:00:00";
param["vo.endTime"] = "2012.05.16 23:59:59";
param["uesvo.uesName"] = "1,2,3,4,5,6";
param["vo.chooseType"] = "1";
param["vo.chooseId"] = "-1";
param["vo.kpiId"] = "-1";
param["vo.phoneType"] = "-1";
param["vo.cellType"] = "-1";
service.send(param);
}

protected function http_resultHandler(event:ResultEvent):void
{
trace(1);
var data:String = event.result.toString();
data = data.replace( /\s/g, '' );
var jd:JSONDecoder = new JSONDecoder(data,true);
var obj:Object=jd.getValue();
arr=obj.vos;
map1_loadHandler(null);
}

2、数据投影

地图数据投影变换涉及到大量的算法,网上也不乏有很多介绍的,在这次研究中,我们还是直接用Flex API来实现,在客户端主要有两种实现方法:
1)客户端实现投影变化,对于WebMercator与地理坐标下的转变com.esri.ags.utils包下的WebMercatorUtil提供了转换现成的正投影及反投影的方法,对于一个特殊的投影也可以通过寻找相关投影变化的算法自己实现,建议慎重考虑。
2)通过远程服务器实现批量投影,需要通过ArcGIS Server发布的几何服务来实现 ,这也是本次博客要介绍的方法,代码如下:
protected function map1_loadHandler(event:MapEvent):void
{
trace(2);
//trace("lat-->" + arr[0].latitude);
//trace("lng-->" + arr[0].longitude);

//坐标投影
for(var i:int=0;i<arr.length;i++){
var lon:Number = arr[i].longitude as Number;
var lat:Number = arr[i].latitude as Number;
//var obj:Object = this.lonLat2Mercator({'x':lon,'y':lat});
var myPoint:Geometry = new MapPoint(arr[i].longitude, arr[i].latitude,new SpatialReference(4326));
points4326.addItem(myPoint);
}
projectNow(points4326.toArray());
}


//进行投影
private function projectNow(mapPoints4326:Array):void
{
var outSR:SpatialReference = new SpatialReference(3857);
// Note: GeometryService takes in geometries instead of graphics as input
geometryService.project(mapPoints4326, outSR);
}
[/i][/i][/i][/i]

文章来源:http://blog.csdn.net/esrichinacd/article/details/8095262

0 个评论

要回复文章请先登录注册