All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.clickntap.utils.GeoUtils Maven / Gradle / Ivy

There is a newer version: 1.30
Show newest version
package com.clickntap.utils;

public class GeoUtils {

	public static void main(String args[]) {
		System.out.println(GeoUtils.toDecimalLat(-10.633889));
		System.out.println(GeoUtils.toFloat(GeoUtils.toDecimalLat(-10.633889)));
		System.out.println(GeoUtils.toDecimalLat(10.633889));
		System.out.println(GeoUtils.toFloat(GeoUtils.toDecimalLat(10.633889)));
		System.out.println(GeoUtils.toDecimalLng(-10.633889));
		System.out.println(GeoUtils.toFloat(GeoUtils.toDecimalLng(-10.633889)));
		System.out.println(GeoUtils.toDecimalLng(10.633889));
		System.out.println(GeoUtils.toFloat(GeoUtils.toDecimalLng(10.633889)));

	}

	public static Float toFloat(String decimal) {
		try {
			try {
				return Float.parseFloat(decimal);
			} catch (Exception e) {
				int i = 0;
				decimal = decimal.trim().toLowerCase();
				while ((Character.isDigit(decimal.charAt(i)) || decimal.charAt(i) == '.' || decimal.charAt(i) == '-') && i < decimal.length()) {
					i++;
				}
				Number n1 = Float.parseFloat(decimal.substring(0, i));
				int j;
				while (!Character.isDigit(decimal.charAt(i)) && i < decimal.length()) {
					i++;
				}
				j = i;
				while ((Character.isDigit(decimal.charAt(i)) || decimal.charAt(i) == '.' || decimal.charAt(i) == '-') && i < decimal.length()) {
					i++;
				}
				Number n2 = Float.parseFloat(decimal.substring(j, i));
				while (!Character.isDigit(decimal.charAt(i)) && i < decimal.length()) {
					i++;
				}
				j = i;
				while ((Character.isDigit(decimal.charAt(i)) || decimal.charAt(i) == '.' || decimal.charAt(i) == '-') && i < decimal.length()) {
					i++;
				}
				Number n3 = Float.parseFloat(decimal.substring(j, i));
				if (decimal.substring(i).equalsIgnoreCase("s") || decimal.substring(i).equalsIgnoreCase("w"))
					return -(n1.intValue() + n2.floatValue() / 60 + n3.floatValue() / 3600);
				else
					return (n1.intValue() + n2.floatValue() / 60 + n3.floatValue() / 3600);
			}
		} catch (Exception e) {
			return null;
		}
	}

	public static String toDecimalLat(Number n) {
		int deg = n.intValue();
		int min = (int) ((n.floatValue() - deg) * 60);
		int sec = (int) ((n.floatValue() - deg) * 3.6);
		return Math.abs(deg) + "° " + Math.abs(min) + "' " + Math.abs(sec) + "" + ((n.intValue() < 0) ? "S" : "N");
	}

	public static String toDecimalLng(Number n) {
		int deg = n.intValue();
		int min = (int) ((n.floatValue() - deg) * 60);
		int sec = (int) ((n.floatValue() - deg) * 3.6);
		return Math.abs(deg) + "° " + Math.abs(min) + "' " + Math.abs(sec) + "" + ((n.intValue() < 0) ? "W" : "E");
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy