经纬度相关的一些计算

(1)已知两个位置的经纬度,计算其间地理距离。

private static Double CalculateDistance(ArrayList<Double> latAndLngUser1,
			ArrayList<Double> latAndLngUser2) {
		// TODO Auto-generated method stub
		Double EARTH_RADIUS = 6378.137;

		Double radLat1 = latAndLngUser1.get(0) * Math.PI / 180.0;
		Double radLat2 = latAndLngUser2.get(0) * Math.PI / 180.0;
		Double a = radLat1 - radLat2;
		Double b = latAndLngUser1.get(1) * Math.PI / 180.0 - latAndLngUser2.get(1) * Math.PI / 180.0;
		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.0) / 10000.0;
		return s;
	}

(2)已知多个位置的经纬度数组,计算这些位置的地理中心。

	private static ArrayList<Double> CalculateCenter(
			ArrayList<ArrayList<Double>> latAndLngArray) {
		// TODO Auto-generated method stub
		ArrayList<Double> center = new ArrayList<Double>();
		Double X = 0.0, Y = 0.0, Z = 0.0;
		for (int i = 0; i < latAndLngArray.size(); i++) {
			Double lat = latAndLngArray.get(i).get(0) * Math.PI / 180;
			Double lng = latAndLngArray.get(i).get(1) * Math.PI / 180;
			X += Math.cos(lat) * Math.cos(lng);
			Y += Math.cos(lat) * Math.sin(lng);
			Z += Math.sin(lat);
		}
		X = X / latAndLngArray.size();
		Y = Y / latAndLngArray.size();
		Z = Z / latAndLngArray.size();
		Double A = Math.atan2(Y, X);
		Double B = Math.sqrt(X * X + Y * Y);
		Double C = Math.atan2(Z, B);
		Double centerLng = A * 180 / Math.PI;
		Double centerLat = C * 180 / Math.PI;
		center.add(centerLat);
		center.add(centerLng);
		return center;
	}
时间: 2024-10-05 23:35:55

经纬度相关的一些计算的相关文章

【JAVA】两点经纬度直线距离的计算

来自谷歌地图的计算公式: 通过JAVA的Math类各种方法调用.实现上述公式 private static double EARTH_RADIUS = 6378.137;// 单位千米 /** * 角度弧度计算公式 rad:(). <br/> * * 360度=2π π=Math.PI * * x度 = x*π/360 弧度 * * @author chiwei * @param d * @return * @since JDK 1.6 */ private static double get

两经纬度之间的距离计算

以下是计算两经纬度之间距离的代码,分为:头文件.源代码和测试代码三部分.具体如下: 1 // LatLonDistanceDlg.h : 头文件 2 // 3 4 #pragma once 5 6 typedef struct 7 { 8 double dLongitude; 9 double dLatitude; 10 }MyLatLong_T,*pMyLatLong_T; 11 12 // CLatLonDistanceDlg 对话框 13 class CLatLonDistanceDlg

java------4.根据经纬度排序,并计算距离。。。。。。。。根据地址计算出经纬度

1 String sql = "select xm.*,xs.*,xs.id as shopId,sqrt ( ( (( " + customerLongitude 2 + "-xs.longitude)*PI()*12656*COS(((" + customerLatitude 3 + "+xs.latitude)/2)*PI()/180)/180)" + "*" + "(( " 4 + customer

转:mysql 下 计算 两点 经纬度 之间的距离 计算结果排序

转自cdsn:https://blog.csdn.net/u013160024/article/details/43635053?utm_source=blogxgwz0 公式如下,单位米: 第一点经纬度:lng1 lat1 第二点经纬度:lng2 lat2 round(6378.138*2*asin(sqrt(pow(sin( (lat1*pi()/180-lat2*pi()/180)/2),2)+cos(lat1*pi()/180)*cos(lat2*pi()/180)* pow(sin(

UIScrollView相关问题(计算分页)

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ //每页宽度 CGFloat pageWidth = scrollView.frame.size.width; //根据当前的坐标与页宽计算当前页码 int currentPage = floor((scrollView.contentOffset.x - pageWidth/2)/pageWidth)+1; [headLable setText:titleArray[currentP

税率相关说明、计算

税率: 1.增值税,一般是17%,适用于有实物交易的公司,有收入就要交 2.消费税,不同产品不同,如卷烟(30%-45%).化妆品(30%).小汽车(3%-8%),有收入就要交 3.营业税,一般是5%,适用于提供服务的公司,有收入就要交 4.城建税,以增值税.营业税为基础,1%-7%,有收入就要交 5.教育费附加,以增值税.消费税.营业税为基础,3%,有收入就要交 6.企业所得税,一般是25%,有利润就要交 计算公式: 1.增值税,属于价外税,购买方承担,销售方缴税,有发票,计算的基础是不含税的

文件系统_文件的组织_文件的物理结构_多级索引文件——&gt;相关的小计算题!!!!!!重点重点重点!!!!!!

原文地址:https://www.cnblogs.com/dragondragon/p/12673950.html

地理空间距离计算及优化(根据两个点经纬度计算距离)

1.地理空间距离计算面临的挑战 打开美团app,不管是筛选团购还是筛选商家,默认的排序项都是"离我最近"或者"智能排序"(如下图所示). 不管是"离我最近"还是"智能排序",都涉及到计算用户位置与各个团购单子或者商家的距离(注:在智能排序中距离作为一个重要的参数参与排序打分).以筛选商家为例,北京地区有5~6w个POI(本文将商家称之为POI),当用户进入商家页,请求北京全城+所有品类+离我最近/智能排序时,我们筛选服务需要计

相关列的基数计算

在今天的文章里我想谈下基数计算里的一个特定问题:在查询谓语里相关列的基数计算.首先我们看下在SQL Server 7.0起的操作方法,最后我们详细看下SQL Server 2014里,在查询期间,处理相关列基数计算的全新实现方式. 什么是相关列(Correlated Columns) 在我们进入问题细节前,我们必须要澄清什么是相关列.当我们看SQL Server使用的查询优化器时,查询优化器是基于4个核心假设: 独立性(Independence) 一致性(Uniformity) 密封度(Cont