本文目錄一覽:
- 1、java 里 兩點的經度緯度怎麼算距離
- 2、java如何用經緯度計算兩點水平和垂直距離
- 3、如何根據經緯度計算距離的java代碼
- 4、JAVA,已知當前經緯度和距離,計算符合距離條件的經度最大值、最小值和緯度的最大值、最小值。
java 里 兩點的經度緯度怎麼算距離
/**
* 計算地球上任意兩點(經緯度)距離
*
* @param long1
* 第一點經度
* @param lat1
* 第一點緯度
* @param long2
* 第二點經度
* @param lat2
* 第二點緯度
* @return 返回距離 單位:米
*/
public static double Distance(double long1, double lat1, double long2,
double lat2) {
double a, b, R;
R = 6378137; // 地球半徑
lat1 = lat1 * Math.PI / 180.0;
lat2 = lat2 * Math.PI / 180.0;
a = lat1 – lat2;
b = (long1 – long2) * Math.PI / 180.0;
double d;
double sa2, sb2;
sa2 = Math.sin(a / 2.0);
sb2 = Math.sin(b / 2.0);
d = 2
* R
* Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1)
* Math.cos(lat2) * sb2 * sb2));
return d;
}
java如何用經緯度計算兩點水平和垂直距離
/**
* 計算地球上任意兩點(經緯度)距離
*
* @param long1
* 第一點經度
* @param lat1
* 第一點緯度
* @param long2
* 第二點經度
* @param lat2
* 第二點緯度
* @return 返回距離 單位:米
*/
public static double Distance(double long1, double lat1, double long2,
double lat2) {
double a, b, R;
R = 6378137; // 地球半徑
lat1 = lat1 * Math.PI / 180.0;
lat2 = lat2 * Math.PI / 180.0;
a = lat1 – lat2;
b = (long1 – long2) * Math.PI / 180.0;
double d;
double sa2, sb2;
sa2 = Math.sin(a / 2.0);
sb2 = Math.sin(b / 2.0);
d = 2
* R
* Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1)
* Math.cos(lat2) * sb2 * sb2));
return d;
}
如何根據經緯度計算距離的java代碼
思路是:通過傳入地址作為參數拼接url調用百度地圖,然後解析返回的頁面,提取經緯度坐標。以下為具體步驟1、修改excel表中的屬性名(方便後面用查詢讀取)然後倒入到資料庫。2、代碼實現
JAVA,已知當前經緯度和距離,計算符合距離條件的經度最大值、最小值和緯度的最大值、最小值。
//拿走不謝
private final static double R = 6370996.81;
private final static double PI = 3.14159265;
private final static double RAD = Math.PI / 180.0;
/// summary
/// 根據提供的經度和緯度、以及半徑,取得此半徑內的最大最小經緯度
/// /summary
/// param name=”lat”緯度/param
/// param name=”lon”經度/param
/// param name=”raidus”半徑(米)/param
/// returns/returns
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;
return new double[] { minLat, minLng, maxLat, maxLng };
}
/// summary
/// 根據提供的兩個經緯度計算距離(米)
/// /summary
/// param name=”lng1″經度1/param
/// param name=”lat1″緯度1/param
/// param name=”lng2″經度2/param
/// param name=”lat2″緯度2/param
/// returns/returns
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 * R;
s = Math.round(s * 10000) / 10000;
return s;
}
原創文章,作者:RAFK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/133435.html