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