shancx 1.9.33.224__py3-none-any.whl → 1.9.33.227__py3-none-any.whl

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.
shancx/Read.py CHANGED
@@ -1,9 +1,84 @@
1
+
2
+ import xarray as xr
3
+ import numpy as np
4
+ import gzip
5
+ import tempfile
6
+ import os
7
+ backend_kwargs = {
8
+ 'errors': 'ignore',
9
+ # 'errors': 'raise'
10
+ # 'errors': 'warn'
11
+ }
12
+ def getGrib(filepath):
13
+ tmp_path = filepath
14
+ if filepath.endswith('.gz'):
15
+ with gzip.open(filepath, 'rb') as f:
16
+ with tempfile.NamedTemporaryFile(suffix='.grib2', delete=False) as tmp:
17
+ tmp.write(f.read())
18
+ tmp_path = tmp.name
19
+ try:
20
+ ds = xr.open_dataset(tmp_path, engine='cfgrib', backend_kwargs=backend_kwargs)
21
+ var_name = list(ds.data_vars)[0]
22
+ data_var = ds[var_name]
23
+ data_values = np.where(data_var.values < -900, np.nan, data_var.values)
24
+ if 'latitude' in ds.coords and 'longitude' in ds.coords:
25
+ lats = ds.latitude.values
26
+ lons = ds.longitude.values
27
+ elif 'lat' in ds.coords and 'lon' in ds.coords:
28
+ lats = ds.lat.values
29
+ lons = ds.lon.values
30
+ elif hasattr(ds, 'latitude') and hasattr(ds, 'longitude'):
31
+ lats = ds.latitude.values
32
+ lons = ds.longitude.values
33
+ else:
34
+ for var_name in ds.data_vars:
35
+ var = ds[var_name]
36
+ if hasattr(var, 'latitude') and hasattr(var, 'longitude'):
37
+ lats = var.latitude.values
38
+ lons = var.longitude.values
39
+ break
40
+ else:
41
+ raise ValueError("未找到经纬度坐标")
42
+ return {
43
+ 'data': data_values,
44
+ 'lats': lats,
45
+ 'lons': lons
46
+ }
47
+ finally:
48
+ os.unlink(tmp_path)
49
+
50
+ """
51
+ input_Path = './Composite_00.50_20250701-010044.grib2.gz'
52
+ result = getGrib(input_Path)
53
+ """
54
+
1
55
  import pygrib
2
56
  import numpy as np
3
57
  import pandas as pd
4
- def readGrib(file_path, target_param=None):
58
+ import gzip
59
+ import tempfile
60
+ def readGrib(filepath, target_param=None):
61
+ filepath= filepath
62
+ if filepath.endswith('.gz'):
63
+ with gzip.open(filepath, 'rb') as f:
64
+ with tempfile.NamedTemporaryFile(suffix='.grib2', delete=False) as tmp:
65
+ tmp.write(f.read())
66
+ filepath = tmp.name
5
67
  try:
6
- with pygrib.open(file_path) as grbs:
68
+ with pygrib.open(filepath) as grbs:
69
+ if target_param:
70
+ try:
71
+ grb = grbs.select(shortName=target_param)[0]
72
+ except:
73
+ try:
74
+ grb = grbs.select(parameterName=target_param)[0]
75
+ except:
76
+ raise ValueError(f"未找到参数: {target_param}")
77
+ else:
78
+ grb = grbs[1]
79
+ data = grb.values
80
+ lats, lons = grb.latlons()
81
+ #data2
7
82
  field_info = []
8
83
  for grb in grbs:
9
84
  field_info.append({
@@ -16,18 +91,6 @@ def readGrib(file_path, target_param=None):
16
91
  'units': getattr(grb, 'units', 'N/A'),
17
92
  'shape': grb.values.shape
18
93
  })
19
- if target_param:
20
- try:
21
- grb = grbs.select(shortName=target_param)[0]
22
- except:
23
- try:
24
- grb = grbs.select(parameterName=target_param)[0]
25
- except:
26
- raise ValueError(f"未找到参数: {target_param}")
27
- else:
28
- grb = grbs[1]
29
- data = grb.values
30
- lats, lons = grb.latlons()
31
94
  return {
32
95
  'data': data,
33
96
  'lats': lats,
@@ -36,12 +99,14 @@ def readGrib(file_path, target_param=None):
36
99
  'parameterName': grb.parameterName,
37
100
  'level': grb.level,
38
101
  'validDate': grb.validDate,
39
- 'units': grb.units
102
+ 'units': grb.units,
103
+ "field_info":field_info
40
104
  }
41
105
  }
42
106
  except Exception as e:
43
107
  print(f"GRIB读取错误: {str(e)}")
44
108
  return None
109
+ """
45
110
  if __name__ == "__main__":
46
111
  path = "/mnt/wtx_weather_forecast/CMA_DATA/NAFP/EC/C1D/2024/2024112720/ECMFC1D_PRTY_1_2024112712_GLB_1_2.grib2"
47
112
  result = readGrib(path)
@@ -50,9 +115,6 @@ if __name__ == "__main__":
50
115
  print("经度范围:", np.min(result['lons']), "~", np.max(result['lons']))
51
116
  print("纬度范围:", np.min(result['lats']), "~", np.max(result['lats']))
52
117
  print("参数单位:", result['metadata']['units'])
53
- """
54
- latArr = latMat[:,0]
55
- lonArr = lonMat[0]
56
- """
118
+ """
119
+
57
120
 
58
-
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shancx
3
- Version: 1.9.33.224
3
+ Version: 1.9.33.227
4
4
  Summary: A simple timer decorator
5
5
  Home-page: https://gitee.com/shancx
6
6
  Author: shancx
@@ -5,7 +5,7 @@ shancx/Lib.py,sha256=GUAspllSxk39mvj-F1Q8Ys0EcY_lQfZPRGPE7L3x4SE,977
5
5
  shancx/Path1.py,sha256=vX4A5RgdwVyIVVNZRocl18rOu1Z8YMLfDb0B92-0bE8,5334
6
6
  shancx/Point.py,sha256=gyIomOVbNoz6SOcAhhTS26NHBeJ0TOwB-ljNsBWN1ZE,1909
7
7
  shancx/QC.py,sha256=MFxbPMEwrnk5l0sTFMrx13wPlXJ5WI5TovzaiBoEr0E,9848
8
- shancx/Read.py,sha256=qaX4Qf9J8vXjam60PWjWdAL-1hvEwcEe_d4bR4MZ2OU,2465
8
+ shancx/Read.py,sha256=94FNUWiZn71X6ArZhyqhyORNcWJffC7Hz76BAtF9CJc,4577
9
9
  shancx/Resize.py,sha256=uwiOhD-aWPDLvIwOYEX-XXN_suOXv6hPDcaGyr4JLC4,4044
10
10
  shancx/ZR.py,sha256=5APchqVoI1G2MkrN9YJSWCwfLUygcSFIsUXSo9aq1Qg,341
11
11
  shancx/__init__.py,sha256=6sfiHElECqfy5eEEGqaCAw4YiKxgKfJ5IFFh9yvtewk,11442
@@ -87,7 +87,7 @@ shancx/Train/multiGpu.py,sha256=D_oZeiSc7VWktpnVDwrFOC1CYZSt9rxOKY5lngE5vFg,820
87
87
  shancx/Train/prepare.py,sha256=vL_8UOA66oZCBIwCICtihsGibivtNgaVJGulJxfNdn8,6793
88
88
  shancx/Train/renet50.py,sha256=wEhYk1X96WE5zuqHqVxWLJa-A5jDNkz4z6edORNufnA,6428
89
89
  shancx/tensBoard/__init__.py,sha256=ga2C5YyJITvvQA1ocpxna_KNFnNRJVwkTjLoIglLZUQ,993
90
- shancx-1.9.33.224.dist-info/METADATA,sha256=4578s6UvEQqzaWNvvxbHegy-Fab_bjob6EyGFe08-s0,850
91
- shancx-1.9.33.224.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
92
- shancx-1.9.33.224.dist-info/top_level.txt,sha256=akfCS1vKWz3pNmEN_yN9ZiGp-60IQY5ET38mRx_i_-4,7
93
- shancx-1.9.33.224.dist-info/RECORD,,
90
+ shancx-1.9.33.227.dist-info/METADATA,sha256=2IF7Rl9DDL9BPZypQ0PtDTid3CfYF7wOu9HjWhQO42Y,850
91
+ shancx-1.9.33.227.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
92
+ shancx-1.9.33.227.dist-info/top_level.txt,sha256=akfCS1vKWz3pNmEN_yN9ZiGp-60IQY5ET38mRx_i_-4,7
93
+ shancx-1.9.33.227.dist-info/RECORD,,