Skip to content
Snippets Groups Projects

Convert to NetCDF

2 files
+ 53
36
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -20,6 +20,7 @@ from ..utils.netcdf_dimensions import NetcdfDimensions
@@ -20,6 +20,7 @@ from ..utils.netcdf_dimensions import NetcdfDimensions
from ..utils.netcdf_keys import NetcdfKeys
from ..utils.netcdf_keys import NetcdfKeys
from ..utils.netcdf_parameters import NetcdfParameters
from ..utils.netcdf_parameters import NetcdfParameters
from ..utils.netcdf_utils import NetcdfUtils
from ..utils.netcdf_utils import NetcdfUtils
 
from ..nshm import Nshm
_ROOT_ATTRIBUTES: dict = {
_ROOT_ATTRIBUTES: dict = {
@@ -35,14 +36,17 @@ _ROOT_ATTRIBUTES: dict = {
@@ -35,14 +36,17 @@ _ROOT_ATTRIBUTES: dict = {
_NETCDF_PATH_ENV = "NSHMP_NETCDF_FILE_PATH"
_NETCDF_PATH_ENV = "NSHMP_NETCDF_FILE_PATH"
class Convert2018A:
class Convert:
def __init__(self, inputs: ApplicationInputs, metadata: NetcdfMetadata):
def __init__(self, inputs: ApplicationInputs, metadata: NetcdfMetadata):
self.metadata = metadata
self.metadata = metadata
self.inputs = inputs
self.inputs = inputs
hazard_parameters = NetcdfParameters().HazardParameters()
nshm = self.metadata.database_info.nshm
nshm = self.metadata.database_info.nshm
region = self.metadata.model_region
region = self.metadata.model_region
 
 
if (nshm != Nshm.NSHM_2018A):
 
raise ValueError(f"NSHM [{self.metadata.database_info.nshm.value}] not supported")
 
 
# hazard_parameters = NetcdfParameters().HazardParameters()
console.print(f"\n[blue]Converting {nshm.label}")
console.print(f"\n[blue]Converting {nshm.label}")
self._imt_indices: dict[Imt, int] = self._set_imt_indices()
self._imt_indices: dict[Imt, int] = self._set_imt_indices()
@@ -72,19 +76,17 @@ class Convert2018A:
@@ -72,19 +76,17 @@ class Convert2018A:
self._site_class_mask_array = np.zeros(
self._site_class_mask_array = np.zeros(
[self._dimensions.lat.size, self._dimensions.lon.size], int
[self._dimensions.lat.size, self._dimensions.lon.size], int
)
)
# self._imt_mask_array = np.zeros([self._dimensions.lat.size, self._dimensions.lon.size], int)
# self._data_array = np.full(
# [
self._data_array = np.full(
# self._dimensions.site_class.size,
[
# self._dimensions.imt.size,
self._dimensions.site_class.size,
# self._dimensions.lat.size,
self._dimensions.imt.size,
# self._dimensions.lon.size,
self._dimensions.lat.size,
# self._dimensions.iml.size,
self._dimensions.lon.size,
# ],
self._dimensions.iml.size,
# hazard_parameters.fill_value,
],
# float,
hazard_parameters.fill_value,
# )
float,
)
self._write_netcdf_file()
self._write_netcdf_file()
self._root_group.close()
self._root_group.close()
@@ -243,6 +245,15 @@ class Convert2018A:
@@ -243,6 +245,15 @@ class Convert2018A:
if not curves_file.exists:
if not curves_file.exists:
raise Exception(f"File ({curves_file}) not found")
raise Exception(f"File ({curves_file}) not found")
 
data_array = np.full(
 
[
 
self._dimensions.lat.size,
 
self._dimensions.lon.size,
 
self._dimensions.iml.size,
 
],
 
NetcdfParameters.HazardParameters().fill_value,
 
float,
 
)
imls = self.metadata.imls.get(netcdf_info.imt)
imls = self.metadata.imls.get(netcdf_info.imt)
imt_dir = curves_file.parent
imt_dir = curves_file.parent
imt_index = self._get_imt_index(imt=netcdf_info.imt)
imt_index = self._get_imt_index(imt=netcdf_info.imt)
@@ -278,11 +289,18 @@ class Convert2018A:
@@ -278,11 +289,18 @@ class Convert2018A:
longitude, self._get_longitude_index(longitude=longitude)
longitude, self._get_longitude_index(longitude=longitude)
)
)
self._data_array[
data_array[
site_class_index, imt_index, latitude_index, longitude_index, :
latitude_index, longitude_index, :
] = values
] = values
 
 
# self._data_array[
 
# site_class_index, imt_index, latitude_index, longitude_index, :
 
# ] = values
imt_mask_array[latitude_index, longitude_index] = 1
imt_mask_array[latitude_index, longitude_index] = 1
self._site_class_mask_array += imt_mask_array
self._site_class_mask_array += imt_mask_array
 
hazard_netcdf_var[
 
site_class_index, imt_index, :, :, :
 
] = data_array
def _set_imt_indices(self) -> dict[Imt, int]:
def _set_imt_indices(self) -> dict[Imt, int]:
imt_indices: dict[Imt, int] = dict()
imt_indices: dict[Imt, int] = dict()
@@ -370,5 +388,5 @@ class Convert2018A:
@@ -370,5 +388,5 @@ class Convert2018A:
grid_mask_netcdf_var, hazard_netcdf_var = self._create_netcdf_variables()
grid_mask_netcdf_var, hazard_netcdf_var = self._create_netcdf_variables()
self._write_hazard_data(hazard_netcdf_var=hazard_netcdf_var)
self._write_hazard_data(hazard_netcdf_var=hazard_netcdf_var)
hazard_netcdf_var[:, :, :, :, :] = self._data_array
# hazard_netcdf_var[:, :, :, :, :] = self._data_array
grid_mask_netcdf_var[:, :] = self._site_class_mask_array
grid_mask_netcdf_var[:, :] = self._site_class_mask_array
Loading