求助啊,c#怎么用两点的经纬度计算方位角和两点之间的距离? 10
2个回答
引用2106WXM的回答:
这个跟C#有联系吗
定义一个方法,传入两个参数,分别是两点的经纬度,然后用公式计算就是了
这个跟C#有联系吗
定义一个方法,传入两个参数,分别是两点的经纬度,然后用公式计算就是了
展开全部
首先要把经纬度转换成相应坐标系上的X,Y坐标。例如北京54坐标系、西安80坐标系等。
经纬度坐标,是指WGS84坐标。要转换成相对准确的平面坐标,需要一定的转换参数,这个是测绘学科的范畴。
转换之后那一切就简单了。
public double Distance(Coord p, int i, int j) //距离 P为坐标数组的实例成员
{
double a = Math.Pow((p.X(j) - p.X(i)), 2) + Math.Pow((p.Y(j) - p.Y(i)), 2);
return Math.Sqrt(a);
}
public double AlphaDu(Coord p, int i, int j) //方位角
{
double Alpha = Math.Atan2(p.Y(j) - p.Y(i), p.X(j) - p.X(i));
double a = Alpha * 180 / Math.PI;
a = a > 0 ? a : a + 360;
//double α = (a - a % 1) + (a % 1 * 60 - (a % 1 * 60) % 1) / 100 + ((a % 1 * 60) % 1 * 60) / 10000;
return a; //度
//return α; //度.分秒
}
//前面有数组类,p()是提取坐标的方法。不需要那直接带入相应坐标就行了。
经纬度坐标,是指WGS84坐标。要转换成相对准确的平面坐标,需要一定的转换参数,这个是测绘学科的范畴。
转换之后那一切就简单了。
public double Distance(Coord p, int i, int j) //距离 P为坐标数组的实例成员
{
double a = Math.Pow((p.X(j) - p.X(i)), 2) + Math.Pow((p.Y(j) - p.Y(i)), 2);
return Math.Sqrt(a);
}
public double AlphaDu(Coord p, int i, int j) //方位角
{
double Alpha = Math.Atan2(p.Y(j) - p.Y(i), p.X(j) - p.X(i));
double a = Alpha * 180 / Math.PI;
a = a > 0 ? a : a + 360;
//double α = (a - a % 1) + (a % 1 * 60 - (a % 1 * 60) % 1) / 100 + ((a % 1 * 60) % 1 * 60) / 10000;
return a; //度
//return α; //度.分秒
}
//前面有数组类,p()是提取坐标的方法。不需要那直接带入相应坐标就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询