AeroViz 0.1.7__tar.gz → 0.1.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of AeroViz might be problematic. Click here for more details.

Files changed (110) hide show
  1. aeroviz-0.1.8/AeroViz/data/240228_00.txt +101 -0
  2. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/__init__.py +1 -0
  3. aeroviz-0.1.8/AeroViz/plot/hysplit/__init__.py +1 -0
  4. aeroviz-0.1.8/AeroViz/plot/hysplit/hysplit.py +79 -0
  5. aeroviz-0.1.8/AeroViz/plot/optical/PyMieScatt_update.py +567 -0
  6. aeroviz-0.1.8/AeroViz/plot/optical/mie_theory.py +260 -0
  7. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/optical/optical.py +60 -59
  8. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/templates/diurnal_pattern.py +24 -7
  9. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/timeseries/template.py +2 -2
  10. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/timeseries/timeseries.py +47 -6
  11. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/__init__.py +3 -3
  12. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/core/__init__.py +77 -14
  13. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/AE33.py +11 -6
  14. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/AE43.py +10 -5
  15. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/Aurora.py +14 -10
  16. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/BC1054.py +10 -6
  17. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/EPA.py +3 -3
  18. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/GRIMM.py +1 -2
  19. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/MA350.py +12 -5
  20. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/Minion.py +9 -4
  21. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/NEPH.py +15 -5
  22. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/OCEC.py +39 -15
  23. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/TEOM.py +13 -9
  24. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/VOC.py +1 -1
  25. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz.egg-info/PKG-INFO +11 -9
  26. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz.egg-info/SOURCES.txt +8 -1
  27. {aeroviz-0.1.7 → aeroviz-0.1.8}/PKG-INFO +11 -9
  28. {aeroviz-0.1.7 → aeroviz-0.1.8}/README.md +10 -8
  29. {aeroviz-0.1.7 → aeroviz-0.1.8}/setup.py +1 -1
  30. aeroviz-0.1.8/test/test_aeroviz_imports.py +18 -0
  31. aeroviz-0.1.8/test/test_plot.py +132 -0
  32. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/__init__.py +0 -0
  33. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/data/DEFAULT_DATA.csv +0 -0
  34. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/data/DEFAULT_PNSD_DATA.csv +0 -0
  35. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Chemistry/__init__.py +0 -0
  36. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Chemistry/_calculate.py +0 -0
  37. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Chemistry/_isoropia.py +0 -0
  38. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Chemistry/_mass_volume.py +0 -0
  39. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Chemistry/_ocec.py +0 -0
  40. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Chemistry/_partition.py +0 -0
  41. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Chemistry/_teom.py +0 -0
  42. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Chemistry/isrpia.cnf +0 -0
  43. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Chemistry/isrpia2.exe +0 -0
  44. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Optical/Angstrom_exponent.py +0 -0
  45. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Optical/_IMPROVE.py +0 -0
  46. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Optical/__init__.py +0 -0
  47. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Optical/_absorption.py +0 -0
  48. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Optical/_extinction.py +0 -0
  49. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Optical/_mie.py +0 -0
  50. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Optical/_mie_sd.py +0 -0
  51. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Optical/_scattering.py +0 -0
  52. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/Optical/fRH.pkl +0 -0
  53. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/SizeDistr/__init__.py +0 -0
  54. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/SizeDistr/__merge.py +0 -0
  55. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/SizeDistr/_merge.py +0 -0
  56. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/SizeDistr/_merge_v1.py +0 -0
  57. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/SizeDistr/_merge_v2.py +0 -0
  58. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/SizeDistr/_merge_v3.py +0 -0
  59. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/SizeDistr/_merge_v4.py +0 -0
  60. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/SizeDistr/_size_distr.py +0 -0
  61. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/VOC/__init__.py +0 -0
  62. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/VOC/_potential_par.py +0 -0
  63. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/VOC/support_voc.json +0 -0
  64. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/__init__.py +0 -0
  65. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/dataProcess/core/__init__.py +0 -0
  66. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/bar.py +0 -0
  67. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/box.py +0 -0
  68. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/distribution/__init__.py +0 -0
  69. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/distribution/distribution.py +0 -0
  70. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/meteorology/__init__.py +0 -0
  71. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/meteorology/meteorology.py +0 -0
  72. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/optical/__init__.py +0 -0
  73. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/pie.py +0 -0
  74. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/radar.py +0 -0
  75. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/regression.py +0 -0
  76. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/scatter.py +0 -0
  77. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/templates/__init__.py +0 -0
  78. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/templates/ammonium_rich.py +0 -0
  79. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/templates/contour.py +0 -0
  80. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/templates/corr_matrix.py +0 -0
  81. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/templates/koschmieder.py +0 -0
  82. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/templates/metal_heatmap.py +0 -0
  83. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/timeseries/__init__.py +0 -0
  84. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/utils/__init__.py +0 -0
  85. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/utils/_color.py +0 -0
  86. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/utils/_unit.py +0 -0
  87. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/utils/fRH.json +0 -0
  88. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/utils/plt_utils.py +0 -0
  89. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/utils/sklearn_utils.py +0 -0
  90. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/utils/units.json +0 -0
  91. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/plot/violin.py +0 -0
  92. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/config/__init__.py +0 -0
  93. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/config/supported_instruments.py +0 -0
  94. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/APS_3321.py +0 -0
  95. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/IGAC.py +0 -0
  96. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/SMPS.py +0 -0
  97. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/XRF.py +0 -0
  98. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/rawDataReader/script/__init__.py +0 -0
  99. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/tools/__init__.py +0 -0
  100. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/tools/database.py +0 -0
  101. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/tools/dataclassifier.py +0 -0
  102. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/tools/dataprinter.py +0 -0
  103. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz/tools/datareader.py +0 -0
  104. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz.egg-info/dependency_links.txt +0 -0
  105. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz.egg-info/requires.txt +0 -0
  106. {aeroviz-0.1.7 → aeroviz-0.1.8}/AeroViz.egg-info/top_level.txt +0 -0
  107. {aeroviz-0.1.7 → aeroviz-0.1.8}/LICENSE +0 -0
  108. {aeroviz-0.1.7 → aeroviz-0.1.8}/MANIFEST.in +0 -0
  109. {aeroviz-0.1.7 → aeroviz-0.1.8}/requirements.txt +0 -0
  110. {aeroviz-0.1.7 → aeroviz-0.1.8}/setup.cfg +0 -0
@@ -0,0 +1,101 @@
1
+ 1 1
2
+ AWRF 24 1 25 0 0
3
+ 4 BACKWARD OMEGA
4
+ 24 2 27 16 22.630 120.346 10.0
5
+ 24 2 27 16 22.630 120.346 100.0
6
+ 24 2 27 16 22.630 120.346 500.0
7
+ 24 2 27 16 22.630 120.346 1000.0
8
+ 1 PRESSURE
9
+ 1 1 24 2 27 16 0 808 0.0 22.630 120.346 10.0 1018.1
10
+ 2 1 24 2 27 16 0 808 0.0 22.630 120.346 100.0 1007.1
11
+ 3 1 24 2 27 16 0 808 0.0 22.630 120.346 500.0 961.2
12
+ 4 1 24 2 27 16 0 808 0.0 22.630 120.346 1000.0 906.2
13
+ 1 1 24 2 27 15 0 807 -1.0 22.700 120.337 13.4 1016.4
14
+ 2 1 24 2 27 15 0 807 -1.0 22.779 120.325 115.8 1004.4
15
+ 3 1 24 2 27 15 0 807 -1.0 22.615 120.313 471.0 964.8
16
+ 4 1 24 2 27 15 0 807 -1.0 22.535 120.469 1035.2 902.9
17
+ 1 1 24 2 27 14 0 806 -2.0 22.795 120.323 24.3 1015.4
18
+ 2 1 24 2 27 14 0 806 -2.0 23.026 120.322 128.8 1001.6
19
+ 3 1 24 2 27 14 0 806 -2.0 22.606 120.315 471.5 964.7
20
+ 4 1 24 2 27 14 0 806 -2.0 22.484 120.626 1025.3 893.1
21
+ 1 1 24 2 27 13 0 805 -3.0 22.936 120.308 56.6 1010.4
22
+ 2 1 24 2 27 13 0 805 -3.0 23.275 120.355 142.2 1000.7
23
+ 3 1 24 2 27 13 0 805 -3.0 22.612 120.341 492.9 961.7
24
+ 4 1 24 2 27 13 0 805 -3.0 22.490 120.729 641.9 860.0
25
+ 1 1 24 2 27 12 0 804 -4.0 23.133 120.283 74.9 1010.2
26
+ 2 1 24 2 27 12 0 804 -4.0 23.491 120.413 187.7 994.2
27
+ 3 1 24 2 27 12 0 804 -4.0 22.670 120.382 482.0 960.7
28
+ 4 1 24 2 27 12 0 804 -4.0 22.538 120.774 830.3 801.8
29
+ 1 1 24 2 27 11 0 803 -5.0 23.363 120.276 94.7 1007.0
30
+ 2 1 24 2 27 11 0 803 -5.0 23.702 120.464 202.2 992.8
31
+ 3 1 24 2 27 11 0 803 -5.0 22.708 120.455 327.6 977.5
32
+ 4 1 24 2 27 11 0 803 -5.0 22.576 120.736 629.4 831.5
33
+ 1 1 24 2 27 10 0 802 -6.0 23.611 120.281 123.4 1003.6
34
+ 2 1 24 2 27 10 0 802 -6.0 23.924 120.507 235.0 988.9
35
+ 3 1 24 2 27 10 0 802 -6.0 22.691 120.521 95.4 1004.1
36
+ 4 1 24 2 27 10 0 802 -6.0 22.631 120.727 385.5 834.4
37
+ 1 1 24 2 27 9 0 801 -7.0 23.910 120.338 185.0 996.9
38
+ 2 1 24 2 27 9 0 801 -7.0 24.136 120.570 314.7 974.2
39
+ 3 1 24 2 27 9 0 801 -7.0 22.702 120.585 125.1 999.7
40
+ 4 1 24 2 27 9 0 801 -7.0 22.669 120.749 200.9 817.0
41
+ 1 1 24 2 27 8 0 800 -8.0 24.287 120.521 321.6 982.5
42
+ 2 1 24 2 27 8 0 800 -8.0 24.195 120.654 531.7 942.2
43
+ 3 1 24 2 27 8 0 800 -8.0 22.707 120.608 170.4 993.9
44
+ 4 1 24 2 27 8 0 800 -8.0 22.689 120.756 313.0 822.5
45
+ 1 1 24 2 27 7 0 799 -9.0 24.612 120.810 428.8 969.2
46
+ 2 1 24 2 27 7 0 799 -9.0 24.193 120.736 697.7 917.4
47
+ 3 1 24 2 27 7 0 799 -9.0 22.719 120.610 229.7 986.5
48
+ 4 1 24 2 27 7 0 799 -9.0 22.689 120.751 248.2 833.6
49
+ 1 1 24 2 27 6 0 798 -10.0 24.859 121.146 538.3 932.4
50
+ 2 1 24 2 27 6 0 798 -10.0 24.145 120.757 664.1 919.1
51
+ 3 1 24 2 27 6 0 798 -10.0 22.738 120.605 305.9 978.9
52
+ 4 1 24 2 27 6 0 798 -10.0 22.711 120.761 0.0 888.3
53
+ 1 1 24 2 27 5 0 797 -11.0 24.984 121.430 392.9 975.2
54
+ 2 1 24 2 27 5 0 797 -11.0 24.074 120.749 654.4 923.5
55
+ 3 1 24 2 27 5 0 797 -11.0 22.731 120.603 495.6 958.3
56
+ 4 1 24 2 27 5 0 797 -11.0 22.700 120.785 175.9 829.1
57
+ 1 1 24 2 27 4 0 796 -12.0 25.158 121.638 503.0 954.6
58
+ 2 1 24 2 27 4 0 796 -12.0 23.989 120.737 641.7 927.8
59
+ 3 1 24 2 27 4 0 796 -12.0 22.693 120.592 648.1 943.6
60
+ 4 1 24 2 27 4 0 796 -12.0 22.685 120.810 145.4 853.0
61
+ 1 1 24 2 27 3 0 795 -13.0 25.451 121.825 386.1 978.5
62
+ 2 1 24 2 27 3 0 795 -13.0 23.906 120.739 645.3 929.6
63
+ 3 1 24 2 27 3 0 795 -13.0 22.657 120.583 682.1 940.8
64
+ 4 1 24 2 27 3 0 795 -13.0 22.655 120.810 8.7 903.0
65
+ 1 1 24 2 27 2 0 794 -14.0 25.789 121.989 450.1 971.0
66
+ 2 1 24 2 27 2 0 794 -14.0 23.854 120.722 640.7 924.2
67
+ 3 1 24 2 27 2 0 794 -14.0 22.618 120.552 686.5 941.2
68
+ 4 1 24 2 27 2 0 794 -14.0 22.628 120.817 147.7 890.5
69
+ 1 1 24 2 27 1 0 793 -15.0 26.127 122.136 554.7 959.4
70
+ 2 1 24 2 27 1 0 793 -15.0 23.815 120.684 526.0 936.4
71
+ 3 1 24 2 27 1 0 793 -15.0 22.537 120.538 763.0 933.1
72
+ 4 1 24 2 27 1 0 793 -15.0 22.630 120.825 156.0 898.7
73
+ 1 1 24 2 27 0 0 792 -16.0 26.425 122.289 711.1 940.7
74
+ 2 1 24 2 27 0 0 792 -16.0 23.793 120.665 527.9 942.8
75
+ 3 1 24 2 27 0 0 792 -16.0 22.498 120.642 901.2 897.5
76
+ 4 1 24 2 27 0 0 792 -16.0 22.633 120.822 130.8 898.3
77
+ 1 1 24 2 26 23 0 791 -17.0 26.705 122.454 872.6 921.4
78
+ 2 1 24 2 26 23 0 791 -17.0 23.798 120.671 524.1 940.3
79
+ 3 1 24 2 26 23 0 791 -17.0 22.514 120.689 734.8 863.9
80
+ 4 1 24 2 26 23 0 791 -17.0 22.628 120.825 80.9 904.3
81
+ 2 1 24 2 26 22 0 790 -18.0 23.816 120.688 493.1 939.0
82
+ 3 1 24 2 26 22 0 790 -18.0 22.559 120.685 771.9 865.4
83
+ 4 1 24 2 26 22 0 790 -18.0 22.623 120.829 56.0 907.8
84
+ 2 1 24 2 26 21 0 789 -19.0 23.836 120.711 427.5 946.0
85
+ 3 1 24 2 26 21 0 789 -19.0 22.557 120.666 660.4 899.0
86
+ 4 1 24 2 26 21 0 789 -19.0 22.623 120.833 82.4 907.7
87
+ 2 1 24 2 26 20 0 788 -20.0 23.865 120.751 489.8 941.5
88
+ 3 1 24 2 26 20 0 788 -20.0 22.525 120.624 588.1 942.1
89
+ 4 1 24 2 26 20 0 788 -20.0 22.636 120.848 98.3 914.3
90
+ 2 1 24 2 26 19 0 787 -21.0 23.874 120.791 693.5 909.2
91
+ 3 1 24 2 26 19 0 787 -21.0 22.492 120.608 624.9 943.0
92
+ 4 1 24 2 26 19 0 787 -21.0 22.667 120.865 193.7 891.2
93
+ 2 1 24 2 26 18 0 786 -22.0 23.874 120.793 743.4 902.1
94
+ 3 1 24 2 26 18 0 786 -22.0 22.482 120.601 703.4 938.1
95
+ 4 1 24 2 26 18 0 786 -22.0 22.747 120.984 287.0 906.5
96
+ 2 1 24 2 26 17 0 785 -23.0 23.885 120.793 766.4 902.4
97
+ 3 1 24 2 26 17 0 785 -23.0 22.471 120.582 842.0 922.5
98
+ 4 1 24 2 26 17 0 785 -23.0 22.867 121.070 462.0 920.8
99
+ 2 1 24 2 26 16 0 784 -24.0 23.895 120.778 859.2 898.6
100
+ 3 1 24 2 26 16 0 784 -24.0 22.446 120.618 1090.1 893.0
101
+ 4 1 24 2 26 16 0 784 -24.0 22.973 121.135 790.6 906.9
@@ -3,6 +3,7 @@ from . import meteorology
3
3
  from . import optical
4
4
  from .bar import bar
5
5
  from .box import box
6
+ from .hysplit import hysplit
6
7
  from .pie import pie, donuts
7
8
  from .radar import radar
8
9
  from .regression import linear_regression, multiple_linear_regression
@@ -0,0 +1 @@
1
+ from .hysplit import *
@@ -0,0 +1,79 @@
1
+ from pathlib import Path
2
+
3
+ import cartopy.crs as ccrs
4
+ import cartopy.feature as cfeature
5
+ import matplotlib.pyplot as plt
6
+ import pandas as pd
7
+
8
+ from AeroViz.plot.utils import set_figure
9
+
10
+ # TODO: Hybrid Single-Particle Lagrangian Integrated Trajectory (HYSPLIT) model
11
+
12
+
13
+ __all__ = ['hysplit']
14
+
15
+
16
+ def read_hysplit_data(file: Path):
17
+ data = pd.read_csv(file, skiprows=8, sep=r'\s+', names=range(0, 12), engine='python')
18
+ data = data.reset_index(drop=False)
19
+ data.columns = ['category', 'name', 'abc', 'year', 'month', 'hour', 'min', 'cont', 'backward', 'lat', 'lon',
20
+ 'height', 'pressure']
21
+
22
+ return data
23
+
24
+
25
+ @set_figure
26
+ def hysplit(file: Path):
27
+ data = read_hysplit_data(file)
28
+
29
+ # 創建地圖
30
+ fig, ax = plt.subplots(figsize=(4, 5), subplot_kw={'projection': ccrs.PlateCarree()})
31
+
32
+ # 設置地圖範圍
33
+ ax.set_extent([116, 126, 17, 30], crs=ccrs.PlateCarree())
34
+
35
+ # 添加自然地理特徵
36
+ ax.add_feature(cfeature.LAND)
37
+ ax.add_feature(cfeature.OCEAN)
38
+ ax.add_feature(cfeature.COASTLINE)
39
+ ax.add_feature(cfeature.BORDERS, linestyle=':')
40
+
41
+ # 添加經緯度網格
42
+ ax.gridlines(draw_labels=True, dms=True, x_inline=False, y_inline=False)
43
+
44
+ # 定義四種顏色
45
+ colors = ['red', 'blue', 'green', 'purple']
46
+
47
+ # 繪製四條軌跡線
48
+ group = data.groupby('category')
49
+ for i, (name, _data) in enumerate(group):
50
+ trajectory = _data
51
+ ax.plot(trajectory['lon'], trajectory['lat'], color=colors[i],
52
+ linewidth=2, transform=ccrs.Geodetic(),
53
+ label=f'Trajectory {name}')
54
+
55
+ # 添加起點和終點標記
56
+ # ax.plot(trajectory['lon'].iloc[-1], trajectory['lat'].iloc[-1], 'o',
57
+ # color=colors[i], markersize=4, transform=ccrs.Geodetic())
58
+ # ax.plot(trajectory['lon'].iloc[0], trajectory['lat'].iloc[0], 's',
59
+ # color=colors[i], markersize=4, transform=ccrs.Geodetic())
60
+
61
+ ax.legend(loc='upper right')
62
+ # 添加色標
63
+ # cbar = plt.colorbar(scatter, ax=ax, shrink=0.6, pad=0.12)
64
+ # cbar.set_label('Height (m)')
65
+
66
+ # 添加標題
67
+ plt.title("HYSPLIT model", pad=12)
68
+
69
+ plt.tight_layout()
70
+
71
+ # 保存地圖
72
+ plt.savefig('backward_hysplit.png', dpi=300, bbox_inches='tight')
73
+
74
+ # 顯示地圖(可選)
75
+ plt.show()
76
+
77
+
78
+ if __name__ == "__main__":
79
+ hysplit(Path("../../data/240228_00.txt")) # 請替換為您的實際檔案路徑