Facebook
From Insensitive Pig, 9 Years ago, written in Matlab M-file.
Embed
Download Paste or View Raw
Hits: 714
  1. p_elipsoidy_GRS80;
  2.  
  3. %dane
  4. %punkt C
  5. a_fi_d = 53;
  6. a_fi_m = 38;
  7. a_fi_s = 0;
  8.  
  9. a_la_d = 21;
  10. a_la_m = 22;
  11. a_la_s = 0;
  12.  
  13. %punkt D
  14. b_fi_d = 53;
  15. b_fi_m = 21;
  16. b_fi_s = 51.9190;
  17.  
  18. b_la_d = 21;
  19. b_la_m = 9;
  20. b_la_s = 25.8088;
  21.  
  22. %obliczenia dla 1992
  23. %zamiana na radiany
  24. a_fi = stopnie_d_to_rad(stopnie_to_stopnie_d( a_fi_d, a_fi_m, a_fi_s ));
  25. a_la = stopnie_d_to_rad(stopnie_to_stopnie_d( a_la_d, a_la_m, a_la_s ));
  26.  
  27. b_fi = stopnie_d_to_rad(stopnie_to_stopnie_d( b_fi_d, b_fi_m, b_fi_s ));
  28. b_la = stopnie_d_to_rad(stopnie_to_stopnie_d( b_la_d, b_la_m, b_la_s ));
  29.  
  30. %wyznaczenie poludnika strefowego dla ukladu 1992
  31. L_0 = 19;
  32. L_0 = stopnie_d_to_rad(L_0);
  33.  
  34. %wyznaczenie wsp na płaszczyznie gaussa
  35. [a_x_gk,a_y_gk] = bl_gk(a_fi,a_la,L_0,a,e2);
  36. [b_x_gk,b_y_gk] = bl_gk(b_fi,b_la,L_0,a,e2);
  37.  
  38. %zamiana na wspołrzędne w układzie 1992
  39. [a_x_1992, a_y_1992] = cechowanie_1992(a_x_gk, a_y_gk);
  40. [b_x_1992, b_y_1992] = cechowanie_1992(b_x_gk, b_y_gk);
  41.  
  42. %obliczenie odwrotne
  43. [a_x_gk_test, a_y_gk_test] = odcechowanie_1992(a_x_1992, a_y_1992);
  44. [b_x_gk_test, b_y_gk_test] = odcechowanie_1992(b_x_1992, b_y_1992);
  45.  
  46. [a_fi_test, a_la_test] = gk_bl(a_x_gk_test, a_y_gk_test, L_0, a, e2);
  47. [b_fi_test, b_la_test] = gk_bl(b_x_gk_test, b_y_gk_test, L_0, a, e2);
  48.  
  49. %zamiana na stopnie
  50. [a_fi_d_test, a_fi_m_test, a_fi_s_test] = rad_to_degres(a_fi_test);
  51. [a_la_d_test, a_la_m_test, a_la_s_test] = rad_to_degres(a_la_test);
  52.  
  53. [b_fi_d_test, b_fi_m_test, b_fi_s_test] = rad_to_degres(b_fi_test);
  54. [b_la_d_test, b_la_m_test, b_la_s_test] = rad_to_degres(b_la_test);
  55.  
  56. %raport po 1992
  57. disp([' ']);
  58. disp(['________________________________________________________________________________']);
  59. disp(['Raport obliczeniowy programu GeoKał produkcji Kałowego Softwaru. /Michał Kałuski']);
  60. disp(['Układy GK - przeliczenie współrzędnych geodezyjnych na prostokątne w układzie PUWG1992 oraz PUWG2000']);
  61.  
  62. disp([' ']);
  63. disp(['Zadanie 1']);
  64.  
  65. disp([' ']);
  66. disp(['Dane wejściowe:']);
  67.  
  68. disp(['c_fi = ',num2str(a_fi_d), ' d ' , num2str(a_fi_m), ' m ', num2str(a_fi_s, 8), ' s']);
  69. disp(['c_la = ',num2str(a_la_d), ' d ' , num2str(a_la_m), ' m ', num2str(a_la_s, 8), ' s']);
  70. disp([' ']);
  71. disp(['d_fi = ',num2str(b_fi_d), ' d ' , num2str(b_fi_m), ' m ', num2str(b_fi_s, 8), ' s']);
  72. disp(['d_la = ',num2str(b_la_d), ' d ' , num2str(b_la_m), ' m ', num2str(b_la_s, 8), ' s']);
  73.  
  74. disp([' ']);
  75. disp(['Wyniki 1992:']);
  76.  
  77. disp(['c_x_gk = ',num2str(a_x_gk),]);
  78. disp(['c_y_gk = ',num2str(a_y_gk),]);
  79. disp([' ']);
  80. disp(['d_x_gk = ',num2str(b_x_gk),]);
  81. disp(['d_y_gk = ',num2str(b_y_gk),]);
  82. disp([' ']);
  83.  
  84. disp(['c_x_1992 = ',num2str(a_x_1992),]);
  85. disp(['c_y_1992 = ',num2str(a_y_1992),]);
  86. disp([' ']);
  87. disp(['d_x_1992 = ',num2str(b_x_1992),]);
  88. disp(['d_y_1992 = ',num2str(b_y_1992),]);
  89.  
  90. disp([' ']);
  91. disp(['Kontrola:']);
  92. disp(['c_fi_odwrotne = ',num2str(a_fi_d_test), ' d ' , num2str(a_fi_m_test), ' m ', num2str(a_fi_s_test, 8), ' s']);
  93. disp(['c_la_odwrotne = ',num2str(a_la_d_test), ' d ' , num2str(a_la_m_test), ' m ', num2str(a_la_s_test, 8), ' s']);
  94. disp([' ']);
  95. disp(['d_fi_odwrotne = ',num2str(b_fi_d_test), ' d ' , num2str(b_fi_m_test), ' m ', num2str(b_fi_s_test, 8), ' s']);
  96. disp(['d_la_odwrotne = ',num2str(b_la_d_test), ' d ' , num2str(b_la_m_test), ' m ', num2str(b_la_s_test, 8), ' s']);
  97.  
  98.  
  99. disp([' ']);
  100.  
  101. %obliczenia dla 2000
  102. %poludnik zerowy musi byc w stopniach dziesietnych zeby zadzialal IF
  103. a_la_dz = rad_to_stopnie_d(a_la);
  104. b_la_dz = rad_to_stopnie_d(b_la);
  105.  
  106. %wyznaczenie południka osiowego i numeru strefy
  107. [ a_nr_strefy, a_L_0 ] = poszukiwanie_strefy_2000( a_la_dz );
  108. [ b_nr_strefy, b_L_0 ] = poszukiwanie_strefy_2000( b_la_dz );
  109.  
  110. % do dalszych funkcji potrzebujemy juz poludnika zerowego ale w radianach
  111. a_L_0_d = a_L_0;
  112. b_L_0_d = b_L_0;
  113. a_L_0 = stopnie_d_to_rad(a_L_0);
  114. b_L_0 = stopnie_d_to_rad(b_L_0);
  115.  
  116. %wyznaczenie wsp na plaszczyznie gaussa
  117. [a_x_gk,a_y_gk] = bl_gk(a_fi,a_la,a_L_0,a,e2);
  118. [b_x_gk,b_y_gk] = bl_gk(b_fi,b_la,b_L_0,a,e2);
  119.  
  120. %zamiana na wspołrzędne w układzie 2000
  121. [a_x_2000, a_y_2000] = cechowanie_2000(a_x_gk, a_y_gk, a_nr_strefy);
  122. [b_x_2000, b_y_2000] = cechowanie_2000(b_x_gk, b_y_gk, b_nr_strefy);
  123.  
  124. %obliczenie odwrotne
  125. [ a_x_gk_test, a_y_gk_test ] = odcechowanie_2000( a_x_2000, a_y_2000, a_nr_strefy );
  126. [ b_x_gk_test, b_y_gk_test ] = odcechowanie_2000( b_x_2000, b_y_2000, b_nr_strefy );
  127.  
  128. [a_fi_test, a_la_test] = gk_bl(a_x_gk_test, a_y_gk_test, a_L_0, a, e2);
  129. [b_fi_test, b_la_test] = gk_bl(b_x_gk_test, b_y_gk_test, b_L_0, a, e2);
  130.  
  131. %zamiana na stopnie
  132. [a_fi_d_test, a_fi_m_test, a_fi_s_test] = rad_to_degres(a_fi_test);
  133. [a_la_d_test, a_la_m_test, a_la_s_test] = rad_to_degres(a_la_test);
  134.  
  135. [b_fi_d_test, b_fi_m_test, b_fi_s_test] = rad_to_degres(b_fi_test);
  136. [b_la_d_test, b_la_m_test, b_la_s_test] = rad_to_degres(b_la_test);
  137.  
  138. %raport po 2000
  139. disp(['Wyniki 2000:']);
  140.  
  141. disp(['poludnik osiowy punktu C = ',num2str(a_L_0_d), ' d']);
  142. disp(['numer strefy punktu C = ',num2str(b_nr_strefy)]);
  143. disp([' ']);
  144. disp(['poludnik osiowy punktu D = ',num2str(b_L_0_d), ' d']);
  145. disp(['numer strefy punktu D = ',num2str(a_nr_strefy)]);
  146. disp([' ']);
  147.  
  148. disp(['c_x_gk = ',num2str(a_x_gk),]);
  149. disp(['c_y_gk = ',num2str(a_y_gk),]);
  150. disp([' ']);
  151. disp(['d_x_gk = ',num2str(b_x_gk),]);
  152. disp(['d_y_gk = ',num2str(b_y_gk),]);
  153. disp([' ']);
  154.  
  155. disp(['c_x_2000 = ',num2str(a_x_2000),]);
  156. disp(['c_y_2000 = ',num2str(a_y_2000),]);
  157. disp([' ']);
  158. disp(['d_x_2000 = ',num2str(b_x_2000),]);
  159. disp(['d_y_2000 = ',num2str(b_y_2000),]);
  160.  
  161. disp([' ']);
  162. disp(['Kontrola:']);
  163. disp(['c_fi_odwrotne = ',num2str(a_fi_d_test), ' d ' , num2str(a_fi_m_test), ' m ', num2str(a_fi_s_test, 8), ' s']);
  164. disp(['c_la_odwrotne = ',num2str(a_la_d_test), ' d ' , num2str(a_la_m_test), ' m ', num2str(a_la_s_test, 8), ' s']);
  165. disp([' ']);
  166. disp(['d_fi_odwrotne = ',num2str(b_fi_d_test), ' d ' , num2str(b_fi_m_test), ' m ', num2str(b_fi_s_test, 8), ' s']);
  167. disp(['d_la_odwrotne = ',num2str(b_la_d_test), ' d ' , num2str(b_la_m_test), ' m ', num2str(b_la_s_test, 8), ' s']);
  168.  
  169. %zadanie 2
  170. %wyznaczenie sasiedniego pasa odwzorowawczego
  171. if b_nr_strefy == 5
  172.     b_nr_strefy_sasiedni = 6;
  173. elseif a_nr_strefy == 8
  174.     b_nr_strefy_sasiedni = 7;
  175. else
  176.     b_nr_strefy_sasiedni = b_nr_strefy + 1;
  177. end;
  178.  
  179. if b_nr_strefy_sasiedni == 5
  180.     b_L_0 = 15;
  181. elseif b_nr_strefy_sasiedni == 6
  182.     b_L_0 = 18;
  183. elseif b_nr_strefy_sasiedni == 7
  184.     b_L_0 = 21;
  185. elseif b_nr_strefy_sasiedni == 8
  186.     b_L_0 = 24;
  187. end;
  188.  
  189. b_L_0_d = b_L_0;
  190. b_L_0 = stopnie_d_to_rad(b_L_0);
  191.  
  192. %wyznaczenie wsp na plaszczyznie gaussa
  193. [b_x_gk,b_y_gk] = bl_gk(b_fi,b_la,b_L_0,a,e2);
  194.  
  195. %zamiana na wspołrzędne w układzie 2000
  196. [b_x_2000, b_y_2000] = cechowanie_2000(b_x_gk, b_y_gk, b_nr_strefy_sasiedni);
  197.  
  198. %raport końcowy
  199. disp([' ']);
  200. disp(['Zadanie 2']);
  201. disp([' ']);
  202.  
  203. disp(['Wyniki:']);
  204. disp(['nowy południk osiowy = ', num2str(b_L_0_d)]);
  205. disp(['nowa strefa = ', num2str(b_nr_strefy_sasiedni)]);
  206. disp(['d_x_2000 w pasie sasiednim = ',num2str(b_x_2000),]);
  207. disp(['d_y_2000 w pasie sasiednim = ',num2str(b_y_2000),]);
  208. disp([' ']);
  209. disp(['Współrzędne w układzie 1992 z oczywistych względów są takie same jak w Zadaniu 1']);
  210.  
  211. disp([' ']);
  212. disp(['________________________________________________________________________________']);
  213.