我正在使用arcgis javascript Api开发Web GIS应用程序,我需要通过距离和角度从point1绘制线条。第一步按此公式计算point2
point2X = point1.x + distance * Math.cos(angle)
point2Y = point1.y + distance * Math.sin(angle)
距离单位' Meter'和角度在'弧度'
第二步:用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;
}
答案 0 :(得分:0)
地图投影(由坐标系定义的东西)绝对会影响测量的结果。
"每个地图投影都会导致形状,区域,方向和/或距离的扭曲。诸如罗宾逊或温克尔·特里佩尔这样的一些预测试图通过对所有这些因素的一些妥协来最小化全世界的扭曲。其他投影(如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有一些方法可以在进行任何测量之前重新投影数据。
如果您有兴趣重新投影地图的特定功能,可以使用以下内容:
function getTrade()
{
var tradeType = $('.tradeType').val() != '' ? $('.tradeType').val() : '';
var partyId = $('.partyId').val() != '' ? $('.partyId').val() : '';
var dataString = "partyId=" +$(".partyId").val() + "&tradeType=" +$(".tradeType").val();
$.ajax({
type: "GET",
url:"getrt.php?"+dataString,
dataType:"html",
success:function(data){
$('.buyRate').html(data);
}
});
}
前面的示例假定使用几何服务(您可以在ArcGIS Online或ArcGIS for Server实例中找到它)并进行远程处理。
您可以在this链接找到有关几何服务的更多信息。
如果此信息有助于解决您的问题,请告诉我。
答案 1 :(得分:0)