Skip to content

Commit 229fdfb

Browse files
move the gpw_population data_dir argument to configuration
1 parent ce30fa4 commit 229fdfb

3 files changed

Lines changed: 11 additions & 30 deletions

File tree

climada/conf/climada.conf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
"filename_gpw": "gpw_v4_population_count_rev%02i_%04i_30_sec.tif",
2727
"dirname_gpw": "gpw-v4-population-count-rev%02i_%04i_30_sec_tif",
2828
"gpw_version": 11,
29-
"years_available": [2020, 2015, 2010, 2005, 2000]
29+
"years_available": [2020, 2015, 2010, 2005, 2000],
30+
"data_dir": "{local_data.system}"
3031
},
3132
"nightlights": {
3233
"blackmarble_years": [2012, 2016],

climada/entity/exposures/litpop/gpw_population.py

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,13 @@
2626
from affine import Affine
2727

2828
from climada import CONFIG
29-
from climada.util.constants import SYSTEM_DIR
29+
30+
DATA_DIR = CONFIG.exposures.litpop.gpw_population.data_dir.dir()
3031

3132
LOGGER = logging.getLogger(__name__)
3233

3334

34-
def load_gpw_pop_shape(
35-
geometry, reference_year, gpw_version, data_dir=SYSTEM_DIR, layer=0, verbose=True
36-
):
35+
def load_gpw_pop_shape(geometry, reference_year, gpw_version, layer=0, verbose=True):
3736
"""Read gridded population data from TIFF and crop to given shape(s).
3837
3938
Note: A (free) NASA Earthdata login is necessary to download the data.
@@ -51,9 +50,6 @@ def load_gpw_pop_shape(
5150
gpw_version : int
5251
Version number of GPW population data, i.e. 11 for v4.11.
5352
The default is CONFIG.exposures.litpop.gpw_population.gpw_version.int()
54-
data_dir : Path, optional
55-
Path to data directory holding GPW data folders.
56-
The default is SYSTEM_DIR.
5753
layer : int, optional
5854
relevant data layer in input TIFF file to return.
5955
The default is 0 and should not be changed without understanding the
@@ -76,9 +72,7 @@ def load_gpw_pop_shape(
7672
"""
7773

7874
# check whether GPW input file exists and get file path
79-
file_path = get_gpw_file_path(
80-
gpw_version, reference_year, data_dir=data_dir, verbose=verbose
81-
)
75+
file_path = get_gpw_file_path(gpw_version, reference_year, verbose=verbose)
8276

8377
# open TIFF and extract cropped data from input file:
8478
with rasterio.open(file_path, "r") as src:
@@ -100,7 +94,7 @@ def load_gpw_pop_shape(
10094
return pop_data[layer, :, :], meta, global_transform
10195

10296

103-
def get_gpw_file_path(gpw_version, reference_year, data_dir=None, verbose=True):
97+
def get_gpw_file_path(gpw_version, reference_year, verbose=True):
10498
"""Check available GPW population data versions and year closest to
10599
`reference_year` and return full path to TIFF file.
106100
@@ -111,8 +105,6 @@ def get_gpw_file_path(gpw_version, reference_year, data_dir=None, verbose=True):
111105
reference_year : int (optional)
112106
Data year is selected as close to reference_year as possible.
113107
The default is 2020.
114-
data_dir : pathlib.Path (optional)
115-
Absolute path where files are stored. Default: SYSTEM_DIR
116108
verbose : bool, optional
117109
Enable verbose logging about the used GPW version and reference year. Default: True.
118110
@@ -124,8 +116,6 @@ def get_gpw_file_path(gpw_version, reference_year, data_dir=None, verbose=True):
124116
-------
125117
pathlib.Path : path to input file with population data
126118
"""
127-
if data_dir is None:
128-
data_dir = SYSTEM_DIR
129119

130120
# get years available in GPW data from CONFIG and convert to array:
131121
years_available = np.array(
@@ -154,7 +144,7 @@ def get_gpw_file_path(gpw_version, reference_year, data_dir=None, verbose=True):
154144
gpw_version,
155145
year,
156146
)
157-
for file_path in [data_dir / gpw_filename, data_dir / gpw_dirname / gpw_filename]:
147+
for file_path in [DATA_DIR / gpw_filename, DATA_DIR / gpw_dirname / gpw_filename]:
158148
if file_path.is_file():
159149
if verbose:
160150
LOGGER.info("GPW Version v4.%2i", gpw_version)
@@ -174,7 +164,7 @@ def get_gpw_file_path(gpw_version, reference_year, data_dir=None, verbose=True):
174164
)
175165

176166

177-
def grid_aligned_with_gpw(reference_year, gpw_version, res_arcsec, data_dir=SYSTEM_DIR):
167+
def grid_aligned_with_gpw(reference_year, gpw_version, res_arcsec):
178168
"""
179169
Defines a grid based on population metadata.
180170
@@ -186,8 +176,6 @@ def grid_aligned_with_gpw(reference_year, gpw_version, res_arcsec, data_dir=SYST
186176
Version number of GPW population data.
187177
res_arcsec : int or None
188178
Desired resolution in arcseconds. If None, aligns to population grid.
189-
data_dir : str
190-
Path to input data directory.
191179
192180
Returns
193181
-------
@@ -197,9 +185,7 @@ def grid_aligned_with_gpw(reference_year, gpw_version, res_arcsec, data_dir=SYST
197185
"""
198186
res_deg = res_arcsec / 3600
199187

200-
file_path = get_gpw_file_path(
201-
gpw_version, reference_year, data_dir=data_dir, verbose=False
202-
)
188+
file_path = get_gpw_file_path(gpw_version, reference_year, verbose=False)
203189
with rasterio.open(file_path, "r") as src:
204190
global_crs = src.crs
205191
gpw_transform = src.transform

climada/entity/exposures/litpop/litpop.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,6 @@ def from_countries(
203203
target_grid = cls._define_target_grid(
204204
reference_year=reference_year,
205205
gpw_version=gpw_version,
206-
data_dir=data_dir,
207206
res_arcsec=res_arcsec,
208207
)
209208
# litpop_list is initiated, a list containing one Exposure instance per
@@ -778,7 +777,6 @@ def from_shape(
778777
target_grid = cls._define_target_grid(
779778
reference_year=reference_year,
780779
gpw_version=gpw_version,
781-
data_dir=data_dir,
782780
res_arcsec=res_arcsec,
783781
)
784782

@@ -848,7 +846,7 @@ def from_shape(
848846
return exp
849847

850848
@staticmethod
851-
def _define_target_grid(reference_year, gpw_version, data_dir, res_arcsec):
849+
def _define_target_grid(reference_year, gpw_version, res_arcsec):
852850
"""
853851
Defines the target grid based on population or nightlight metadata.
854852
@@ -858,8 +856,6 @@ def _define_target_grid(reference_year, gpw_version, data_dir, res_arcsec):
858856
The reference year for population and nightlight data.
859857
gpw_version : int
860858
Version number of GPW population data.
861-
data_dir : str
862-
Path to input data directory.
863859
res_arcsec : int or None
864860
Desired resolution in arcseconds. If None, aligns to population grid.
865861
@@ -875,7 +871,6 @@ def _define_target_grid(reference_year, gpw_version, data_dir, res_arcsec):
875871
reference_year=reference_year,
876872
gpw_version=gpw_version,
877873
res_arcsec=res_arcsec,
878-
data_dir=data_dir,
879874
)
880875

881876
@staticmethod
@@ -1099,7 +1094,6 @@ def _get_litpop_single_polygon(
10991094
geometry=polygon,
11001095
reference_year=reference_year,
11011096
gpw_version=gpw_version,
1102-
data_dir=data_dir,
11031097
verbose=verbose,
11041098
)
11051099
total_population = pop.sum()

0 commit comments

Comments
 (0)