[英]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.