以下代码实现了Java中的经纬度转换,包括将十进制度表示的经纬度转换为度分秒表示和将度分秒表示的经纬度转换为十进制度表示。
其中,decimalDegreeToDMS 方法接受一个十进制度表示的经纬度,返回一个度分秒表示的字符串。该方法可用于将坐标点的经纬度信息显示在地图上。
例如,Google Earth、百度地图等地图服务平台都采用了度分秒表示的经纬度。 DMSToDecimalDegree 方法接受一个度分秒表示的经纬度字符串,返回一个十进制度表示的经纬度。该方法可用于将GPS设备获取的经纬度信息转换为可用于地图上的坐标信息。
例如,我们可以使用该方法将GPS设备获取的经纬度信息转换为百度地图上的坐标点信息。 在实际应用中,经纬度转换是非常常见的需求。
例如,在地图应用中,需要将用户输入的经纬度信息转换为可用于地图上的坐标点信息;在航空、航海等领域,需要将地球表面上的坐标点转换为航线信息等。因此,经纬度转换的实现方法对于很多应用来说是非常重要的。
以下是Java中的经纬度转换代码,包括将经纬度转换为度分秒表示和将度分秒表示转换为十进制度表示:
public class CoordinateConverter { /** * 将十进制度表示的经纬度转换为度分秒表示 * @param decimalDegree 十进制度表示的经纬度 * @return 度分秒表示的经纬度 */ public static String decimalDegreeToDMS(double decimalDegree) { int degree = (int) decimalDegree; double temp = (decimalDegree - degree) * 60; int minute = (int) temp; double second = (temp - minute) * 60; return degree + "°" + minute + "′" + String.format("%.2f", second) + "″"; } /** * 将度分秒表示的经纬度转换为十进制度表示 * @param dms 度分秒表示的经纬度 * @return 十进制度表示的经纬度 */ public static double DMSToDecimalDegree(String dms) { String[] parts = dms.split("[^\\d.]+"); double degree = Double.parseDouble(parts[0]); double minute = Double.parseDouble(parts[1]); double second = Double.parseDouble(parts[2]); double decimalDegree = degree + minute / 60 + second / 3600; return decimalDegree; } }
其中,decimalDegreeToDMS 方法接受一个十进制度表示的经纬度,返回一个度分秒表示的字符串。该方法首先将十进制度的整数部分作为度数,然后将小数部分乘以60作为分钟数,再将小数部分的小数部分乘以60作为秒数。
最后将度、分、秒拼接成字符串返回。 DMSToDecimalDegree 方法接受一个度分秒表示的经纬度字符串,返回一个十进制度表示的经纬度。该方法首先使用正则表达式将字符串中的数字提取出来,然后将度、分、秒转换为小数,最后将它们加起来得到十进制度表示的经纬度。
评论