1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
#!/usr/bin/env python3 """ ======== Overview ======== Python3 library of loop closure check functions for LiCSBAS. ========= Changelog ========= v1.5.2 20210303 Yu Morishita, GSI - Use get_cmap in make_loop_png - Add colorbar in make_loop_png v1.5.1 20201119 Yu Morishita, GSI - Change default cmap for wrapped phase from insar to SCM.romaO v1.5 20201006 Yu Morishita, GSI - Update make_loop_png v1.4 20200828 Yu Morishita, GSI - Update for matplotlib >= 3.3 - Use nearest interpolation for insar cmap to avoid aliasing v1.3 20200703 Yu Morioshita, GSI - Replace problematic terms v1.2 20200224 Yu Morioshita, Uni of Leeds and GSI - Change color of loop phase v1.1 20190906 Yu Morioshita, Uni of Leeds and GSI - tight_layout for loop png v1.0 20190708 Yu Morioshita, Uni of Leeds and GSI - Original implementation """ import os import numpy as np import LiCSBAS_io_lib as io_lib import LiCSBAS_tools_lib as tools_lib os.environ['QT_QPA_PLATFORM']='offscreen' import warnings import matplotlib as mpl with warnings.catch_warnings(): ## To silence user warning warnings.simplefilter('ignore', UserWarning) mpl.use('Agg') from matplotlib import pyplot as plt #%% def make_loop_matrix(ifgdates): """ Make loop matrix (containing 1, -1, 0) from ifgdates. Inputs: ifgdates : Unwrapped phase vector at a point without nan (n_ifg) Returns: Aloop : Loop matrix with 1 for ifg12/ifg23 and -1 for ifg13 (n_loop, n_ifg) """ n_ifg = len(ifgdates) Aloop = [] for ix_ifg12, ifgd12 in enumerate(ifgdates): primary12 = ifgd12[0:8] secondary12 = ifgd12[9:17] ifgdates23 = [ ifgd for ifgd in ifgdates if ifgd.startswith(secondary12)] # all candidates of ifg23 for ifgd23 in ifgdates23: # for each candidate of ifg23 secondary23 = ifgd23[9:17] try: ## Search ifg13 ix_ifg13 = ifgdates.index(primary12+'_'+secondary23) except: # no loop for this ifg23. Next. continue ## Loop found ix_ifg23 = ifgdates.index(ifgd23) Aline = [0]*n_ifg Aline[ix_ifg12] = 1 Aline[ix_ifg23] = 1 Aline[ix_ifg13] = -1 Aloop.append(Aline) Aloop = np.array(Aloop) return Aloop #%% def read_unw_loop_ph(Aloop1, ifgdates, ifgdir, length, width, bad_ifg=[]): ### Find index of ifg ix_ifg12, ix_ifg23 = np.where(Aloop1 == 1)[0] ix_ifg13 = np.where(Aloop1 == -1)[0][0] ifgd12 = ifgdates[ix_ifg12] ifgd23 = ifgdates[ix_ifg23] ifgd13 = ifgdates[ix_ifg13] ### Read unw data unw12file = os.path.join(ifgdir, ifgd12, ifgd12+'.unw') unw12 = io_lib.read_img(unw12file, length, width) unw12[unw12 == 0] = np.nan # Fill 0 with nan unw23file = os.path.join(ifgdir, ifgd23, ifgd23+'.unw') unw23 = io_lib.read_img(unw23file, length, width) unw23[unw23 == 0] = np.nan # Fill 0 with nan unw13file = os.path.join(ifgdir, ifgd13, ifgd13+'.unw') unw13 = io_lib.read_img(unw13file, length, width) unw13[unw13 == 0] = np.nan # Fill 0 with n return unw12, unw23, unw13, ifgd12, ifgd23, ifgd13 #%% def identify_bad_ifg(bad_ifg_cand, good_ifg): ### Identify bad ifgs and output text good_ifg = list(set(good_ifg)) good_ifg.sort() bad_ifg_cand = list(set(bad_ifg_cand)) bad_ifg_cand.sort() bad_ifg = list(set(bad_ifg_cand)-set(good_ifg)) # difference bad_ifg.sort() return bad_ifg #%% def make_loop_png(unw12, unw23, unw13, loop_ph, png, titles4, cycle): #cmap_wrap = tools_lib.get_cmap('SCM.romaO') #cmap_loop = tools_lib.get_cmap('SCM.vik') cmap_wrap = tools_lib.get_cmap('cmc.romaO') cmap_loop = tools_lib.get_cmap('cmc.vik') ### Settings plt.rcParams['axes.titlesize'] = 10 data = [unw12, unw23, unw13] length, width = unw12.shape if length > width: figsize_y = 10 figsize_x = int((figsize_y-1)*width/length) if figsize_x < 5: figsize_x = 5 else: figsize_x = 10 figsize_y = int(figsize_x*length/width+1) if figsize_y < 3: figsize_y = 3 ### Plot fig = plt.figure(figsize = (figsize_x, figsize_y)) ## 3 ifgs for i in range(3): data_wrapped = np.angle(np.exp(1j*(data[i]/cycle))*cycle) ax = fig.add_subplot(2, 2, i+1) #index start from 1 im = ax.imshow(data_wrapped, vmin=-np.pi, vmax=+np.pi, cmap=cmap_wrap, interpolation='nearest') ax.set_title('{}'.format(titles4[i])) ax.set_xticklabels([]) ax.set_yticklabels([]) cax = plt.colorbar(im) cax.set_ticks([]) ## loop phase ax = fig.add_subplot(2, 2, 4) #index start from 1 im = ax.imshow(loop_ph, vmin=-np.pi, vmax=+np.pi, cmap=cmap_loop, interpolation='nearest') ax.set_title('{}'.format(titles4[3])) ax.set_xticklabels([]) ax.set_yticklabels([]) cax = plt.colorbar(im) plt.tight_layout() plt.savefig(png) plt.close()