/Prototipo/MemoriaUtils/src/memoria/utils/coordinate/LatZones.java

http://prototipomemoria.googlecode.com/ · Java · 123 lines · 97 code · 18 blank · 8 comment · 19 complexity · 3c4028c2ac97a97e500a5f4a5bf3f433 MD5 · raw file

  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. package memoria.utils.coordinate;
  6. /**
  7. *
  8. * @author diego
  9. */
  10. public class LatZones {
  11. private static char[] letters = { 'A', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K',
  12. 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Z' };
  13. private static int[] degrees = { -90, -84, -72, -64, -56, -48, -40, -32, -24, -16,
  14. -8, 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 84 };
  15. private static char[] negLetters = { 'A', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K',
  16. 'L', 'M' };
  17. private static int[] negDegrees = { -90, -84, -72, -64, -56, -48, -40, -32, -24,
  18. -16, -8 };
  19. private static char[] posLetters = { 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
  20. 'X', 'Z' };
  21. private static int[] posDegrees = { 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 84 };
  22. private static int arrayLength = 22;
  23. public LatZones()
  24. {
  25. }
  26. public static int getLatZoneDegree(String letter)
  27. {
  28. char ltr = letter.charAt(0);
  29. for (int i = 0; i < arrayLength; i++)
  30. {
  31. if (letters[i] == ltr)
  32. {
  33. return degrees[i];
  34. }
  35. }
  36. return -100;
  37. }
  38. public static String getLatZone(double latitude)
  39. {
  40. int latIndex = -2;
  41. int lat = (int) latitude;
  42. if (lat >= 0)
  43. {
  44. int len = posLetters.length;
  45. for (int i = 0; i < len; i++)
  46. {
  47. if (lat == posDegrees[i])
  48. {
  49. latIndex = i;
  50. break;
  51. }
  52. if (lat > posDegrees[i])
  53. {
  54. continue;
  55. }
  56. else
  57. {
  58. latIndex = i - 1;
  59. break;
  60. }
  61. }
  62. }
  63. else
  64. {
  65. int len = negLetters.length;
  66. for (int i = 0; i < len; i++)
  67. {
  68. if (lat == negDegrees[i])
  69. {
  70. latIndex = i;
  71. break;
  72. }
  73. if (lat < negDegrees[i])
  74. {
  75. latIndex = i - 1;
  76. break;
  77. }
  78. else
  79. {
  80. continue;
  81. }
  82. }
  83. }
  84. if (latIndex == -1)
  85. {
  86. latIndex = 0;
  87. }
  88. if (lat >= 0)
  89. {
  90. if (latIndex == -2)
  91. {
  92. latIndex = posLetters.length - 1;
  93. }
  94. return String.valueOf(posLetters[latIndex]);
  95. }
  96. else
  97. {
  98. if (latIndex == -2)
  99. {
  100. latIndex = negLetters.length - 1;
  101. }
  102. return String.valueOf(negLetters[latIndex]);
  103. }
  104. }
  105. }