disdrodb 0.1.4__py3-none-any.whl → 0.1.5__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.
- disdrodb/_version.py +2 -2
- disdrodb/api/create_directories.py +0 -2
- disdrodb/cli/disdrodb_create_summary.py +10 -0
- disdrodb/cli/disdrodb_create_summary_station.py +10 -0
- disdrodb/constants.py +1 -1
- disdrodb/etc/products/L1/global.yaml +1 -1
- disdrodb/etc/products/L2E/5MIN.yaml +1 -0
- disdrodb/etc/products/L2E/global.yaml +1 -1
- disdrodb/etc/products/L2M/GAMMA_GS_ND_MAE.yaml +6 -0
- disdrodb/etc/products/L2M/GAMMA_ML.yaml +1 -1
- disdrodb/etc/products/L2M/LOGNORMAL_GS_LOG_ND_MAE.yaml +6 -0
- disdrodb/etc/products/L2M/LOGNORMAL_GS_ND_MAE.yaml +6 -0
- disdrodb/etc/products/L2M/LOGNORMAL_ML.yaml +8 -0
- disdrodb/etc/products/L2M/global.yaml +11 -3
- disdrodb/l0/check_configs.py +49 -16
- disdrodb/l0/configs/LPM/l0a_encodings.yml +2 -2
- disdrodb/l0/configs/LPM/l0b_cf_attrs.yml +2 -2
- disdrodb/l0/configs/LPM/l0b_encodings.yml +2 -2
- disdrodb/l0/configs/LPM/raw_data_format.yml +2 -2
- disdrodb/l0/configs/PWS100/l0b_encodings.yml +1 -0
- disdrodb/l0/configs/SWS250/bins_diameter.yml +108 -0
- disdrodb/l0/configs/SWS250/bins_velocity.yml +83 -0
- disdrodb/l0/configs/SWS250/l0a_encodings.yml +18 -0
- disdrodb/l0/configs/SWS250/l0b_cf_attrs.yml +72 -0
- disdrodb/l0/configs/SWS250/l0b_encodings.yml +155 -0
- disdrodb/l0/configs/SWS250/raw_data_format.yml +148 -0
- disdrodb/l0/l0b_processing.py +70 -15
- disdrodb/l0/readers/LPM/ARM/ARM_LPM.py +1 -1
- disdrodb/l0/readers/LPM/AUSTRALIA/MELBOURNE_2007_LPM.py +2 -2
- disdrodb/l0/readers/LPM/BELGIUM/ULIEGE.py +256 -0
- disdrodb/l0/readers/LPM/BRAZIL/CHUVA_LPM.py +2 -2
- disdrodb/l0/readers/LPM/BRAZIL/GOAMAZON_LPM.py +2 -2
- disdrodb/l0/readers/LPM/GERMANY/DWD.py +491 -0
- disdrodb/l0/readers/LPM/ITALY/GID_LPM.py +2 -2
- disdrodb/l0/readers/LPM/ITALY/GID_LPM_W.py +2 -2
- disdrodb/l0/readers/LPM/KIT/CHWALA.py +2 -2
- disdrodb/l0/readers/LPM/SLOVENIA/ARSO.py +107 -12
- disdrodb/l0/readers/LPM/SLOVENIA/UL.py +3 -3
- disdrodb/l0/readers/LPM/SWITZERLAND/INNERERIZ_LPM.py +2 -2
- disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010.py +5 -14
- disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010_UF.py +5 -14
- disdrodb/l0/readers/PARSIVEL/SLOVENIA/UL.py +117 -8
- disdrodb/l0/readers/PARSIVEL2/BRAZIL/CHUVA_PARSIVEL2.py +10 -14
- disdrodb/l0/readers/PARSIVEL2/BRAZIL/GOAMAZON_PARSIVEL2.py +10 -14
- disdrodb/l0/readers/PARSIVEL2/DENMARK/DTU.py +8 -14
- disdrodb/l0/readers/PARSIVEL2/DENMARK/EROSION_raw.py +382 -0
- disdrodb/l0/readers/PARSIVEL2/FINLAND/FMI_PARSIVEL2.py +4 -0
- disdrodb/l0/readers/PARSIVEL2/FRANCE/OSUG.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/GREECE/NOA.py +127 -0
- disdrodb/l0/readers/PARSIVEL2/ITALY/HYDROX.py +239 -0
- disdrodb/l0/readers/PARSIVEL2/NCAR/FARM_PARSIVEL2.py +5 -11
- disdrodb/l0/readers/PARSIVEL2/NCAR/PERILS_MIPS.py +4 -17
- disdrodb/l0/readers/PARSIVEL2/NCAR/RELAMPAGO_PARSIVEL2.py +5 -14
- disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_PJ.py +10 -13
- disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_SB.py +10 -13
- disdrodb/l0/readers/PARSIVEL2/PHILIPPINES/PANGASA.py +232 -0
- disdrodb/l0/readers/PARSIVEL2/SPAIN/CENER.py +6 -18
- disdrodb/l0/readers/PARSIVEL2/SPAIN/GRANADA.py +120 -0
- disdrodb/l0/readers/PARSIVEL2/USA/C3WE.py +7 -25
- disdrodb/l0/readers/PWS100/AUSTRIA/HOAL.py +321 -0
- disdrodb/l0/readers/SW250/BELGIUM/KMI.py +239 -0
- disdrodb/l1/beard_model.py +31 -129
- disdrodb/l1/fall_velocity.py +136 -83
- disdrodb/l1/filters.py +25 -28
- disdrodb/l1/processing.py +11 -13
- disdrodb/l1_env/routines.py +46 -17
- disdrodb/l2/empirical_dsd.py +6 -0
- disdrodb/l2/processing.py +2 -2
- disdrodb/metadata/geolocation.py +0 -2
- disdrodb/psd/fitting.py +16 -13
- disdrodb/routines/l2.py +35 -23
- disdrodb/routines/wrappers.py +5 -0
- disdrodb/scattering/axis_ratio.py +90 -84
- disdrodb/scattering/permittivity.py +6 -0
- disdrodb/summary/routines.py +38 -12
- disdrodb/utils/attrs.py +2 -0
- disdrodb/utils/encoding.py +5 -0
- disdrodb/utils/time.py +2 -2
- disdrodb/viz/plots.py +24 -1
- {disdrodb-0.1.4.dist-info → disdrodb-0.1.5.dist-info}/METADATA +2 -1
- {disdrodb-0.1.4.dist-info → disdrodb-0.1.5.dist-info}/RECORD +85 -65
- {disdrodb-0.1.4.dist-info → disdrodb-0.1.5.dist-info}/WHEEL +0 -0
- {disdrodb-0.1.4.dist-info → disdrodb-0.1.5.dist-info}/entry_points.txt +0 -0
- {disdrodb-0.1.4.dist-info → disdrodb-0.1.5.dist-info}/licenses/LICENSE +0 -0
- {disdrodb-0.1.4.dist-info → disdrodb-0.1.5.dist-info}/top_level.txt +0 -0
disdrodb/_version.py
CHANGED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.1.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 1,
|
|
31
|
+
__version__ = version = '0.1.5'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 1, 5)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -85,8 +85,6 @@ def create_l0_directory_structure(
|
|
|
85
85
|
``product = "L0A"`` will call ``run_l0a``.
|
|
86
86
|
``product = "L0B"`` will call ``run_l0b_nc``.
|
|
87
87
|
"""
|
|
88
|
-
from disdrodb.configs import get_data_archive_dir, get_metadata_archive_dir
|
|
89
|
-
|
|
90
88
|
# Retrieve the DISDRODB Metadata Archive directory
|
|
91
89
|
data_archive_dir = get_data_archive_dir(data_archive_dir)
|
|
92
90
|
metadata_archive_dir = get_metadata_archive_dir(metadata_archive_dir)
|
|
@@ -39,6 +39,14 @@ sys.tracebacklimit = 0 # avoid full traceback error if occur
|
|
|
39
39
|
@click_data_archive_dir_option
|
|
40
40
|
@click_metadata_archive_dir_option
|
|
41
41
|
@click.option("-p", "--parallel", type=bool, show_default=True, default=False, help="Read files in parallel")
|
|
42
|
+
@click.option(
|
|
43
|
+
"-t",
|
|
44
|
+
"--temporal_resolution",
|
|
45
|
+
type=str,
|
|
46
|
+
show_default=True,
|
|
47
|
+
default="1MIN",
|
|
48
|
+
help="Temporal resolution of the L2E product to be used for the summary.",
|
|
49
|
+
)
|
|
42
50
|
def disdrodb_create_summary(
|
|
43
51
|
# Stations options
|
|
44
52
|
data_sources: Optional[str] = None,
|
|
@@ -46,6 +54,7 @@ def disdrodb_create_summary(
|
|
|
46
54
|
station_names: Optional[str] = None,
|
|
47
55
|
# Processing options:
|
|
48
56
|
parallel=False,
|
|
57
|
+
temporal_resolution="1MIN",
|
|
49
58
|
# DISDRODB root directories
|
|
50
59
|
data_archive_dir: Optional[str] = None,
|
|
51
60
|
metadata_archive_dir: Optional[str] = None,
|
|
@@ -92,6 +101,7 @@ def disdrodb_create_summary(
|
|
|
92
101
|
station_names=station_names,
|
|
93
102
|
# Options
|
|
94
103
|
parallel=parallel,
|
|
104
|
+
temporal_resolution=temporal_resolution,
|
|
95
105
|
# DISDRODB root directory
|
|
96
106
|
data_archive_dir=data_archive_dir,
|
|
97
107
|
metadata_archive_dir=metadata_archive_dir,
|
|
@@ -36,6 +36,14 @@ sys.tracebacklimit = 0 # avoid full traceback error if occur
|
|
|
36
36
|
@click_station_arguments
|
|
37
37
|
@click_data_archive_dir_option
|
|
38
38
|
@click.option("-p", "--parallel", type=bool, show_default=True, default=False, help="Read files in parallel")
|
|
39
|
+
@click.option(
|
|
40
|
+
"-t",
|
|
41
|
+
"--temporal_resolution",
|
|
42
|
+
type=str,
|
|
43
|
+
show_default=True,
|
|
44
|
+
default="1MIN",
|
|
45
|
+
help="Temporal resolution of the L2E product to be used for the summary.",
|
|
46
|
+
)
|
|
39
47
|
def disdrodb_create_summary_station(
|
|
40
48
|
# Station arguments
|
|
41
49
|
data_source: str,
|
|
@@ -43,6 +51,7 @@ def disdrodb_create_summary_station(
|
|
|
43
51
|
station_name: str,
|
|
44
52
|
# Processing options:
|
|
45
53
|
parallel=False,
|
|
54
|
+
temporal_resolution="1MIN",
|
|
46
55
|
# DISDRODB root directories
|
|
47
56
|
data_archive_dir: Optional[str] = None,
|
|
48
57
|
):
|
|
@@ -81,6 +90,7 @@ def disdrodb_create_summary_station(
|
|
|
81
90
|
station_name=station_name,
|
|
82
91
|
# Options
|
|
83
92
|
parallel=parallel,
|
|
93
|
+
temporal_resolution=temporal_resolution,
|
|
84
94
|
# DISDRODB root directory
|
|
85
95
|
data_archive_dir=data_archive_dir,
|
|
86
96
|
)
|
disdrodb/constants.py
CHANGED
|
@@ -41,7 +41,7 @@ COORDINATES = [
|
|
|
41
41
|
"time",
|
|
42
42
|
"sample_interval",
|
|
43
43
|
]
|
|
44
|
-
OPTICAL_SENSORS = ["PARSIVEL", "PARSIVEL2", "LPM", "PWS100"]
|
|
44
|
+
OPTICAL_SENSORS = ["PARSIVEL", "PARSIVEL2", "LPM", "PWS100", "SWS250"]
|
|
45
45
|
IMPACT_SENSORS = ["RD80"]
|
|
46
46
|
|
|
47
47
|
PRODUCTS = ["RAW", "L0A", "L0B", "L0C", "L1", "L2E", "L2M"]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
radar_enabled: True
|
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
temporal_resolutions: ["1MIN"
|
|
2
|
-
models:
|
|
1
|
+
temporal_resolutions: ["1MIN"] #, "5MIN", "10MIN"]
|
|
2
|
+
models:
|
|
3
|
+
[
|
|
4
|
+
"GAMMA_ML",
|
|
5
|
+
"GAMMA_GS_ND_MAE",
|
|
6
|
+
"NGAMMA_GS_LOG_ND_MAE",
|
|
7
|
+
"NGAMMA_GS_ND_MAE",
|
|
8
|
+
"LOGNORMAL_ML",
|
|
9
|
+
"LOGNORMAL_GS_ND_MAE",
|
|
10
|
+
]
|
|
3
11
|
archive_options:
|
|
4
12
|
strategy: time_block
|
|
5
13
|
strategy_options:
|
|
6
14
|
freq: month
|
|
7
15
|
folder_partitioning: ""
|
|
8
16
|
product_options:
|
|
9
|
-
|
|
17
|
+
fall_velocity_model: "Beard1976"
|
|
10
18
|
diameter_min: 0
|
|
11
19
|
diameter_max: 10
|
|
12
20
|
diameter_spacing: 0.05
|
disdrodb/l0/check_configs.py
CHANGED
|
@@ -22,7 +22,7 @@ import os
|
|
|
22
22
|
from typing import Optional, Union
|
|
23
23
|
|
|
24
24
|
import numpy as np
|
|
25
|
-
from pydantic import BaseModel, ValidationError, field_validator, model_validator
|
|
25
|
+
from pydantic import BaseModel, Field, ValidationError, field_validator, model_validator
|
|
26
26
|
|
|
27
27
|
from disdrodb.api.configs import available_sensor_names, get_sensor_configs_dir, read_config_file
|
|
28
28
|
from disdrodb.l0.standards import (
|
|
@@ -47,7 +47,7 @@ CONFIG_FILES_LIST = [
|
|
|
47
47
|
]
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
def
|
|
50
|
+
def check_yaml_files_exists(sensor_name: str) -> None:
|
|
51
51
|
"""Check if all L0 config YAML files exist.
|
|
52
52
|
|
|
53
53
|
Parameters
|
|
@@ -64,7 +64,7 @@ def _check_yaml_files_exists(sensor_name: str) -> None:
|
|
|
64
64
|
raise FileNotFoundError(f"Missing YAML files {missing_keys_text} in {config_dir} for sensor {sensor_name}.")
|
|
65
65
|
|
|
66
66
|
|
|
67
|
-
def
|
|
67
|
+
def check_variable_consistency(sensor_name: str) -> None:
|
|
68
68
|
"""
|
|
69
69
|
Check variable consistency across config files.
|
|
70
70
|
|
|
@@ -126,7 +126,7 @@ def _schema_error(object_to_validate: Union[str, list], schema: BaseModel, messa
|
|
|
126
126
|
|
|
127
127
|
|
|
128
128
|
class L0BEncodingSchema(BaseModel):
|
|
129
|
-
"""Pydantic model for DISDRODB
|
|
129
|
+
"""Pydantic model for DISDRODB netCDF encodings."""
|
|
130
130
|
|
|
131
131
|
contiguous: bool
|
|
132
132
|
dtype: str
|
|
@@ -134,7 +134,7 @@ class L0BEncodingSchema(BaseModel):
|
|
|
134
134
|
complevel: int
|
|
135
135
|
shuffle: bool
|
|
136
136
|
fletcher32: bool
|
|
137
|
-
|
|
137
|
+
FillValue: Optional[Union[int, float]] = Field(default=None, alias="_FillValue")
|
|
138
138
|
chunksizes: Optional[Union[int, list[int]]]
|
|
139
139
|
|
|
140
140
|
# if contiguous=False, chunksizes specified, otherwise should be not !
|
|
@@ -167,6 +167,39 @@ class L0BEncodingSchema(BaseModel):
|
|
|
167
167
|
raise ValueError("'fletcher32' must be set to False if 'contiguous' is True")
|
|
168
168
|
return values
|
|
169
169
|
|
|
170
|
+
# if dtype is integer/unsigned integer, _FillValue must be specified and valid
|
|
171
|
+
@model_validator(mode="before")
|
|
172
|
+
def check_integer_fillvalue(cls, values):
|
|
173
|
+
"""Check that integer dtypes have valid _FillValue."""
|
|
174
|
+
dtype = values.get("dtype")
|
|
175
|
+
fill_value = values.get("_FillValue", None)
|
|
176
|
+
integer_types = ["int8", "int16", "int32", "int64", "uint8", "uint16", "uint32", "uint64"]
|
|
177
|
+
# Check if dtype is an integer type
|
|
178
|
+
if dtype in integer_types:
|
|
179
|
+
# _FillValue must be specified for integer types
|
|
180
|
+
if fill_value is None:
|
|
181
|
+
raise ValueError(f"'_FillValue' must be specified for integer dtype '{dtype}'")
|
|
182
|
+
|
|
183
|
+
# Check that _FillValue is within valid range for the dtype
|
|
184
|
+
dtype_info = np.iinfo(dtype)
|
|
185
|
+
max_value = dtype_info.max
|
|
186
|
+
# min_value = dtype_info.min
|
|
187
|
+
|
|
188
|
+
# if not (min_value <= fill_value <= max_value):
|
|
189
|
+
# raise ValueError(
|
|
190
|
+
# f"'_FillValue' ({fill_value}) is out of range for dtype '{dtype}'. "
|
|
191
|
+
# f"Valid range is [{min_value}, {max_value}]",
|
|
192
|
+
# )
|
|
193
|
+
|
|
194
|
+
# Check that _FillValue corresponds to the maximum allowed value
|
|
195
|
+
if fill_value != max_value:
|
|
196
|
+
raise ValueError(
|
|
197
|
+
f"'_FillValue' ({fill_value}) should be set to the maximum allowed value "
|
|
198
|
+
f"({max_value}) for integer dtype '{dtype}'",
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
return values
|
|
202
|
+
|
|
170
203
|
|
|
171
204
|
def check_l0b_encoding(sensor_name: str) -> None:
|
|
172
205
|
"""Check ``l0b_encodings.yml`` file based on the schema defined in the class ``L0BEncodingSchema``.
|
|
@@ -176,7 +209,7 @@ def check_l0b_encoding(sensor_name: str) -> None:
|
|
|
176
209
|
sensor_name : str
|
|
177
210
|
Name of the sensor.
|
|
178
211
|
"""
|
|
179
|
-
data = read_config_file(sensor_name, product="
|
|
212
|
+
data = read_config_file(sensor_name, product="L0B", filename="l0b_encodings.yml")
|
|
180
213
|
|
|
181
214
|
# check that the second level of the dictionary match the schema
|
|
182
215
|
for key, value in data.items():
|
|
@@ -234,7 +267,7 @@ class RawDataFormatSchema(BaseModel):
|
|
|
234
267
|
return None
|
|
235
268
|
|
|
236
269
|
|
|
237
|
-
def
|
|
270
|
+
def check_raw_data_format(sensor_name: str) -> None:
|
|
238
271
|
"""Check ``raw_data_format.yml`` file based on the schema defined in the class ``RawDataFormatSchema``.
|
|
239
272
|
|
|
240
273
|
Parameters
|
|
@@ -253,7 +286,7 @@ def _check_raw_data_format(sensor_name: str) -> None:
|
|
|
253
286
|
)
|
|
254
287
|
|
|
255
288
|
|
|
256
|
-
def
|
|
289
|
+
def check_cf_attributes(sensor_name: str) -> None:
|
|
257
290
|
"""Check that the ``l0b_cf_attrs.yml`` description, long_name and units values are strings.
|
|
258
291
|
|
|
259
292
|
Parameters
|
|
@@ -268,7 +301,7 @@ def _check_cf_attributes(sensor_name: str) -> None:
|
|
|
268
301
|
raise ValueError(f"Wrong value for {key} in {var} for sensor {sensor_name}.")
|
|
269
302
|
|
|
270
303
|
|
|
271
|
-
def
|
|
304
|
+
def check_bin_consistency(sensor_name: str) -> None:
|
|
272
305
|
"""Check bin consistency from config file.
|
|
273
306
|
|
|
274
307
|
Do not check the first and last bin !
|
|
@@ -313,7 +346,7 @@ def _check_bin_consistency(sensor_name: str) -> None:
|
|
|
313
346
|
)
|
|
314
347
|
|
|
315
348
|
|
|
316
|
-
def
|
|
349
|
+
def check_raw_array(sensor_name: str) -> None:
|
|
317
350
|
"""Check raw array consistency from config file.
|
|
318
351
|
|
|
319
352
|
Parameters
|
|
@@ -363,14 +396,14 @@ def check_sensor_configs(sensor_name: str) -> None:
|
|
|
363
396
|
sensor_name : str
|
|
364
397
|
Name of the sensor.
|
|
365
398
|
"""
|
|
366
|
-
|
|
367
|
-
|
|
399
|
+
check_yaml_files_exists(sensor_name)
|
|
400
|
+
check_variable_consistency(sensor_name)
|
|
368
401
|
check_l0b_encoding(sensor_name=sensor_name)
|
|
369
402
|
check_l0a_encoding(sensor_name=sensor_name)
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
403
|
+
check_raw_data_format(sensor_name=sensor_name)
|
|
404
|
+
check_cf_attributes(sensor_name=sensor_name)
|
|
405
|
+
check_bin_consistency(sensor_name=sensor_name)
|
|
406
|
+
check_raw_array(sensor_name=sensor_name)
|
|
374
407
|
|
|
375
408
|
|
|
376
409
|
def check_all_sensors_configs() -> None:
|
|
@@ -15,7 +15,7 @@ reflectivity: "float32"
|
|
|
15
15
|
quality_index: "float32" # 'uint8'
|
|
16
16
|
max_hail_diameter: "float32"
|
|
17
17
|
laser_status: "float32" # 'uint8'
|
|
18
|
-
|
|
18
|
+
static_signal_status: "float32" # 'uint8'
|
|
19
19
|
laser_temperature_analog_status: "float32" # 'uint8'
|
|
20
20
|
laser_temperature_digital_status: "float32" # 'uint8'
|
|
21
21
|
laser_current_analog_status: "float32" # 'uint8'
|
|
@@ -29,7 +29,7 @@ current_heating_house_status: "float32" # 'uint8'
|
|
|
29
29
|
current_heating_heads_status: "float32" # 'uint8'
|
|
30
30
|
current_heating_carriers_status: "float32" # 'uint8'
|
|
31
31
|
control_output_laser_power_status: "float32" # 'uint8'
|
|
32
|
-
|
|
32
|
+
reserved_status: "float32" # 'uint8'
|
|
33
33
|
temperature_interior: "float32" # 'uint16'
|
|
34
34
|
laser_temperature: "float32" # 'uint16'
|
|
35
35
|
laser_current_average: "float32" # 'uint16'
|
|
@@ -66,7 +66,7 @@ laser_status:
|
|
|
66
66
|
description: Status Laser (OK/on:0, off:1)
|
|
67
67
|
long_name: Status laser
|
|
68
68
|
units: ""
|
|
69
|
-
|
|
69
|
+
static_signal_status:
|
|
70
70
|
description: Static signal (OK:0, Error:1)
|
|
71
71
|
long_name: Static signal
|
|
72
72
|
units: ""
|
|
@@ -122,7 +122,7 @@ control_output_laser_power_status:
|
|
|
122
122
|
description: Status Control output laser power (OK:0, warning:1)
|
|
123
123
|
long_name: Status control output laser
|
|
124
124
|
units: ""
|
|
125
|
-
|
|
125
|
+
reserved_status:
|
|
126
126
|
description: Reserve Status (0)
|
|
127
127
|
long_name: Reserve status
|
|
128
128
|
units: ""
|
|
@@ -184,7 +184,7 @@ laser_status:
|
|
|
184
184
|
contiguous: false
|
|
185
185
|
chunksizes: 5000
|
|
186
186
|
_FillValue: 255
|
|
187
|
-
|
|
187
|
+
static_signal_status:
|
|
188
188
|
dtype: uint8
|
|
189
189
|
zlib: true
|
|
190
190
|
complevel: 3
|
|
@@ -310,7 +310,7 @@ control_output_laser_power_status:
|
|
|
310
310
|
contiguous: false
|
|
311
311
|
chunksizes: 5000
|
|
312
312
|
_FillValue: 255
|
|
313
|
-
|
|
313
|
+
reserved_status:
|
|
314
314
|
dtype: uint8
|
|
315
315
|
zlib: true
|
|
316
316
|
complevel: 3
|
|
@@ -213,7 +213,7 @@ laser_status:
|
|
|
213
213
|
- 0
|
|
214
214
|
- 1
|
|
215
215
|
field_number: "22"
|
|
216
|
-
|
|
216
|
+
static_signal_status:
|
|
217
217
|
n_digits: 1
|
|
218
218
|
n_characters: 1
|
|
219
219
|
n_decimals: 1
|
|
@@ -389,7 +389,7 @@ control_output_laser_power_status:
|
|
|
389
389
|
- 0
|
|
390
390
|
- 1
|
|
391
391
|
field_number: "36"
|
|
392
|
-
|
|
392
|
+
reserved_status:
|
|
393
393
|
n_digits: 1
|
|
394
394
|
n_characters: 1
|
|
395
395
|
n_decimals: 1
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
center:
|
|
2
|
+
0: 0.2
|
|
3
|
+
1: 0.45
|
|
4
|
+
2: 0.55
|
|
5
|
+
3: 0.65
|
|
6
|
+
4: 0.75
|
|
7
|
+
5: 0.85
|
|
8
|
+
6: 0.95
|
|
9
|
+
7: 1.05
|
|
10
|
+
8: 1.15
|
|
11
|
+
9: 1.25
|
|
12
|
+
10: 1.35
|
|
13
|
+
11: 1.5
|
|
14
|
+
12: 1.75
|
|
15
|
+
13: 2.08
|
|
16
|
+
14: 2.475
|
|
17
|
+
15: 2.945
|
|
18
|
+
16: 3.5
|
|
19
|
+
17: 4.16
|
|
20
|
+
18: 4.95
|
|
21
|
+
19: 5.89
|
|
22
|
+
20: 6.7
|
|
23
|
+
bounds:
|
|
24
|
+
0:
|
|
25
|
+
- 0.0
|
|
26
|
+
- 0.4
|
|
27
|
+
1:
|
|
28
|
+
- 0.4
|
|
29
|
+
- 0.5
|
|
30
|
+
2:
|
|
31
|
+
- 0.5
|
|
32
|
+
- 0.6
|
|
33
|
+
3:
|
|
34
|
+
- 0.6
|
|
35
|
+
- 0.7
|
|
36
|
+
4:
|
|
37
|
+
- 0.7
|
|
38
|
+
- 0.8
|
|
39
|
+
5:
|
|
40
|
+
- 0.8
|
|
41
|
+
- 0.9
|
|
42
|
+
6:
|
|
43
|
+
- 0.9
|
|
44
|
+
- 1.0
|
|
45
|
+
7:
|
|
46
|
+
- 1.0
|
|
47
|
+
- 1.1
|
|
48
|
+
8:
|
|
49
|
+
- 1.1
|
|
50
|
+
- 1.2
|
|
51
|
+
9:
|
|
52
|
+
- 1.2
|
|
53
|
+
- 1.3
|
|
54
|
+
10:
|
|
55
|
+
- 1.3
|
|
56
|
+
- 1.4
|
|
57
|
+
11:
|
|
58
|
+
- 1.4
|
|
59
|
+
- 1.6
|
|
60
|
+
12:
|
|
61
|
+
- 1.6
|
|
62
|
+
- 1.9
|
|
63
|
+
13:
|
|
64
|
+
- 1.9
|
|
65
|
+
- 2.26
|
|
66
|
+
14:
|
|
67
|
+
- 2.26
|
|
68
|
+
- 2.69
|
|
69
|
+
15:
|
|
70
|
+
- 2.69
|
|
71
|
+
- 3.2
|
|
72
|
+
16:
|
|
73
|
+
- 3.2
|
|
74
|
+
- 3.8
|
|
75
|
+
17:
|
|
76
|
+
- 3.8
|
|
77
|
+
- 4.52
|
|
78
|
+
18:
|
|
79
|
+
- 4.52
|
|
80
|
+
- 5.38
|
|
81
|
+
19:
|
|
82
|
+
- 5.38
|
|
83
|
+
- 6.4
|
|
84
|
+
20:
|
|
85
|
+
- 6.4
|
|
86
|
+
- 7.0
|
|
87
|
+
width:
|
|
88
|
+
0: 0.4
|
|
89
|
+
1: 0.1
|
|
90
|
+
2: 0.1
|
|
91
|
+
3: 0.1
|
|
92
|
+
4: 0.1
|
|
93
|
+
5: 0.1
|
|
94
|
+
6: 0.1
|
|
95
|
+
7: 0.1
|
|
96
|
+
8: 0.1
|
|
97
|
+
9: 0.1
|
|
98
|
+
10: 0.1
|
|
99
|
+
11: 0.2
|
|
100
|
+
12: 0.3
|
|
101
|
+
13: 0.36
|
|
102
|
+
14: 0.43
|
|
103
|
+
15: 0.51
|
|
104
|
+
16: 0.6
|
|
105
|
+
17: 0.72
|
|
106
|
+
18: 0.86
|
|
107
|
+
19: 1.02
|
|
108
|
+
20: 0.6
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
center:
|
|
2
|
+
0: 0.55
|
|
3
|
+
1: 0.95
|
|
4
|
+
2: 1.41
|
|
5
|
+
3: 1.84
|
|
6
|
+
4: 2.465
|
|
7
|
+
5: 3.27
|
|
8
|
+
6: 4.01
|
|
9
|
+
7: 4.625
|
|
10
|
+
8: 5.275
|
|
11
|
+
9: 6.325
|
|
12
|
+
10: 7.63
|
|
13
|
+
11: 9.51
|
|
14
|
+
12: 11.745
|
|
15
|
+
13: 14.14
|
|
16
|
+
14: 17.775
|
|
17
|
+
15: 22.5
|
|
18
|
+
bounds:
|
|
19
|
+
0:
|
|
20
|
+
- 0.40
|
|
21
|
+
- 0.70
|
|
22
|
+
1:
|
|
23
|
+
- 0.70
|
|
24
|
+
- 1.20
|
|
25
|
+
2:
|
|
26
|
+
- 1.20
|
|
27
|
+
- 1.62
|
|
28
|
+
3:
|
|
29
|
+
- 1.62
|
|
30
|
+
- 2.06
|
|
31
|
+
4:
|
|
32
|
+
- 2.06
|
|
33
|
+
- 2.87
|
|
34
|
+
5:
|
|
35
|
+
- 2.87
|
|
36
|
+
- 3.67
|
|
37
|
+
6:
|
|
38
|
+
- 3.67
|
|
39
|
+
- 4.35
|
|
40
|
+
7:
|
|
41
|
+
- 4.35
|
|
42
|
+
- 4.90
|
|
43
|
+
8:
|
|
44
|
+
- 4.90
|
|
45
|
+
- 5.65
|
|
46
|
+
9:
|
|
47
|
+
- 5.65
|
|
48
|
+
- 7.00
|
|
49
|
+
10:
|
|
50
|
+
- 7.00
|
|
51
|
+
- 8.26
|
|
52
|
+
11:
|
|
53
|
+
- 8.26
|
|
54
|
+
- 10.76
|
|
55
|
+
12:
|
|
56
|
+
- 10.76
|
|
57
|
+
- 12.73
|
|
58
|
+
13:
|
|
59
|
+
- 12.73
|
|
60
|
+
- 15.55
|
|
61
|
+
14:
|
|
62
|
+
- 15.55
|
|
63
|
+
- 20.00
|
|
64
|
+
15:
|
|
65
|
+
- 20.00
|
|
66
|
+
- 25.00
|
|
67
|
+
width:
|
|
68
|
+
0: 0.3
|
|
69
|
+
1: 0.5
|
|
70
|
+
2: 0.42
|
|
71
|
+
3: 0.44
|
|
72
|
+
4: 0.81
|
|
73
|
+
5: 0.8
|
|
74
|
+
6: 0.68
|
|
75
|
+
7: 0.55
|
|
76
|
+
8: 0.75
|
|
77
|
+
9: 1.35
|
|
78
|
+
10: 1.26
|
|
79
|
+
11: 2.5
|
|
80
|
+
12: 1.97
|
|
81
|
+
13: 2.82
|
|
82
|
+
14: 4.45
|
|
83
|
+
15: 5.0
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
precipitation_rate: "float32"
|
|
2
|
+
precipitation_accumulated: "float32"
|
|
3
|
+
weather_code_synop_4680: "float32" # 'uint16'
|
|
4
|
+
weather_code_metar_4678: "str"
|
|
5
|
+
past_weather1: "str"
|
|
6
|
+
past_weather2: "str"
|
|
7
|
+
mor_visibility_5min: "float32"
|
|
8
|
+
mor_visibility: "float32" # 'uint16'
|
|
9
|
+
number_particles: "float32" # 'uint32'
|
|
10
|
+
sensor_temperature: "float32" # 'uint16'
|
|
11
|
+
obstruction_status: "str"
|
|
12
|
+
total_extinction_coefficient: "float32"
|
|
13
|
+
transmissometer_extinction_coefficient: "float32"
|
|
14
|
+
back_scatter_extinction_coefficient: "float32"
|
|
15
|
+
ambient_light_sensor_signal: "float32"
|
|
16
|
+
sensor_status: "str" #
|
|
17
|
+
ambient_light_sensor_signal_status: "str"
|
|
18
|
+
raw_drop_number: "str"
|