`
酷的飞上天空
  • 浏览: 521749 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

根据经纬度和半径计算经纬度范围

阅读更多

代码不多说了,都是从网上copy的

 

public class LatLonUtil {
	
	private static final double PI = 3.14159265;
    private static final double EARTH_RADIUS = 6378137;
    private static final double RAD = Math.PI / 180.0;

    //@see http://snipperize.todayclose.com/snippet/php/SQL-Query-to-Find-All-Retailers-Within-a-Given-Radius-of-a-Latitude-and-Longitude--65095/ 
	//The circumference of the earth is 24,901 miles.
    //24,901/360 = 69.17 miles / degree  
    /**
     * @param raidus 单位米
     * return minLat,minLng,maxLat,maxLng
     */
    public static double[] getAround(double lat,double lon,int raidus){
		
		Double latitude = lat;
		Double longitude = lon;
		
		Double degree = (24901*1609)/360.0;
		double raidusMile = raidus;
		
		Double dpmLat = 1/degree;
		Double radiusLat = dpmLat*raidusMile;
		Double minLat = latitude - radiusLat;
		Double maxLat = latitude + radiusLat;
		
		Double mpdLng = degree*Math.cos(latitude * (PI/180));
		Double dpmLng = 1 / mpdLng;
		Double radiusLng = dpmLng*raidusMile;
		Double minLng = longitude - radiusLng;
		Double maxLng = longitude + radiusLng;
		//System.out.println("["+minLat+","+minLng+","+maxLat+","+maxLng+"]");
		return new double[]{minLat,minLng,maxLat,maxLng};
	}
    
    /**
     * 根据两点间经纬度坐标(double值),计算两点间距离,单位为米
     * @param lng1
     * @param lat1
     * @param lng2
     * @param lat2
     * @return
     */
    public static double getDistance(double lng1, double lat1, double lng2, double lat2)
    {
       double radLat1 = lat1*RAD;
       double radLat2 = lat2*RAD;
       double a = radLat1 - radLat2;
       double b = (lng1 - lng2)*RAD;
       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 = Math.round(s * 10000) / 10000;
       return s;
    }
	
	public static void main(String[] args){
		Double lat1 = 34.264648;
		Double lon1 = 108.952736;
		
		int radius = 1000;
		//[34.25566276027792,108.94186385411045,34.27363323972208,108.96360814588955]
		getAround(lat1,lon1,radius);
		
		//911717.0   34.264648,108.952736,39.904549,116.407288
		double dis = getDistance(108.952736,34.264648,116.407288,39.904549); 
		System.out.println(dis);
	}
}

 

一共有两个方法

 

第一个是 根据提供的经度和纬度、以及半径,取得此半径内的最大最小经纬度

第二个就是根据提供的两个经纬度计算距离

 

分享到:
评论
2 楼 鬼一天 2018-06-21  
代码有问题,没有考虑负数的情况。
1 楼 daoyongyu 2014-02-18  
经纬度的范围还是有误差的。

相关推荐

    经纬度周边半径计算

    在地理信息系统(GIS)和定位服务中,经常需要根据给定的经纬度坐标及指定的半径范围来计算出该范围内的其他坐标点。这种需求常见于地图应用、位置服务等领域。下面将详细介绍如何进行经纬度周边半径的计算。 #### ...

    给定经纬度,求R半径内的经纬度范围,并随机一个经纬度

    java:给定一个经纬度,求R半径内的经纬度范围,并随机出一个经纬度,按照实际情况计算,使用三角公式,余弦,等等算法

    批量根据经纬度计算距离

    在IT行业中,我们经常...综上所述,这个“批量根据经纬度计算距离”的项目是地理信息处理的一个实用案例,涵盖了地理坐标系统、坐标转换、距离计算和批量处理等多个技术点,对于理解和处理地理空间数据具有重要意义。

    经纬度和方位计算小工具

    经纬度和方位计算小工具是一款专门用于地理信息处理的应用,主要功能涵盖了基于经纬度的多种计算,如两点之间的距离和方位角的确定,以及通过已知条件反推未知点的经纬度。这些功能在地理信息系统(GIS)、导航系统...

    java根据两点经纬度计算距离

    在Java编程中,根据两点的经纬度来计算距离是一项常见的任务,特别是在地理信息系统(GIS)或者定位服务相关的应用中。这个任务通常涉及到地球表面的距离计算,因为经纬度是地球坐标系统的一部分。以下是一些相关的...

    经纬度计算距离,经纬度计算距离公式,matlab

    在IT领域,尤其是在地理信息系统(GIS)和导航应用中,经纬度计算距离是一个常见的需求。经纬度是地球坐标系统中的两个参数,分别表示地球表面某点的经度和纬度,用于精确定位地理位置。本篇文章将深入探讨如何利用...

    根据经纬度坐标计算实际两点距离

    ### 根据经纬度坐标计算实际两点距离 在地理信息系统(GIS)开发中,经常需要进行经纬度坐标之间的距离计算。此类计算对于导航系统、地图应用等有着重要的应用价值。本篇文章将详细介绍如何通过C/C++语言实现基于...

    经纬度计算距离、方位角等java源码

    例如,在百度地图或Google地图API开发中,可以使用这样的工具类来辅助计算用户的位置信息,或者根据起点、目的地和行驶方向计算路径。 由于误差极小,可以忽略,这意味着开发者在编写算法时已经考虑到了地球的曲率...

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

    - 根据纬度计算特定位置的椭圆体半径,用于后续的距离计算。 2. **弧度与角度转换**: - 经度和纬度通常以度数表示,但在计算中更常用的是弧度形式。 - 通过乘以π/180来进行角度到弧度的转换。 3. **距离计算**...

    根据经纬度算出两点距离以及方位角

    本篇将详细讲解如何根据经纬度计算两点之间的距离以及方位角,并介绍一种优化算法以减小误差。 首先,我们来理解一下经纬度系统。地球被分为360等份,每一份代表1度经度,0度经线称为本初子午线,位于英国格林尼治...

    mysql函数-根据经纬度坐标计算距离

    本篇文章将详细介绍如何利用MySQL的内置函数和数学公式来计算两个经纬度坐标点之间的距离。 首先,我们需要了解地球上两点之间的距离计算方法。在地球表面上,两点间的最短距离是大圆航线(Great Circle Distance)...

    根据经纬度计算距离 程序

    在IT领域,根据经纬度计算距离是一个常见的地理信息系统(GIS)问题,主要应用于导航、位置服务、地图应用等。这个程序的功能是通过输入两个地点的经纬度坐标,得出它们之间的直线距离,通常以米为单位。以下是关于...

    SQL 计算经纬

    在IT行业中,SQL(Structured Query Language)是一种用于管理和处理关系数据库的...在"根据经纬度计算附件的人.txt"这个文件中,很可能包含了更具体的示例代码或教程,可以帮助你深入理解这些概念并应用于实际项目。

    JAVA应用程序 输入半径及坐标画圆

    JAVA应用程序 输入半径及横、纵坐标画圆,可清除画布

    WGS84坐标下根据经纬度计算两点之间的距离

    - 计算过程中涉及到了正弦和余弦函数,以及经纬度值的转换(将度转换为弧度)。 - 公式中的`Math.sin(p1.y * (Math.PI / 180)) * Math.sin(p2.y * (Math.PI / 180))`部分表示两纬度之间的正弦乘积。 - `Math.cos...

    app根据经纬度求指定范围

    本篇文章将详细探讨如何根据中心点的经纬度来计算指定范围内的其他点。 首先,我们需要了解经纬度系统。经纬度是地球上位置的一种表示方式,经度(longitude)是从本初子午线开始,向东和向西量度的角度,而纬度...

    已知经纬度计算角度

    `Haversine`函数根据Haversine公式计算两点之间的球面距离,而`CalculateAngle`函数则返回对应的角度值。在`Main`函数中,我们给出了两个城市的经纬度,然后计算它们之间的角度差。 请注意,这个角度是沿着大圆路径...

    计算三点(经纬度)定圆的半径

    根据三个点的经度纬度值, 计算出三点圆的半径

    经纬度坐标下的球面多边形面积计算公式

    在IT领域,尤其是在地理信息系统(GIS)和地图学中,经纬度坐标下的球面多边形面积计算是一项关键技能。这种计算方式对于处理地球表面的大范围数据尤其重要,因为地球并非一个完美的平面,而是一个略扁的球体,即椭...

    【Python应用实战案例】Python实现经纬度换算+计算两地距离+地理可视化(代码)

    总结起来,这个Python应用实战案例涉及了地理定位的关键概念,包括经纬度转换、距离计算和地图可视化。通过学习和实践这些技术,开发者可以处理与地理位置相关的问题,例如分析交通路线、规划旅行路径或研究气候变化...

Global site tag (gtag.js) - Google Analytics