`
jacky-zhang
  • 浏览: 315884 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

根据Latitude/Longitude 计算方位,距离等

 
阅读更多
里面有详细的说明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)来描述地理位置。经度是从本初子午线(通过英国格林尼治的经线)到某地经线的角度距离,而纬度是从赤道到某地的...

    经纬度计算距离公式和方位角详细介绍.zip

    这个文档“经纬度计算距离和方位角详细介绍.docx”将深入探讨这两个关键概念。 首先,让我们了解经纬度的基本概念。经度(Longitude)是指地球上一点与格林尼治本初子午线的夹角,以度为单位,范围从0°到180°E和0...

    C++船舶类定义与运用

    4. `calculateBearingAndDistance`:根据目标的经纬度坐标,计算目标相对于船舶的方位角(bearing)和距离。 在`calculateBearingAndDistance`方法中,我们可以使用Haversine公式来计算两点之间的大圆距离,方位角...

    一个经纬度相关计算的C++类

    - `m_Longitude`, `m_Latitude`: 经度和纬度的十进制表示。 - `m_RadLo`, `m_RadLa`: 经度和纬度的弧度表示。 - `Ec`, `Ed`: 地球椭圆体的半径,其中`Ec`表示赤道处的半径,`Ed`表示特定纬度下的半径。 **构造函数*...

    python实现两个经纬度点之间的距离和方位角的方法

    在地理空间分析中,计算两个点之间的距离和方位角对于路径规划、导航系统等非常重要。例如,在GPS轨迹处理中,我们经常需要计算两个地理位置之间的直线距离和相对方向,以便于进一步的数据分析或展示。 #### 二、...

    基于经纬度计算方向,距离等

    这些代码可能包含了计算距离和方位角的函数,使用Python或其他编程语言编写,适用于开发者快速集成到自己的项目中。 总的来说,基于经纬度的计算在GIS应用中扮演着重要角色,无论是简单的距离计算还是复杂的导航...

    已知经纬度和时间进行高精度太阳天顶角方位角计算

    3. **经纬度系统(Latitude and Longitude)**: 经纬度是地球上地理位置的标准坐标系统,用于精确定位地球表面的任何一点。经度表示从本初子午线(通过英国格林尼治的经线)到某地点所在经线的角度距离,纬度则...

    经纬度计算问题c++写的

    4. 距离计算:计算两个经纬度之间的距离通常采用Haversine公式,它基于球面三角学,可以计算出两点在地球表面上的大圆距离。公式如下: ``` a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2) c = 2 ⋅ ...

    VS 计算当下太阳位置

    4. **计算方位角和高度角**:根据用户的位置,我们可以使用地理坐标转换公式来计算方位角和高度角。这涉及到球面三角形的解法,例如Haversine公式。 ```csharp double solarNoon = now.Date.At(NodaTime.LocalTime....

    经纬度计算工具

    经纬度是地球表面位置的标准化表示方式,经度(longitude)沿地球的赤道线(0度经线,也称本初子午线)测量,而纬度(latitude)则从地球的两极(90度北纬和南纬)向赤道测量。 经纬度计算工具的核心功能包括: 1....

    经纬度计算

    为了精确表示地理位置,我们使用地理坐标系统,它由经度(longitude)和纬度(latitude)组成。经度是从本初子午线(通过英国格林尼治的线)到任意一点的弧度测量,纬度则是在赤道与该点之间大圆的弧度测量。 2. 度...

    greatCircle:计算点与点列表之间的距离

    当前支持单点,计算它们的距离并按距离对它们进行排序。 未来扩展的想法: 计算点之间的方位 考虑到海拔差异 计算地理位置上给定时间点的日出和日落 npm install @kevinulrich/greatcircle 用法示例 该库提供了...

    易语言经纬度计算源码.rar

    6. 应用场景:源码可能被用于定位、导航、地图绘制等领域,例如计算两点间的行驶路线、找出最近的地点、确定位置在某一区域内的方位等。 通过学习和理解这个易语言经纬度计算源码,开发者不仅可以掌握经纬度计算的...

    经纬度与距离的换算关系

    在实际应用中,考虑到地球的椭球形状,还可以使用更精确的模型,如WGS84椭球模型,来计算距离。此外,对于大规模的地理位置数据处理,可能还需要考虑地图投影等问题。总之,理解和掌握经纬度与距离的换算是GIS开发中...

    导航用GPS数据接收

    总的来说,GPS数据接收与导航涉及了GPS信号处理、NMEA协议解析、坐标转换、速度和方向计算等多个方面。通过VS2005这样的集成开发环境,可以方便地实现这些功能,并为实际的导航应用提供可靠的数据支持。对于开发者来...

    matlab开发-xy2latlonxylat0lon0azimuth

    - **角度计算**:根据参考点(lat0, lon0),计算出从参考点到目标点的方位角(azimuth)。这一步涉及到向量代数和三角函数。 - **大地坐标转换**:利用方位角和距离信息,结合地球的曲率,将平面坐标转换为地球表面上...

    已知一点坐标和经纬度求其它经纬度坐标或相应坐标经纬度

    这个过程涉及到数学中的三角函数运算,包括计算距离、角度等。 #### 距离计算 ```java public double getDistance(double x, double y) { return Math.sqrt(x * x + y * y); } ``` 这里使用了勾股定理来计算两点...

    NMEA Reference Manual-Rev2.1-Dec07.pdf

    2. GLL消息(Geographic Position-Latitude/Longitude) GLL消息提供了地理位置信息,包含了纬度和经度数据以及与这些数据相关的状态信息(如是否定位成功)、时间等。这使得用户可以清晰地了解自己当前位置的经纬度...

    bearing:计算a点到b点的方位角-matlab开发

    1. **坐标系统理解**:首先,我们需要理解地球坐标系统,其中经度(longitude)是沿着地球赤道的线的角度测量,而纬度(latitude)是从赤道到任何一点的垂直距离的度量。 2. **坐标转换**:在计算方位角之前,可能...

    NMEA_Format_v0.1.pdf

    2. GLL(Geographic Position - Latitude/Longitude):提供位置和时间数据。 3. GSA(GPS DOP and active satellites):用于表示用于定位的卫星的ID。 4. GSV(Satellites in View):提供关于卫星的仰角、方位角...

Global site tag (gtag.js) - Google Analytics