里面有详细的说明
http://www.movable-type.co.uk/scripts/latlong.html
比如计算距离
方法一,
double dist = 0.0;
double deltaLat = Math.toRadians(latVal2 - latVal1);
double deltaLon = Math.toRadians(lonVal2 - lonVal1);
latVal1 = Math.toRadians(latVal1);
latVal2 = Math.toRadians(latVal2);
lonVal1 = Math.toRadians(lonVal1);
lonVal2 = Math.toRadians(lonVal2);
double earthRadius = 6371;
double a = Math.sin(deltaLat/2) * Math.sin(deltaLat/2) +
Math.cos(latVal1) * Math.cos(latVal2) * Math.sin(deltaLon/2) * Math.sin
(deltaLon/2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
dist = earthRadius * c;
方法二,
public static double calculateHaversineMI(double lat1, double long1, double lat2,double long2) {
double dlong = (long2 - long1) * (Math.PI / 180.0f);
double dlat = (lat2 - lat1) * (Math.PI / 180.0f);
double a = Math.pow(Math.sin(dlat / 2.0), 2)
+ Math.cos(lat1 * (Math.PI / 180.0f))
* Math.cos(lat2 * (Math.PI / 180.0f))
* Math.pow(Math.sin(dlong / 2.0), 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double d = 6367* c;
return d;
}
还有计算方位
double dLong = picLongitude - mLongitude;
double y = (Math.sin(dLong) * Math.cos(picLatitude));
double x = (Math.cos(mLatitude) * Math.sin(picLatitude) -
Math.sin(mLatitude)*Math.cos(picLatitude)*Math.cos(dLong));
double angleDegreesWrongRange = Math.abs(Math.toDegrees(Math.atan2(y,
x)));
float angleDegrees = (float) ((angleDegreesWrongRange+360) % 360);
public static String getDirection(float baseAzimuth){
String bearingText = "";
if ( (360 >= baseAzimuth && baseAzimuth >= 337.5) || (0 <= baseAzimuth && baseAzimuth <= 22.5) ) bearingText = "N";
else if (baseAzimuth > 22.5 && baseAzimuth < 67.5) bearingText = "NE";
else if (baseAzimuth >= 67.5 && baseAzimuth <= 112.5) bearingText = "E";
else if (baseAzimuth > 112.5 && baseAzimuth < 157.5) bearingText = "SE";
else if (baseAzimuth >= 157.5 && baseAzimuth <= 202.5) bearingText = "S";
else if (baseAzimuth > 202.5 && baseAzimuth < 247.5) bearingText = "SW";
else if (baseAzimuth >= 247.5 && baseAzimuth <= 292.5) bearingText = "W";
else if (baseAzimuth > 292.5 && baseAzimuth < 337.5) bearingText = "NW";
return bearingText;
}
都可以在里面找到答案
分享到:
相关推荐
首先,我们需要了解地球是一个近似的椭球体,因此我们通常使用经度(Longitude)和纬度(Latitude)来描述地理位置。经度是从本初子午线(通过英国格林尼治的经线)到某地经线的角度距离,而纬度是从赤道到某地的...
这个文档“经纬度计算距离和方位角详细介绍.docx”将深入探讨这两个关键概念。 首先,让我们了解经纬度的基本概念。经度(Longitude)是指地球上一点与格林尼治本初子午线的夹角,以度为单位,范围从0°到180°E和0...
4. `calculateBearingAndDistance`:根据目标的经纬度坐标,计算目标相对于船舶的方位角(bearing)和距离。 在`calculateBearingAndDistance`方法中,我们可以使用Haversine公式来计算两点之间的大圆距离,方位角...
- `m_Longitude`, `m_Latitude`: 经度和纬度的十进制表示。 - `m_RadLo`, `m_RadLa`: 经度和纬度的弧度表示。 - `Ec`, `Ed`: 地球椭圆体的半径,其中`Ec`表示赤道处的半径,`Ed`表示特定纬度下的半径。 **构造函数*...
在地理空间分析中,计算两个点之间的距离和方位角对于路径规划、导航系统等非常重要。例如,在GPS轨迹处理中,我们经常需要计算两个地理位置之间的直线距离和相对方向,以便于进一步的数据分析或展示。 #### 二、...
这些代码可能包含了计算距离和方位角的函数,使用Python或其他编程语言编写,适用于开发者快速集成到自己的项目中。 总的来说,基于经纬度的计算在GIS应用中扮演着重要角色,无论是简单的距离计算还是复杂的导航...
3. **经纬度系统(Latitude and Longitude)**: 经纬度是地球上地理位置的标准坐标系统,用于精确定位地球表面的任何一点。经度表示从本初子午线(通过英国格林尼治的经线)到某地点所在经线的角度距离,纬度则...
4. 距离计算:计算两个经纬度之间的距离通常采用Haversine公式,它基于球面三角学,可以计算出两点在地球表面上的大圆距离。公式如下: ``` a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2) c = 2 ⋅ ...
4. **计算方位角和高度角**:根据用户的位置,我们可以使用地理坐标转换公式来计算方位角和高度角。这涉及到球面三角形的解法,例如Haversine公式。 ```csharp double solarNoon = now.Date.At(NodaTime.LocalTime....
经纬度是地球表面位置的标准化表示方式,经度(longitude)沿地球的赤道线(0度经线,也称本初子午线)测量,而纬度(latitude)则从地球的两极(90度北纬和南纬)向赤道测量。 经纬度计算工具的核心功能包括: 1....
为了精确表示地理位置,我们使用地理坐标系统,它由经度(longitude)和纬度(latitude)组成。经度是从本初子午线(通过英国格林尼治的线)到任意一点的弧度测量,纬度则是在赤道与该点之间大圆的弧度测量。 2. 度...
当前支持单点,计算它们的距离并按距离对它们进行排序。 未来扩展的想法: 计算点之间的方位 考虑到海拔差异 计算地理位置上给定时间点的日出和日落 npm install @kevinulrich/greatcircle 用法示例 该库提供了...
6. 应用场景:源码可能被用于定位、导航、地图绘制等领域,例如计算两点间的行驶路线、找出最近的地点、确定位置在某一区域内的方位等。 通过学习和理解这个易语言经纬度计算源码,开发者不仅可以掌握经纬度计算的...
在实际应用中,考虑到地球的椭球形状,还可以使用更精确的模型,如WGS84椭球模型,来计算距离。此外,对于大规模的地理位置数据处理,可能还需要考虑地图投影等问题。总之,理解和掌握经纬度与距离的换算是GIS开发中...
总的来说,GPS数据接收与导航涉及了GPS信号处理、NMEA协议解析、坐标转换、速度和方向计算等多个方面。通过VS2005这样的集成开发环境,可以方便地实现这些功能,并为实际的导航应用提供可靠的数据支持。对于开发者来...
- **角度计算**:根据参考点(lat0, lon0),计算出从参考点到目标点的方位角(azimuth)。这一步涉及到向量代数和三角函数。 - **大地坐标转换**:利用方位角和距离信息,结合地球的曲率,将平面坐标转换为地球表面上...
这个过程涉及到数学中的三角函数运算,包括计算距离、角度等。 #### 距离计算 ```java public double getDistance(double x, double y) { return Math.sqrt(x * x + y * y); } ``` 这里使用了勾股定理来计算两点...
2. GLL消息(Geographic Position-Latitude/Longitude) GLL消息提供了地理位置信息,包含了纬度和经度数据以及与这些数据相关的状态信息(如是否定位成功)、时间等。这使得用户可以清晰地了解自己当前位置的经纬度...
1. **坐标系统理解**:首先,我们需要理解地球坐标系统,其中经度(longitude)是沿着地球赤道的线的角度测量,而纬度(latitude)是从赤道到任何一点的垂直距离的度量。 2. **坐标转换**:在计算方位角之前,可能...
2. GLL(Geographic Position - Latitude/Longitude):提供位置和时间数据。 3. GSA(GPS DOP and active satellites):用于表示用于定位的卫星的ID。 4. GSV(Satellites in View):提供关于卫星的仰角、方位角...