Skip to content

Commit c010e55

Browse files
committed
update world pop age sex group layer
1 parent a501beb commit c010e55

File tree

5 files changed

+29
-73
lines changed

5 files changed

+29
-73
lines changed

city_metrix/layers/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
from .landsat_collection_2 import LandsatCollection2
1313
from .sentinel_2_level_2 import Sentinel2Level2
1414
from .world_pop import WorldPop
15-
from .world_pop_age_sex import WorldPopAgeSex
1615
from .built_up_height import BuiltUpHeight
1716
from .average_net_building_height import AverageNetBuildingHeight
1817
from .open_buildings import OpenBuildings

city_metrix/layers/world_pop.py

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,42 @@
55

66
from .layer import Layer, get_utm_zone_epsg, get_image_collection
77

8+
89
class WorldPop(Layer):
910
"""
1011
Attributes:
12+
agesex_classes: list of age-sex classes to retrieve
1113
year: year used for data retrieval
1214
spatial_resolution: raster resolution in meters (see https://github.com/stac-extensions/raster)
1315
"""
1416

15-
def __init__(self, year=2020, spatial_resolution=100, **kwargs):
17+
def __init__(self, agesex_classes=[], year=2020, spatial_resolution=100, **kwargs):
1618
super().__init__(**kwargs)
19+
self.agesex_classes = agesex_classes
1720
self.year = year
1821
self.spatial_resolution = spatial_resolution
1922

2023
def get_data(self, bbox):
21-
# load population
22-
dataset = ee.ImageCollection('WorldPop/GP/100m/pop')
23-
world_pop = ee.ImageCollection(dataset
24-
.filterBounds(ee.Geometry.BBox(*bbox))
25-
.filter(ee.Filter.inList('year', [self.year]))
26-
.select('population')
27-
.mean()
28-
)
29-
30-
data = get_image_collection(world_pop, bbox, self.spatial_resolution, "world pop")
31-
return data.population
24+
if not self.agesex_classes:
25+
# total population
26+
dataset = ee.ImageCollection('WorldPop/GP/100m/pop')
27+
world_pop = ee.ImageCollection(dataset
28+
.filterBounds(ee.Geometry.BBox(*bbox))
29+
.filter(ee.Filter.inList('year', [self.year]))
30+
.select('population')
31+
.mean()
32+
)
33+
34+
data = get_image_collection(world_pop, bbox, self.spatial_resolution, "world pop").population
35+
36+
else:
37+
# sum population for selected age-sex groups
38+
dataset = ee.ImageCollection('WorldPop/GP/100m/pop_age_sex')
39+
world_pop = dataset.filterBounds(ee.Geometry.BBox(*bbox))\
40+
.filter(ee.Filter.inList('year', [self.year]))\
41+
.select(self.agesex_classes)\
42+
.mean()
43+
world_pop = ee.ImageCollection(world_pop.reduce(ee.Reducer.sum()).rename('sum_age_sex_group'))
44+
data = get_image_collection(world_pop, bbox, self.spatial_resolution, "world pop age sex").sum_age_sex_group
45+
46+
return data

city_metrix/layers/world_pop_age_sex.py

Lines changed: 0 additions & 43 deletions
This file was deleted.

tests/test_layer_parameters.py

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@
2121
TreeCanopyHeight,
2222
TreeCover,
2323
UrbanLandUse,
24-
WorldPop,
25-
WorldPopAgeSex
24+
WorldPop
2625
)
2726
from tests.resources.bbox_constants import BBOX_BRA_LAURO_DE_FREITAS_1
2827
from tests.tools.general_tools import get_class_from_instance, get_class_default_spatial_resolution
@@ -176,15 +175,6 @@ def test_world_pop_downsampled_spatial_resolution(self):
176175

177176
assert pytest.approx(target_downsized_res, rel=RESOLUTION_TOLERANCE) == estimated_actual_res
178177
assert downsizing_is_within_tolerances
179-
180-
def test_world_pop_age_sex_downsampled_spatial_resolution(self):
181-
class_instance = WorldPopAgeSex()
182-
default_res_data, downsized_res_data, target_downsized_res, estimated_actual_res = (
183-
_get_sample_data(class_instance, BBOX, DOWNSIZE_FACTOR))
184-
downsizing_is_within_tolerances = _evaluate_raster_value(default_res_data, downsized_res_data)
185-
186-
assert pytest.approx(target_downsized_res, rel=RESOLUTION_TOLERANCE) == estimated_actual_res
187-
assert downsizing_is_within_tolerances
188178

189179
def test_halved_up_sampled_spatial_resolution(self):
190180
class_instance = Albedo()

tests/test_layers.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@
2323
TreeCanopyHeight,
2424
TreeCover,
2525
UrbanLandUse,
26-
WorldPop,
27-
WorldPopAgeSex
26+
WorldPop
2827
)
2928
from tests.resources.bbox_constants import BBOX_BRA_LAURO_DE_FREITAS_1
3029

@@ -120,7 +119,3 @@ def test_urban_land_use():
120119
def test_world_pop():
121120
data = WorldPop().get_data(BBOX)
122121
assert np.size(data) > 0
123-
124-
def test_world_pop_age_sex():
125-
data = WorldPopAgeSex().get_data(BBOX)
126-
assert np.size(data) > 0

0 commit comments

Comments
 (0)