arcgis javascript 利用geometry服务测面积错误

利用geometry测面积,但是得到的结果与真实值相差很大。


api例子上的做法是:

	function getAreaAndLength(geometry) {
        	map.graphics.clear();
        	console.log(geometry)
       		var graphic = map.graphics.add(new esri.Graphic(geometry, new esri.symbol.SimpleFillSymbol()));
        	var areasAndLengthParams = new esri.tasks.AreasAndLengthsParameters();
        	areasAndLengthParams.lengthUnit = esri.tasks.GeometryService.UNIT_FOOT;
        	areasAndLengthParams.areaUnit = esri.tasks.GeometryService.UNIT_ACRES;
        	geometryService.simplify([geometry], function(simplifiedGeometries) {
          		areasAndLengthParams.polygons = simplifiedGeometries;
          		geometryService.areasAndLengths(areasAndLengthParams);
        	});
      	}
但是,这样所得到的结果是不正确的。

因为我们常用的是地理坐标系,即:SpatialReference({wkid: 4326}的地图。
                所取得的geometry也是这个坐标系的。但是,地理服务是按照投影坐标系(即:
                SpatialReference({wkid: 102113} 之类)来计算的。
     解决:在进行利用geometry服务来计算时,先进行坐标转换。具体做法如下:
            

 var areasAndLengthParams = new esri.tasks.AreasAndLengthsParameters();
            areasAndLengthParams.lengthUnit = esri.tasks.GeometryService.UNIT_KILOMETER;
            areasAndLengthParams.areaUnit = esri.tasks.GeometryService.UNIT_SQUARE_KILOMETERS;
            this.outSR = new esri.SpatialReference({ wkid: 102113});
            this.geometryService.project([geometry],this.outSR,function(geometry){
                var m=me;
                me.geometryService.simplify(geometry, function(simplifiedGeometries) {
                    areasAndLengthParams.polygons = simplifiedGeometries;
                    m.geometryService.areasAndLengths(areasAndLengthParams);
                });
            });

网上对于arcgis在javascript方面的应用的信息,确实不是很多。所以希望这个可以帮到大家。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值