ArcGIS API for JS geodesicUtils.geodesicAreas 计算面积出现负值情况记录

                   var polygonSet = [];//等值线转面后的要素集
                   for(i=0; i<featureSet.length; i++){//featureSet为等值线要素集
  //绘制等值线 var graphic = new Graphic(featureSet[i].geometry, symbol, featureSet[i].attributes); graphicLayer.add(graphic); //标注等值线的值 var path = featureSet[i].geometry.paths[0]; //等值线拐点 var startPoint = new Point(path[0],new SpatialReference({ wkid:2363 }));//取第一个拐点坐标创建Point var textSymbol = new TextSymbol( number.format(featureSet[i].attributes.CONTOUR), new Font("12px",Font.STYLE_NORMAL,Font.VARIANT_NORMAL, Font.WEIGHT_NORMAL, "Arial"), new Color([0,2,59]) ); textSymbol.setOffset(11,-5); textSymbol.setAlign(TextSymbol.ALIGN_START); var textGraphic = new Graphic(startPoint, textSymbol); //创建标注的要素 map.graphics.add(textGraphic); //将线要素转为面要素,计算面积 if(path.length >= 3){//将线要素转为面要素 var polygonJson={}; polygonJson.rings = featureSet[i].geometry.paths; (polygonJson.rings[0])[path.length] = path[0]; (polygonJson.rings[0]).reverse();//将坐标串顺序反转 polygonJson.spatialReference = featureSet[i].geometry.spatialReference; var polygon = new Polygon(polygonJson); //计算面积 var geo = webMercatorUtils.webMercatorToGeographic(polygon); //Converts geometry from Web Mercator units to geographic units.
                     
var Area = geodesicUtils.geodesicAreas([geo], esri.Units.SQUARE_METERS);//Determine the area for the input polygons
                     
var area=parseFloat(Area[0]); var polygonFeat={}; //面要素对象 //将线要素属性赋给面要素 polygonFeat.attributes=featureSet[i].attributes; polygonFeat.geometry=polygon; polygonFeat.attributes.F_AREA = area; polygonSet.push(polygonFeat); } }

 

最近在做一个功能,将等值线转成面并计算面积,再转的过程中发现面积总是为负的,因为之前多次使用该计算方法,并未出现问题,因此很纠结。。。。
参考一个帖子,具体地址找不到了,有一个截图:


因为的面要素不是直接从地图服务里读取出来的,是通过转换方式获取的,因此个人认为有可能是坐标串顺序的问题,就把坐标串顺序进行了反转,bingo,OK了!!!
总结,计算面积出现负值可能是因为坐标串顺序的问题,可以尝试该方法;
polygonJson.rings[0]).reverse();//将坐标串顺序反转

转载于:https://www.cnblogs.com/blueicejing/p/6112754.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值