`
yangyangmyself
  • 浏览: 232423 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java计算两点经纬度距离及最短运行时间

    博客分类:
  • Java
 
阅读更多
概述
    经纬度在地图应用中常见,一般结合路网信息库,进行地图应用开发(流量、路况等),此次从理计算两点经纬度的直线距及最短运行时间预研,实现下述表达式:

 

 

package com.sunshine.app.utils;

import java.text.SimpleDateFormat;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public abstract class DeckUtils {

	public static final String TYPE = "yyyy-MM-dd HH:mm:ss";

	/**
	 * 地球半径
	 */
	public static double EARTH_RADIUS = 6378.137;

	private static Logger log = LoggerFactory.getLogger(DeckUtils.class);

	/**
	 * 两时间之差(小时)
	 * @param dateStr1
	 * @param dateStr2
	 * @return
	 * @throws Exception
	 */
	public static float diffHours(String dateStr1, String dateStr2)
			throws Exception {
		SimpleDateFormat sd = new SimpleDateFormat(TYPE);
		long l1 = sd.parse(dateStr1).getTime();
		long l2 = sd.parse(dateStr2).getTime();
		long diff = Math.abs(l1 - l2);
		float result = (float) diff / 1000 * 60 * 60;
		return Float.valueOf(new java.text.DecimalFormat("0.0").format(result));
	}

	/**
	 * 两时间之差(分钟)
	 * 
	 * @param dateStr1
	 * @param dateStr2
	 * @return
	 * @throws Exception
	 */
	public static float diffMinute(String dateStr1, String dateStr2)
			throws Exception {
		SimpleDateFormat sd = new SimpleDateFormat(TYPE);
		long l1 = sd.parse(dateStr1).getTime();
		long l2 = sd.parse(dateStr2).getTime();
		long diff = Math.abs(l1 - l2);
		float result = (float) diff / 1000 * 60;
		return Float.valueOf(new java.text.DecimalFormat("0.0").format(result));
	}

	/**
	 * 两点经纬度之间距离(米)
	 * @param lat1Str
	 * @param lng1Str
	 * @param lat2Str
	 * @param lng2Str
	 * @return
	 */
	public static double getDistance(String lat1Str, String lng1Str,
			String lat2Str, String lng2Str) {
		Double lat1 = Double.parseDouble(lat1Str);
		Double lng1 = Double.parseDouble(lng1Str);
		Double lat2 = Double.parseDouble(lat2Str);
		Double lng2 = Double.parseDouble(lng2Str);

		double radLat1 = rad(lat1);
		double radLat2 = rad(lat2);
		double a = radLat1 - radLat2;
		double b = rad(lng1) - rad(lng2);
		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;
	}

	private static double rad(double d) {
		return d * Math.PI / 180.0;
	}

	public static float getMinElapsetime(double meter, int speed) {
		float km = (float) meter / 1000;
		float elapse = (float) km / speed;
		return Float.valueOf(new java.text.DecimalFormat("0.0").format(elapse));
	}

	public static void main(String[] args) {
		try {
			System.out.println(DeckUtils.diffHours("2016-09-11 12:00:00",
					"2016-09-11 12:10:00"));
			double meter = getDistance("129.0043", "28.0344", "129.1234",
					"28.7008");
			float elapse = getMinElapsetime(meter, 120);
			System.out.println("运行时间:" + elapse);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

 

 

  • 大小: 6.6 KB
1
1
分享到:
评论

相关推荐

    java根据两点经纬度计算距离

    在Java编程中,根据两点的经纬度来计算距离是一项常见的任务,特别是在地理信息系统(GIS)或者定位服务相关的应用中。这个任务通常涉及到地球表面的距离计算,因为经纬度是地球坐标系统的一部分。以下是一些相关的...

    Java计算两个经纬度点之间距离算法

    Java计算两个经纬度点之间距离(以米为单位)算法, 纯Java代码, 可供参考。 在具体项目中使用过。

    计算两个经纬度之间的距离Java

    "计算两个经纬度之间的距离Java"这个主题,涉及到地理坐标系统、Haversine公式以及高德地图API的运用。 首先,我们需要了解地理坐标系统。地球被抽象为一个球体,每个位置由经度和纬度来唯一标识。经度是从本初子午...

    通过两点经纬度,计算他们之间的距离 - JAVA

    在JAVA编程中,计算两点经纬度之间的距离是一个常见的地理计算任务,主要应用于地图应用、导航系统或者地理位置服务等。这个任务通常使用哈弗辛公式(Haversine formula)来实现,该公式基于球面三角学,可以计算...

    java计算两个经纬度之间的距离

    总的来说,Java计算两个经纬度之间的距离并进行排序,涉及了地理坐标、数学公式、对象排序等多个知识点,是GIS(地理信息系统)和定位服务开发中的常见任务。通过上述方法,你可以有效地实现这一功能。

    经纬度计算距离、方位角等java源码

    在IT行业中,尤其是在地理信息系统(GIS)或者地图应用开发中,计算地球上两点之间的距离和方位角是一项基础且重要的任务。本篇文章将详细讲解如何利用Java编程语言实现这一功能,主要基于给定的"经纬度计算"标签...

    计算两个经纬度之间的距离

    Haversine公式基于球面三角学,用于计算地球上两点之间的大圆距离,这是两点间最短路径。公式如下: \[ a = \sin^2\left(\frac{\Delta \phi}{2}\right) + \cos(\phi_1) \cdot \cos(\phi_2) \cdot \sin^2\left(\frac...

    JTS两个空间几何图形间最短距离,及最短距离间的两个坐标

    记录下 java jts 求两个空间几何图形间最短距离,及最短距离间的两个坐标. 如:求一个点到一条直线的垂直坐标

    电子-根据两点经纬度计算距离.doc

    "电子-根据两点经纬度计算距离.doc" 根据两点经纬度计算距离是基于地球坐标系的概念。地球坐标系是由经度和纬度组成的。经度是指从本初子午线到某点的水平角距离,纬度是指某点与地球赤道面的夹角。 在地球坐标系...

    java实现 根据经纬度算距离

    通过经纬度算出两点间的距离,经过仔细对比及参照,相对精确度较高,请大家放心使用

    计算两个经纬度距离.java

    计算两个经纬度距离.java

    经纬度计算距离经纬度计算距离工具

    最后,“经纬度计算距离经纬度计算距离工具(gpsCal)”是核心应用,它利用GIS的基本原理,通过输入两个地理位置的经纬度,计算它们之间的直线距离(即大圆距离)。对于户外活动爱好者、旅行者以及需要精确地理信息的...

    经纬度计算距离,经纬度计算距离公式,matlab

    在压缩包文件"经纬度计算距离"中,可能包含MATLAB代码文件和GUI界面设计文件,用户可以直接运行该程序进行距离计算,而无需了解背后的数学公式或编程细节。 总的来说,利用经纬度计算距离是地理定位中的重要技术,...

    两点经纬度计算距离.xlsx

    已知两点经纬度,自动计算距离。在表格分别输入两点的经度、纬度,即可计算出这两个点之间的距离长度。已知两点经纬度,自动计算距离。在表格分别输入两点的经度、纬度,即可计算出这两个点之间的距离长度。

    计算两点之间距离java

    java利用两点经纬度计算两点之间的距离java利用两点经纬度计算两点之间的距离java利用两点经纬度计算两点之间的距离java利用两点经纬度计算两点之间的距离java利用两点经纬度计算两点之间的距离

    sqlserver根据经纬度计算两点间距离

    sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离

    java 根据两点经纬度得到距离

    根据两点经纬度得到距离

    WGS84计算两点经纬度距离

    地球不是一个完美的球体,而是一个椭球体,因此在计算距离时,我们需要考虑这种几何特性。WGS84椭球体的参数为:平均半径约为6378137米,扁平率为1/298.257223563。 计算两个经纬度点之间的距离通常使用的是...

    通过两点的经纬度信息计算距离及相对方位角(正北角)

    在这里,我们将深入探讨如何根据两点的经纬度信息计算距离和真北角。 首先,我们来理解经纬度的基本概念。地球被假想地分为360度的经线和纬线网络,经线是从本初子午线(0°经线)向东西两侧延伸的半圆,而纬线是与...

    根据经纬度距离和方位角计算新的经纬度

    根据经纬度距离和方位角计算新的经纬度,计算经纬度两点间距离

Global site tag (gtag.js) - Google Analytics