繁体   English   中英

在arcgis js中通过当前点和角度和距离获取新点坐标

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

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

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

距离单位“米”和角度“弧度”

第二步:用point1和point2画线。 如果输入距离为 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;
    }

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

“每张地图投影都会导致形状、区域、方向和/或距离的失真。一些投影,例如 Robinson 或 Winkel Tripel,试图通过对所有这些因素的某种妥协来最大限度地减少世界范围内的失真。其他投影(例如 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 实例中找到它)并进行远程处理。

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

让我知道这些信息是否有助于解决您的问题。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM