Advertisement
Guest User

Untitled

a guest
Apr 30th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.28 KB | None | 0 0
  1. using System;
  2.  
  3. namespace APIforEOSDIS
  4. {
  5. /*
  6. Структура, котрая будет хранить координаты
  7. левой нижней (left lower - ll) и правой верхней (right upper - ru) точек прямоугольника,
  8. который используется в WorldviewLNK.DataforQuery для построения запроса.
  9. */
  10.  
  11. public struct RectArea
  12. {
  13. private double x_ll, y_ll, x_ru, y_ru;
  14. private bool x_ll_sig, y_ll_sig, x_ru_sig, y_ru_sig;
  15.  
  16. static private bool IsInRange(double val)
  17. {
  18. if (Math.Abs(val) >= 0 && Math.Abs(val) <= 790)
  19. return true;
  20. return false;
  21. }
  22.  
  23. static private void SetVal(double val, out double num, out bool sig)
  24. {
  25. if (!IsInRange(val))
  26. {
  27. sig = false;
  28. num = 0;
  29. return;
  30. }
  31.  
  32. sig = (val >= 0) ? false : true;
  33. num = Math.Abs(val);
  34. }
  35.  
  36. static private bool IsValid(string val)
  37. {
  38. if (val == "")
  39. return false;
  40.  
  41. bool WasPoint = false;
  42.  
  43. for (int i = 0; i < val.Length - 1; i++)
  44. {
  45. if ((val[i] == '.') && (i != 0) && !WasPoint)
  46. WasPoint = true;
  47. else if (val[i] < '0' || val[i] > '9')
  48. return false;
  49. }
  50.  
  51. byte last_val_ind = (byte)(val.Length - 1);
  52.  
  53. if (!((val[last_val_ind] == 'n' || val[last_val_ind] == 's' || val[last_val_ind] == 'w' || val[last_val_ind] == 'e')
  54. || (val[last_val_ind] == 'N' || val[last_val_ind] == 'S' || val[last_val_ind] == 'W' || val[last_val_ind] == 'E'))
  55. || (val[last_val_ind - 1] < '0' || val[last_val_ind - 1] > '9'))
  56. return false;
  57.  
  58. return true;
  59. }
  60.  
  61. static private void SetVal(string val, out double num, out bool sig)
  62. {
  63. if (IsValid(val))
  64. {
  65. byte last_val_ind = (byte)(val.Length - 1);
  66.  
  67. sig = (val[last_val_ind] == 'w' || val[last_val_ind] == 'W'
  68. || val[last_val_ind] == 's' || val[last_val_ind] == 'S') ?
  69. true : false;
  70.  
  71. val = val.Remove(last_val_ind);
  72. num = Math.Abs(Convert.ToDouble(val));
  73. return;
  74. }
  75.  
  76. sig = false;
  77. num = 0;
  78. }
  79.  
  80. public double X_ll
  81. {
  82. get { return (x_ll_sig) ? -this.x_ll : this.x_ll; }
  83. set { SetVal(value, out x_ll, out x_ll_sig); }
  84. }
  85.  
  86. public double Y_ll
  87. {
  88. get { return (y_ll_sig) ? -this.y_ll : this.y_ll; }
  89. set { SetVal(value, out y_ll, out y_ll_sig); }
  90. }
  91.  
  92. public double X_ru
  93. {
  94. get { return (x_ru_sig) ? -this.x_ru : this.x_ru; }
  95. set { SetVal(value, out x_ru, out x_ru_sig); }
  96. }
  97.  
  98. public double Y_ru
  99. {
  100. get { return (y_ru_sig) ? -this.y_ru : this.y_ru; }
  101. set { SetVal(value, out y_ru, out y_ru_sig); }
  102. }
  103.  
  104. public RectArea(double x_ll_val, double y_ll_val, double x_ru_val, double y_ru_val)
  105. {
  106. SetVal(x_ll_val, out x_ll, out x_ll_sig);
  107. SetVal(y_ll_val, out y_ll, out y_ll_sig);
  108. SetVal(x_ru_val, out x_ru, out x_ru_sig);
  109. SetVal(y_ru_val, out y_ru, out y_ru_sig);
  110. }
  111.  
  112. public RectArea(string x_ll_val, string y_ll_val, string x_ru_val, string y_ru_val)
  113. {
  114. SetVal(x_ll_val, out x_ll, out x_ll_sig);
  115. SetVal(y_ll_val, out y_ll, out y_ll_sig);
  116. SetVal(x_ru_val, out x_ru, out x_ru_sig);
  117. SetVal(y_ru_val, out y_ru, out y_ru_sig);
  118. }
  119.  
  120. public void InitializeCoord(double x_ll_val, double y_ll_val, double x_ru_val, double y_ru_val)
  121. {
  122. this = new RectArea(x_ll_val, y_ll_val, x_ru_val, y_ru_val);
  123. }
  124.  
  125. public void InitializeCoord(string x_ll_val, string y_ll_val, string x_ru_val, string y_ru_val)
  126. {
  127. this = new RectArea(x_ll_val, y_ll_val, x_ru_val, y_ru_val);
  128. }
  129.  
  130. public override string ToString()
  131. {
  132. return X_ll.ToString() + "," + Y_ll + "," + Y_ru + "," + X_ru;
  133. }
  134. }
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement