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.189
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