代码不多说了,都是从网上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);
}
}
一共有两个方法
第一个是 根据提供的经度和纬度、以及半径,取得此半径内的最大最小经纬度
第二个就是根据提供的两个经纬度计算距离
分享到:
相关推荐
提供经纬度和距离计算经纬度
java:给定一个经纬度,求R半径内的经纬度范围,并随机出一个经纬度,按照实际情况计算,使用三角公式,余弦,等等算法
中文领域: 指的是提取境内地址的经纬度,的主要调用的是百度API。中间经历了一些波折,刚开始直接使用网上代码debug半天...官网给出了服务文档(千万要看),因为爬取地址时需要提供url,这个url必须和官方提供的一致
因为工作需要,经常要根据经纬度测量两点之间的距离,而网络上的各种小工具并不精确,没有考虑地球南北极半径不等于赤道半径的现实情况,本着严谨的态度,自己开发了一个MFC工具,经过测距计算,还是不错的,分享给...
已知道路三个点的经纬度求解出这条曲线的曲率半径,将点的经纬度坐标输入进去以后,可以很快速的得到三个经纬度的点经过坐标转换以后确定的那个圆的半径,也就是曲率半径
经纬度转米的小函数,其中半径为月球半径。可用于将DEM的经纬度单位转为米单位,供研究使用。 压缩包内为一个cal.h文件和一个cal.cpp文件。
最近项目上有这样的需求,需要依据设备的经纬度坐标计算距离及角度。经验证后效果较好,并分享。 1 经纬度转换距离代码 #!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'Seven' import math # 计算...
软件介绍: ...本程序能够根据经纬度测量两点之间的距离,精确度很高,本软件考虑了球南北极半径不等于赤道半径的现实情况,经过测距计算,输入A、B两点的经度纬度,即可快速计算出两点间的距离KM。
根据经纬度来计算地球球面上两点之间的球面距离~
目前的工作是需要手机查找附近N米以内的商户,致想法是已知一个中心点,一个半径,求圆包含于圆抛物线里所有的点,经纬度是一个点,半径是一个距离,不能直接加减,下面提供C#的解决方法
如果以0度经线为基准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离(这里忽略地球表面地形对计算带来的误差,仅仅是理论上的估算值)。设第一点A的经纬度为(LonA, LatA),第二点B的经纬度为...
设两个已知点(A、B点 )经纬度为(α1,β1),(α2,β2),其距离为D,地球半径为R, 行距为H,第三点的经纬度为(α3,β3),向左时θ=3π/ 2,向右时θ=π/ 2 第三点:距离前述已知两点(A、B点)组成的直线...
根据三个点的经度纬度值, 计算出三点圆的半径
微信小程序-实现电子围栏-半径-经纬度-是否在围栏内-画圆等
JAVA应用程序 输入半径及横、纵坐标画圆,可清除画布
雷达探测极坐标系(AER)与地球等经纬度坐标系(GEO) 图1中,O为地心,OD为地球半径R, A为雷达架设点,AD为雷达架设高度h,雷达探测水平面为AF,B为雷达探测的任意一点。 雷达探测极坐标系的三个参数为r,θ,δ。 ...