`
zcw_java
  • 浏览: 303036 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

经纬度两点距离|范围!

 
阅读更多
愁人!第一弄这个.网上找到不少算法,但实用的没几个,而且说的有些抽象,整理了一下分享!
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);
	}
}

以上,最大经度,纬度,最小经度,纬度! 两点之间的距离
以上引用别人,写的挺不错,但是有些麻烦!过去结果不够直接.
    //object-c,获取搜索目标的经纬度
        var geocoder = new GClientGeocoder();  
        geocoder.getLocations(address, function($){  
        var lalton = $.Placemark[0].Point.coordinates;  
        areaMap(lalton[1],lalton[0]);  
        //alert(lalton[1] + "," + lalton[0]);  
    });  

注意这里数据库是mysql
    SELECT id, ( 3959 * acos( cos( radians(lat_t) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(lng_t) )  
    + sin( radians(lat_t) ) * sin( radians( lat ) ) ) ) AS distance  
    FROM Stores HAVING distance < 25  
    ORDER BY distance  
    LIMIT 0,20  

SELECT * from 
app_activity where 
(3959*acos(cos(radians(36.0971114))*cos(radians(latitude))*cos(radians(longitude)-radians(103.6130684))+sin(radians(36.0971114))*sin(radians(latitude)))) <1

1、3959为地球半径
2、25为搜索半径
3、3959和25都是以“英里”为单位如果需要改成“公里”来计算的,都需要乘以1.60931


select * from location where sqrt(  
        (  
         ((113.914619-longitude)*PI()*12656*cos(((22.50128+latitude)/2)*PI()/180)/180)  
         *  
         ((113.914619-longitude)*PI()*12656*cos (((22.50128+latitude)/2)*PI()/180)/180)  
        )  
        +  
        (  
         ((22.50128-latitude)*PI()*12656/180)  
         *  
         ((22.50128-latitude)*PI()*12656/180)  
        ) 

经度:113.914619
纬度:22.50128
范围:2km
longitude为数据表经度字段
latitude为数据表纬度字段


地球在线http://www.earthol.com/获取经纬度做测试
分享到:
评论

相关推荐

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

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

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

    本篇文章将深入探讨如何利用经纬度来计算地球上两点之间的距离,并介绍一个基于MATLAB的GUI工具,方便用户进行此类计算。 首先,让我们理解经纬度的基本概念。经度是指从本初子午线向东或向西测量的角度,0°经线...

    计算两个经纬度之间的距离Java

    在实际应用中,如果需要在地图上显示两点间的距离,可以结合高德地图JavaScript API或者Android SDK,将计算出的距离作为参数,绘制路径或标注。但在这个例子中,描述中提到的“通过高德地图测试通过”可能意味着...

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

    通过这些经纬度值,可以计算出地球上两点间的距离。通常,这种距离计算基于球面三角学原理,利用地球的平均半径来近似计算两点间的大圆弧长度。 #### 三、计算公式详解 在给定的部分内容中,提供了一个计算两点间...

    电子-根据两点经纬度计算距离.doc

    "电子-根据两点经纬度计算距离.doc" 根据两点经纬度计算距离是基于地球坐标系的概念。地球坐标系是由经度和纬度组成的。经度是指从本初子午线到某点的水平角距离,纬度是指某点与地球赤道面的夹角。 在地球坐标系...

    两经纬度之间的距离

    本篇文章将深入探讨如何计算地球上两点间的距离,并通过编程实现这一功能。 首先,我们需要理解地球是一个近似的球体,而我们通常使用的经纬度坐标系统是基于这个假设建立的。经度(longitude)表示东西方向,以...

    由两点经纬度计算距离-arcgis server C#

    ### 由两点经纬度计算距离-arcgis server C# #### 概述 在地理信息系统(GIS)领域,经常需要计算两个地理位置之间的距离。这在地图导航、路径规划、位置服务等场景中尤为重要。ArcGIS Server作为一款强大的GIS...

    已知两点经纬度,计算距离

    在IT领域,尤其是在地理...总的来说,理解和应用Haversine公式是计算两点经纬度间距离的关键,而C#提供了一种方便的语言环境来实现这个计算。通过熟练掌握这些知识,开发者可以为GIS应用或导航系统创建高效的定位功能。

    两点经纬度计算距离工具

    6. **应用范围**:除了基本的两点距离计算,这样的工具还可以扩展到多点路径规划、地理围栏设定、交通路线分析等多种场景。 7. **数据输入**:用户输入的经纬度通常采用十进制度数形式,例如(31.2304, 121.4737),...

    java计算两个经纬度之间的距离

    Haversine公式适用于球面几何,它能计算地球上两点之间的大圆距离,而Spherical Law of Cosines则通过三角函数计算。在这里,我们将主要讨论使用Haversine公式的方法,因为这是最常见的处理方式。 首先,我们需要...

    用经纬度计算两点距离软件

    这个名为“用经纬度计算两点距离软件”的程序显然就是针对这一需求设计的。经纬度是一种坐标系统,用于精确地定位地球上任何位置。下面将详细解释如何使用经纬度以及计算两点距离的数学原理。 首先,我们来理解一下...

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

    在IT行业中,尤其是在地理信息系统(GIS)或者地图应用开发中,计算地球上两点之间的距离和方位角是一项基础且重要的任务。本篇文章将详细讲解如何利用Java编程语言实现这一功能,主要基于给定的"经纬度计算"标签...

    根据经纬度计算距离 程序

    3. **距离公式**:基于经纬度的两点间距离计算可以使用球面三角法的哈弗辛公式(Haversine formula)。该公式考虑了地球半径(约为6371公里),并计算出两点之间的大圆距离,即两点间最短的路径。 哈弗辛公式如下...

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

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

    批量根据经纬度计算距离

    3. **Haversine公式**:批量计算距离通常会用到Haversine公式,这是一种基于球面三角学的方法,用于计算地球上两点间的最短距离(大圆距离)。Haversine公式考虑了地球的半径,通过两个点的经纬度差来计算出它们之间...

    java实现 根据经纬度算距离

    通过经纬度算出两点间的距离,经过仔细对比及参照,相对精确度较高,请大家放心使用

    求两个点(经纬度)的距离.

    在IT行业中,我们经常需要处理地理空间数据,其中包括计算两点之间的距离。这在地图应用、导航系统、位置服务等领域有着广泛的应用。标题“求两个点(经纬度)的距离”所涉及的知识点主要涵盖经纬度坐标系统和地球上...

    C#经纬度距离计算函数和案例

    在IT行业中,尤其是在地理信息系统(GIS)或者导航应用中,计算地球上两点之间的距离是一个常见的需求。C#作为.NET框架的主要编程语言,提供了多种方法来处理这样的任务。本篇将详细介绍如何在C#中实现经纬度距离...

    经纬度距离计算+坐标转换

    这些公式会将经纬度转换为弧度,然后进行数学运算以得出两点间的距离,单位通常是千米或英里。 三、坐标转换 在不同的地理坐标系中,同样的经纬度可能会有不同的表示方式。常见的坐标系有WGS84(世界大地坐标系)、...

    Android-依据两点间经纬度坐标,计算两点间距离

    根据提供的文件信息,本文将详细解释如何在Android应用开发中基于两点间的经纬度坐标来计算这两点之间的地理距离。此方法对于实现地图定位、路线规划等功能具有重要意义。 ### 核心概念 #### 地理坐标系统 地球...

Global site tag (gtag.js) - Google Analytics