一共有两个方法:
第一个是 根据提供的经度和纬度、以及半径,取得此半径内的最大最小经纬度
第二个就是根据提供的两个经纬度计算距离
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);
}
}
原文地址:http://314858770.iteye.com/blog/939834
分享到:
相关推荐
在地理信息系统(GIS)和定位服务中,经常需要根据给定的经纬度坐标及指定的半径范围来计算出该范围内的其他坐标点。这种需求常见于地图应用、位置服务等领域。下面将详细介绍如何进行经纬度周边半径的计算。 #### ...
java:给定一个经纬度,求R半径内的经纬度范围,并随机出一个经纬度,按照实际情况计算,使用三角公式,余弦,等等算法
在IT行业中,我们经常...综上所述,这个“批量根据经纬度计算距离”的项目是地理信息处理的一个实用案例,涵盖了地理坐标系统、坐标转换、距离计算和批量处理等多个技术点,对于理解和处理地理空间数据具有重要意义。
经纬度和方位计算小工具是一款专门用于地理信息处理的应用,主要功能涵盖了基于经纬度的多种计算,如两点之间的距离和方位角的确定,以及通过已知条件反推未知点的经纬度。这些功能在地理信息系统(GIS)、导航系统...
在Java编程中,根据两点的经纬度来计算距离是一项常见的任务,特别是在地理信息系统(GIS)或者定位服务相关的应用中。这个任务通常涉及到地球表面的距离计算,因为经纬度是地球坐标系统的一部分。以下是一些相关的...
在IT领域,尤其是在地理信息系统(GIS)和导航应用中,经纬度计算距离是一个常见的需求。经纬度是地球坐标系统中的两个参数,分别表示地球表面某点的经度和纬度,用于精确定位地理位置。本篇文章将深入探讨如何利用...
- 根据纬度计算特定位置的椭圆体半径,用于后续的距离计算。 2. **弧度与角度转换**: - 经度和纬度通常以度数表示,但在计算中更常用的是弧度形式。 - 通过乘以π/180来进行角度到弧度的转换。 3. **距离计算**...
例如,在百度地图或Google地图API开发中,可以使用这样的工具类来辅助计算用户的位置信息,或者根据起点、目的地和行驶方向计算路径。 由于误差极小,可以忽略,这意味着开发者在编写算法时已经考虑到了地球的曲率...
### 根据经纬度坐标计算实际两点距离 在地理信息系统(GIS)开发中,经常需要进行经纬度坐标之间的距离计算。此类计算对于导航系统、地图应用等有着重要的应用价值。本篇文章将详细介绍如何通过C/C++语言实现基于...
本篇将详细讲解如何根据经纬度计算两点之间的距离以及方位角,并介绍一种优化算法以减小误差。 首先,我们来理解一下经纬度系统。地球被分为360等份,每一份代表1度经度,0度经线称为本初子午线,位于英国格林尼治...
在IT领域,根据经纬度计算距离是一个常见的地理信息系统(GIS)问题,主要应用于导航、位置服务、地图应用等。这个程序的功能是通过输入两个地点的经纬度坐标,得出它们之间的直线距离,通常以米为单位。以下是关于...
本篇文章将详细介绍如何利用MySQL的内置函数和数学公式来计算两个经纬度坐标点之间的距离。 首先,我们需要了解地球上两点之间的距离计算方法。在地球表面上,两点间的最短距离是大圆航线(Great Circle Distance)...
3. **异常处理**:在转换过程中还加入了判断逻辑,即当经纬度超出中国范围时,不进行转换,而是直接返回原始经纬度值。这是因为百度地图的坐标转换主要针对中国区域内的数据,对于其他地区的数据不做特别处理。 ...
在IT行业中,SQL(Structured Query Language)是一种用于管理和处理关系数据库的...在"根据经纬度计算附件的人.txt"这个文件中,很可能包含了更具体的示例代码或教程,可以帮助你深入理解这些概念并应用于实际项目。
- 计算过程中涉及到了正弦和余弦函数,以及经纬度值的转换(将度转换为弧度)。 - 公式中的`Math.sin(p1.y * (Math.PI / 180)) * Math.sin(p2.y * (Math.PI / 180))`部分表示两纬度之间的正弦乘积。 - `Math.cos...
JAVA应用程序 输入半径及横、纵坐标画圆,可清除画布
在IT领域,尤其是在地理信息系统(GIS)或者导航应用中,经常需要处理经纬度坐标来计算两点之间的相对位置或距离。本篇文章将详细讲解如何利用已知的经纬度数据,使用C#编程语言在Visual Studio 2010环境下计算两个...
本篇文章将详细探讨如何根据中心点的经纬度来计算指定范围内的其他点。 首先,我们需要了解经纬度系统。经纬度是地球上位置的一种表示方式,经度(longitude)是从本初子午线开始,向东和向西量度的角度,而纬度...
在IT领域,尤其是在地理信息系统(GIS)和地图学中,经纬度坐标下的球面多边形面积计算是一项关键技能。这种计算方式对于处理地球表面的大范围数据尤其重要,因为地球并非一个完美的平面,而是一个略扁的球体,即椭...
在地理信息系统(GIS)中,坐标转换是一个至关重要的概念,特别是在全球范围内进行定位和数据分析时。本文将深入探讨“经纬度”与“WGS84投影坐标”之间的转换,以及如何实现这种转换。 经纬度是一种球面坐标系统,...