已知一点经纬度和距离,求距离返回内点
来源:互联网 发布:mac怎么卸载adobe软件 编辑:程序博客网 时间:2024/05/17 09:32
public class DistanceUtil {
public static double[] withInArea(double lat,double lng,double range){
double R=6371000;//地球半径,单位;米
double pi=3.1415926;
lat = lat * pi /180;
lng = lng * pi /180; //先换算成弧度
double[] result=new double[4];
double rad_dist = range / R; //计算X公里在地球圆周上的弧度
double lat_min = lat - rad_dist;
double lat_max = lat + rad_dist; //计算纬度范围
double lon_min, lon_max;
//因为纬度在-90度到90度之间,如果超过这个范围,按情况进行赋值
if(lat_min > -pi/2 && lat_max < pi/2){
//开始计算经度范围
double lon_t = Math.asin( Math.sin(rad_dist) / Math.cos(lat) );
lon_min = lng - lon_t;
//同理,经度的范围在-180度到180度之间
if ( lon_min < -pi ) lon_min += 2 * pi;
lon_max = lng + lon_t;
if ( lon_max > pi) lon_max -= 2 * pi;
}
else {
double a=lat_min-(-pi/2);
double b=lat_max-pi/2;
lat_min = Math.max (lat_min , -pi/2);
lat_max = Math.min (lat_max, pi/2);
lon_min = -pi;
lon_max = pi;
}
//最后置换成角度进行输出
lat_min = lat_min * 180 / pi;
lat_max = lat_max * 180 / pi;
lon_min = lon_min * 180 / pi;
lon_max = lon_max *180 / pi;
result[0] = lat_min;
result[1] = lat_max;
result[2] = lon_min;
result[3] = lon_max;
return result;
}
// public static void main(String[] args) {
// double[] result=new DistanceUtil().withInArea(12.23, 14.23,500);
// for(int i=0;i<result.length;i++){
// System.out.println("結果:"+result[i]);
// }
//}
}
public static double[] withInArea(double lat,double lng,double range){
double R=6371000;//地球半径,单位;米
double pi=3.1415926;
lat = lat * pi /180;
lng = lng * pi /180; //先换算成弧度
double[] result=new double[4];
double rad_dist = range / R; //计算X公里在地球圆周上的弧度
double lat_min = lat - rad_dist;
double lat_max = lat + rad_dist; //计算纬度范围
double lon_min, lon_max;
//因为纬度在-90度到90度之间,如果超过这个范围,按情况进行赋值
if(lat_min > -pi/2 && lat_max < pi/2){
//开始计算经度范围
double lon_t = Math.asin( Math.sin(rad_dist) / Math.cos(lat) );
lon_min = lng - lon_t;
//同理,经度的范围在-180度到180度之间
if ( lon_min < -pi ) lon_min += 2 * pi;
lon_max = lng + lon_t;
if ( lon_max > pi) lon_max -= 2 * pi;
}
else {
double a=lat_min-(-pi/2);
double b=lat_max-pi/2;
lat_min = Math.max (lat_min , -pi/2);
lat_max = Math.min (lat_max, pi/2);
lon_min = -pi;
lon_max = pi;
}
//最后置换成角度进行输出
lat_min = lat_min * 180 / pi;
lat_max = lat_max * 180 / pi;
lon_min = lon_min * 180 / pi;
lon_max = lon_max *180 / pi;
result[0] = lat_min;
result[1] = lat_max;
result[2] = lon_min;
result[3] = lon_max;
return result;
}
// public static void main(String[] args) {
// double[] result=new DistanceUtil().withInArea(12.23, 14.23,500);
// for(int i=0;i<result.length;i++){
// System.out.println("結果:"+result[i]);
// }
//}
}
0 0
- 已知一点经纬度和距离,求距离返回内点
- GIS算法--已知一点经纬度,方位角,距离求另一点
- 已知两点经纬度,求一点相对于另一点方位角和两点间的距离
- 已知一点的经纬度和该点到另一点的距离,求另一点的经纬度
- 已知两点经纬度求距离
- 已知经纬度求地球上两地点之间球面距离
- 已知两点经纬度和高度,求两点直线距离公式
- 已知经纬度坐标求亮点距离
- sql 已知两点的经纬度,求距离
- 已知两点坐标,求直线方程、距离其中一点距离为L的某点
- 已知经纬度算距离和方位
- 已知点的经纬度 与另一个点的距离 以及方向角 求另一点的经纬度
- 在地球上,已知A点的经纬度和B点的经纬度,算出AB点之间的距离
- 求两个已知经纬度之间的距离,单位为米
- 求数据库中给定经纬度坐标点X距离内的点
- 高德地图---已知两点经纬度坐标求距离和角度
- GPS经纬度求距离
- java 经纬度求距离
- 网络请求图片 SDWebImage
- 重写一次挂机
- 如何寻找靠谱的流量商家?
- 基于MMX指令集的程序设计简介
- STL常见用法整理_队列
- 已知一点经纬度和距离,求距离返回内点
- 文件删除了怎么恢复
- 【进程管理】系统调用execve()
- HIVE元数据表/数据字典
- 转:OSGI实战中的问题
- Linux 电池 驱动
- AIDL简单入门
- Android中级第十讲--相机录像和查看系统相册图片
- 使用 Spring 进行单元测试