概述
经纬度在地图应用中常见,一般结合路网信息库,进行地图应用开发(流量、路况等),此次从理计算两点经纬度的直线距及最短运行时间预研,实现下述表达式:
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(); } } }
相关推荐
java根据两点的经纬度计算直线距离,以及百度地图、高德地图、谷歌地图不同调用方法
Java计算两个经纬度点之间距离(以米为单位)算法, 纯Java代码, 可供参考。 在具体项目中使用过。
java计算两个经纬度之间的距离,并且按照由近及远的距离排序
通过两个经纬度计算两个经纬度之间的距离,误差在2-5米,通过高德地图测试通过
通过两点经纬度,计算他们之间的距离 - JAVA
1、已知两点经纬度求距离方位角 2、已知一点经纬度、距离、方位角求另一点经纬度。 java源码。本人手敲,亲测简单实用。可用于百度地图、Google地图开发,误差极小基本可忽略。
两点之间计算距离的小工具,对求两点之间的距离很有帮助,希望对您有用
WGS84 计算两点经纬度距离的程序,欢迎下载
通过经纬度算出两点间的距离,经过仔细对比及参照,相对精确度较高,请大家放心使用
计算两个经纬度距离.java
已知两点经纬度,自动计算距离。在表格分别输入两点的经度、纬度,即可计算出这两个点之间的距离长度。已知两点经纬度,自动计算距离。在表格分别输入两点的经度、纬度,即可计算出这两个点之间的距离长度。
java利用两点经纬度计算两点之间的距离java利用两点经纬度计算两点之间的距离java利用两点经纬度计算两点之间的距离java利用两点经纬度计算两点之间的距离java利用两点经纬度计算两点之间的距离
根据两点经纬度得到距离
记录下 java jts 求两个空间几何图形间最短距离,及最短距离间的两个坐标. 如:求一个点到一条直线的垂直坐标
sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离
电子-根据两点经纬度计算距离.doc,单片机/嵌入式STM32-F0/F1/F2
根据经纬度距离和方位角计算新的经纬度,计算经纬度两点间距离
Java 计算两个GPS坐标点之间的距离 JAVA 计算两个经纬度关系计算 - FALCON - 斑驳的蓝调 1. Lat1 Lung1 表示A点经纬度,Lat2 Lung2 表示B点经纬度; 2. a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung2 为两点经度...
根据经纬度计算地球上任意两点间的距离,精度高,GUI界面操作简单,小白可直接使用。
新人报道,因为测试的时候拿到数据库的经纬度计算不方便,就自己写了个计算的软件,方便测试人员使用