当前位置:首页 » 编程语言 » java经纬度计算

java经纬度计算

发布时间: 2025-08-18 19:04:10

1. 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="rais">半径(米)</param>
/// <returns></returns>
public static double[] GetAround(double lat, double lon, int rais)
{

Double latitude = lat;
Double longitude = lon;

Double degree = (24901 * 1609) / 360.0;
double raisMile = rais;

Double dpmLat = 1 / degree;
Double radiusLat = dpmLat * raisMile;
Double minLat = latitude - radiusLat;
Double maxLat = latitude + radiusLat;

Double mpdLng = degree * Math.cos(latitude * (PI / 180));
Double dpmLng = 1 / mpdLng;
Double radiusLng = dpmLng * raisMile;
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;
}

2. java 如何根据一个给定的经纬度(坐标)计算出List<经纬度>中坐标点较近的一部分坐标

使用第三方jar包 jts包 例子如下面

//一个面所包含的经纬度(标准的经纬*3600000)
String str = "POLYGON ((419164412 143703543, 419164481 143702737, 419164494 143702527,419164412 143703543))";
WKTReader wkt = new WKTReader();
Geometry geojudge1 = wkt.read(str);
int xpoi = 419164481;
int ypoi = 143702737;
Geometry geojudge2 = wkt.read("POINT(" + xpoi + " " + ypoi + "))");

if(geojudge1.intersects(geojudge2)) {
System.out.println("xpoi、ypoi 在这个面里");
}

ps:在构成一个面的时候,第一个点的经纬度一定要与最后一个点的经纬度相同。否则会报错误:java.lang.IllegalArgumentException: points must form a closed linestring

3. java获取位置信息

在Java中获取位置信息可以通过多种方式实现,具体取决于所需的位置信息的类型和来源。以下是一些常见的方法:

  1. 通过IP地址获取地理位置

    这种方法通常使用IP数据库来解析IP地址并检索其地理位置信息,如国家、省份、城市等。

    可以使用现成的Java库和框架,如ip2region、com.jthinking.common ipinfo等,这些库提供了从IP地址获取地理位置的功能。

  2. 使用第三方API进行经纬度查询

    在有网络访问的情况下,可以利用第三方地理编码API(例如Google Maps Geocoding API)来根据经纬度查询具体的地理位置信息。

    这需要发送HTTP请求到API服务,并解析返回的JSON或XML格式的响应来获取位置信息。

  3. 通过设备定位服务获取位置信息(主要针对移动设备)

    对于Android设备,可以利用Android的定位服务(如GPS、蓝牙等)来获取设备的位置信息。

    这需要在Android应用中声明适当的权限,并在代码中实现定位服务的使用。

  4. 从照片中获取位置信息

    如果照片包含了EXIF元数据,可以使用Java库来读取这些元数据,并从中提取位置信息(如拍照时的经纬度)。

    这种方法适用于已经拍摄并保存了位置信息的照片,通过解析EXIF元数据来获取位置信息。

综上所述,Java中获取位置信息的方法多种多样,选择哪种方法取决于具体的应用场景和需求。例如,如果需要获取用户的实时位置信息,可以考虑使用设备定位服务;如果需要根据IP地址获取大致的地理位置,可以使用IP数据库或第三方API。在实际应用中,需要根据具体需求选择合适的方法,并考虑其准确性、可靠性和性能等因素。

4. java 经纬度转换米

在经线上,相差一纬度约为111km ,因此100m(0.1KM)在经线上对应约为0.1/111=0.0009度,这个度数和纬度没有关系


在纬线上,相差一经度约为111cosα(α为该纬线的纬度)因此100m(0.1KM)在该纬线上对应约为0.1/(111*cos23.14)=0.0009797度,这个度数和纬度有关,


如果要知道经纬度差和距离差的换算规律,请查阅连接中的回答。

http://..com/question/711399588905395965.html?oldq=1



热点内容
excel表格去密码是多少 发布:2025-08-18 20:40:04 浏览:914
linux怎么telnet 发布:2025-08-18 20:40:03 浏览:248
yy怎么输密码 发布:2025-08-18 20:30:08 浏览:709
手机怎样访问电脑 发布:2025-08-18 20:27:07 浏览:525
明日之后服务器如何创第四个号 发布:2025-08-18 20:27:04 浏览:781
java中删除字符串 发布:2025-08-18 20:15:19 浏览:534
ipsecvpn加密算法 发布:2025-08-18 20:09:23 浏览:394
伺服电机控制算法 发布:2025-08-18 20:09:22 浏览:842
mac怎么安装python3 发布:2025-08-18 19:48:34 浏览:821
电脑做成文件服务器 发布:2025-08-18 19:38:20 浏览:18