以下是GoogleMap的计算最短距离API:
private final double EARTH_RADIUS = 6378.137; //地球半径
private static double rad(double d)
{
return d * Math.PI / 180.0; //计算弧长
}
private static double rad(double d)
{
return d * Math.PI / 180.0; //计算弧长
}
//lng1 第一个点经度,lat1第一点纬度;lng2第二点经度,lat2第二点纬度
public static double getShortestDistance(double lng1,double lat1,double lng2,double lat2 ){
double radLat1 = rad(Lat1);
double radLat2 = rad(Lat2);
double a = radLat1 - radLat2;
double b = rad(Lon1) - rad(Lon2);
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
s = s * EARTH_RADIUS;
// s = s * 1000; //换算成米
return s; //得到千米数
}
public static double getShortestDistance(double lng1,double lat1,double lng2,double lat2 ){
double radLat1 = rad(Lat1);
double radLat2 = rad(Lat2);
double a = radLat1 - radLat2;
double b = rad(Lon1) - rad(Lon2);
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
s = s * EARTH_RADIUS;
// s = s * 1000; //换算成米
return s; //得到千米数
}
// 测试
public static void main(String[] args) {
public static void main(String[] args) {
double lng1 = 117.10156050396506;
double lat1 = 39.12835580850143;
double lng2 = 117.09607822580763 ;
double lat2 = 39.014446251230325;
double q = getDistance(lng1, lat1, lng2, lat2);
System.out.println(q);
double lat1 = 39.12835580850143;
double lng2 = 117.09607822580763 ;
double lat2 = 39.014446251230325;
double q = getDistance(lng1, lat1, lng2, lat2);
System.out.println(q);
}
相关推荐
1. **坐标系转换**:由于地球是一个曲面,我们需要将平面坐标(距离和方位角)转换为曲面坐标(经纬度)。这通常通过球面三角学中的大圆航线算法实现。大圆航线是最短路径,就像地球表面上两点之间的直线。 2. **...
这个程序很可能是用于接收用户输入的地理位置坐标,并通过特定的算法计算出这两个点之间的直线距离或实际地面距离。 首先,我们需要理解坐标系统。地球上常用的坐标系统有经纬度系统,其中经度表示东西方向的位置,...
矢量编码可能涉及将这些坐标表示为向量,并通过向量运算来计算距离。 在MATLAB的`vdist.m`文件中,可能包含了实现上述功能的代码。该函数可能接受两个WGS84坐标(经度和纬度)作为输入,然后计算它们之间的大圆距离...
3. **投影转换**:由于地球表面是曲面,而地图通常是平面,所以需要将经纬度坐标通过特定的投影方法(如高斯-克吕格投影)转换为平面坐标。 4. **系数计算**:转换过程中会涉及一系列的数学公式和转换系数,确保从一...
这些模型通过一系列参数来描述两个坐标系之间的几何差异。 2. **参数获取**:对于WGS84到其他投影坐标的转换,参数通常是公开的,因为WGS84是国际标准。然而,从非WGS84坐标系到WGS84的转换可能需要特定区域的转换...
这项技术通常涉及到对地球表面位置的表示,以及如何通过数学方法计算两个地点之间的直线或实际道路距离。以下是关于这个主题的详细说明: 首先,我们需要了解地球是一个近似的椭球体,而不是完美的平面。因此,在...
"Surf_PlotSubMesh.m"和"Surf_PlotCtrlMesh.m"这两个文件可能分别用于绘制曲面的子网格和控制点网格。子网格展示了曲线或曲面的结构,而控制点网格则强调了影响形状的点的布局。"test.m"和"success_test_main.m"可能...
因为地球是一个三维的曲面,而地图是二维的平面,所以必须通过投影方法将地球表面的点映射到平面上。这个过程会引入误差,不同的投影方式会对应不同的变形程度。例如,常用的投影方式有墨卡托投影、UTM投影等。北京...
总的来说,这个EXCEL表格是一个实用的工具,它整合了经纬度与度分秒之间的转换,以及经纬度与网格坐标的转换,通过自动计算功能提高了工作效率。对于从事地理信息相关工作的人员,或者是对地理位置数据感兴趣的个人...
卫星星下点轨迹的计算是地球观测和通信领域中的一个重要概念,它涉及到天体力学、轨道动力学以及地球物理学等多个方面的知识。星下点是指卫星在其轨道上与地球表面最近的接触点,这个点的变化轨迹反映了卫星在地面上...
坐标换带计算涉及到经纬度坐标与平面坐标之间的转换。经纬度坐标是基于地球球面的地理坐标,而平面坐标是在投影平面上的坐标。转换过程中,需要考虑地球半径、中央子午线的投影公式以及分带后的坐标调整。 四、国家...
在计算测地距离时,可以将地球视为一个平面或曲面,每个点看作图中的一个节点,节点间的边权重表示两个点之间的距离。通过不断更新节点的距离并选择当前未访问节点中最短路径的节点,Dijkstra算法可以找到最短的测地...
3. **Haversine公式**:该公式计算两个经纬度坐标之间的大圆距离,涉及到反正弦、平方、开方和乘法操作。MATLAB的数学函数库可以轻松实现这个计算。 4. **硬件接口**:如果需要从硬件设备(如GPS)获取实时位置数据...
经纬度是地球上定位的一个地理坐标体系,它通过两条虚构的线——赤道(0度纬线)和本初子午线(0度经线)来确定地球上的任何位置。经度范围是从0度到180度东和180度西,纬度范围是从0度(赤道)到90度北(北极)和90...
然而,由于地球是曲面,不能简单地使用直线距离来衡量两个点之间的距离。这时就需要引入一个数学模型,如球面三角法或Haversine公式,来计算地球上两点间的“大圆距离”。 Haversine公式是一个在球面上计算两点间...
经纬度是一种基于地球表面的地理坐标系统,由经度和纬度两个参数组成。经度是沿地球赤道线度量的角度,范围从0°到180°E和180°W。纬度是从赤道向北或向南度量的角度,范围从0°(赤道)到90°N(北极)和90°S...
本文将详细讲解如何在Catia中批量提取曲线和曲面上点的坐标值,这对于分析几何形状、计算工程参数以及进行后续的数据处理至关重要。 首先,我们需要了解在Catia中曲线和曲面的基本概念。曲线是二维空间中的路径,...
这可能涉及到对地球表面进行分块、投影转换等步骤,因为地球是一个曲面,而地图通常是平面的,所以需要通过投影方法将球面坐标转换为平面坐标。 在压缩包内的“经纬度计算地形图号程序.exe”文件,很可能是这个程序...