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

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);
			}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值