在arcgis中通过当前点、角度和距离获得新的点坐标

Get new point Coordinate by Current Point and Angle and Distance in arcgis js

本文关键字:距离 坐标 arcgis      更新时间:2023-09-26

我正在开发一个使用arcgis javascript Api的Web GIS应用程序,我需要从点1按距离和角度绘制线。第一步,用这个公式计算point2

point2X = point1.x + distance * Math.cos(angle)
point2Y = point1.y + distance * Math.sin(angle)

距离单位为"米",角度单位为"弧度"

第二步:与点t1和点t2画直线。如果输入距离为1000米,用arcgis测量工具测量时,绘制的线显示长度为866米。这个公式中的坐标系有影响吗?

功能:

function GetNewPoint(x, y, distance, angle) {
        var alpha = ToRadian(angle);
        var cos = Math.cos(alpha);
        var sin = Math.sin(alpha);
        var x2 = (cos * distance)+x ;
        var y2 = (sin * distance)+y ;
        return esri.geometry.xyToLngLat(x2, y2);
    }
    function ToRadian(angle) {
        return (Math.PI / 180) * angle;
    }

地图投影(由坐标系统定义的东西)绝对会影响测量结果。

"每次地图投影都会导致形状、面积、方向和/或距离的扭曲。一些预测,如罗宾逊或温克尔·特里佩尔,试图通过对所有这些因素的妥协,将全球的扭曲程度降到最低。其他投影(如UTM和State Plane)是为全球的重点区域设计的,以保持最小的失真。"来源:https://blogs.esri.com/esri/arcgis/2010/03/05/measuring-distances-and-areas-when-your-map-uses-the-mercator-projection/

幸运的是,您正在使用的Web API有一些方法可以在您进行任何测量之前重新投影您的数据。

如果你对重新投影地图的特定特征感兴趣,你可以使用这样的东西:

var sr = new esri.SpatialReference({wkid:32610}) 
// assuming you already referenced geometryService
geometryService.project([graphic], sr, function(projectedGraphic){   
  geometryService.areasAndLengths(projectedGraphic, function(result){   
    var perimeter = result.lengths[0]; 
    var area = result.areas[0]; 
  }); 
}); 

前面的例子假设使用了一个几何服务(你可以在ArcGIS Online或你的ArcGIS for Server Instance中找到它),并被远程处理。

您可以在此链接找到有关几何服务的更多信息。

如果这些信息有助于解决您的问题,请告诉我。

检查这个网站,他把你需要的所有方程与坐标和在这里是我的解决方案,以获得新的点的坐标。