Skip to content

Buildings & Urban Form

Class Key params Returns Data source Description
AverageNetBuildingHeight (none) raster GEE projects/wri-datalab/GHSL/GHS-BUILT-H-ANBH_GLOBE_R2023A Average building height per cell (GHSL).
BuiltUpHeight (none) raster GEE JRC/GHSL/P2023A/GHS_BUILT_H/2018 Built-up structure height, 2018.
GlobalBuildingAtlas (none) vector GEE asset tiles (sat-io Global Building Atlas) Building footprint polygons with height estimates.
OpenBuildings country='USA' vector GEE projects/sat-io/open-datasets/VIDA_COMBINED/{country} Open building footprints for a country (VIDA).
OvertureBuildings (none) vector Overture Maps (downloaded via CLI) Building footprint polygons from Overture Maps.
OvertureBuildingsHeight city="" vector composes OvertureBuildings, GlobalBuildingAtlas, UtGlobus, AverageNetBuildingHeight Best-estimate building height per Overture footprint, with a provenance column.
OvertureBuildingsDSM city="" raster composes OvertureBuildingsHeight + FabDEM Digital surface model from rasterized buildings plus bare-earth DEM.
UtGlobus city="" vector GEE projects/sat-io/open-datasets/UT-GLOBUS/{city} Building footprints with height/volume/surface-area attributes.
ImperviousSurface year=2018 raster GEE Tsinghua/FROM-GLC/GAIA/v10 Binary impervious/built-surface mask as of a given year.
UrbanExtents year=2020, buffer=None vector GEE projects/wri-datalab/cities/urban_land_use/.../urbanextents_unions_{year} WRI's official urban extent boundary polygon(s) for a city/year.
UrbanLandUse band='lulc', ulu_class=None raster GEE projects/wri-datalab/cities/urban_land_use/V1 WRI urban land-use classification (open space, informal/formal housing, etc.).
OpenStreetMap osm_class=OpenStreetMapClass.ALL, worldpop_version=1 vector OpenStreetMap (via osmnx) OSM features (buildings, roads, parks, etc.) filtered by category.
OpenStreetMapAmenityCount osm_class=OpenStreetMapClass.ALL, worldpop_version=1 raster OpenStreetMap rasterized onto the WorldPop grid Gridded count of OSM amenity features per cell.

API

city_metrix.layers.average_net_building_height.AverageNetBuildingHeight

AverageNetBuildingHeight(**kwargs)

Bases: Layer

OUTPUT_FILE_FORMAT class-attribute instance-attribute

OUTPUT_FILE_FORMAT = GTIFF_FILE_EXTENSION

MAJOR_NAMING_ATTS class-attribute instance-attribute

MAJOR_NAMING_ATTS = None

MINOR_NAMING_ATTS class-attribute instance-attribute

MINOR_NAMING_ATTS = None

get_data

get_data(bbox: GeoExtent, spatial_resolution: int = DEFAULT_SPATIAL_RESOLUTION, resampling_method=None)

city_metrix.layers.built_up_height.BuiltUpHeight

BuiltUpHeight(**kwargs)

Bases: Layer

OUTPUT_FILE_FORMAT class-attribute instance-attribute

OUTPUT_FILE_FORMAT = GTIFF_FILE_EXTENSION

MAJOR_NAMING_ATTS class-attribute instance-attribute

MAJOR_NAMING_ATTS = None

MINOR_NAMING_ATTS class-attribute instance-attribute

MINOR_NAMING_ATTS = None

get_data

get_data(bbox: GeoExtent, spatial_resolution: int = DEFAULT_SPATIAL_RESOLUTION, resampling_method=None)

city_metrix.layers.global_building_atlas.GlobalBuildingAtlas

GlobalBuildingAtlas(**kwargs)

Bases: Layer

OUTPUT_FILE_FORMAT class-attribute instance-attribute

OUTPUT_FILE_FORMAT = GEOJSON_FILE_EXTENSION

MAJOR_NAMING_ATTS class-attribute instance-attribute

MAJOR_NAMING_ATTS = None

MINOR_NAMING_ATTS class-attribute instance-attribute

MINOR_NAMING_ATTS = None

Global Building Atlas (GBA) building footprints with height estimates. Source: https://gee-community-catalog.org/projects/gba/ Tiles are stored per 5°x5° grid cell under: projects/sat-io/open-datasets/GLOBAL_BUILDING_ATLAS/{tile_id} Tile naming: e030_n25_e035_n20 (e/w + lon, n/s + lat, repeated for second corner) Feature properties: id, bbox, height, region, source, var

get_data

get_data(bbox: GeoExtent, spatial_resolution=None, resampling_method=None, force_data_refresh=False)

city_metrix.layers.open_buildings.OpenBuildings

OpenBuildings(country='USA', **kwargs)

Bases: Layer

OUTPUT_FILE_FORMAT class-attribute instance-attribute

OUTPUT_FILE_FORMAT = GEOJSON_FILE_EXTENSION

MAJOR_NAMING_ATTS class-attribute instance-attribute

MAJOR_NAMING_ATTS = ['country']

MINOR_NAMING_ATTS class-attribute instance-attribute

MINOR_NAMING_ATTS = None

Attributes: countr: 3-letter code for country

country instance-attribute

country = country

get_data

get_data(bbox: GeoExtent, spatial_resolution=None, resampling_method=None)

city_metrix.layers.overture_buildings.OvertureBuildings

OvertureBuildings(**kwargs)

Bases: Layer

OUTPUT_FILE_FORMAT class-attribute instance-attribute

OUTPUT_FILE_FORMAT = GEOJSON_FILE_EXTENSION

MAJOR_NAMING_ATTS class-attribute instance-attribute

MAJOR_NAMING_ATTS = None

MINOR_NAMING_ATTS class-attribute instance-attribute

MINOR_NAMING_ATTS = None

get_data

get_data(bbox: GeoExtent, spatial_resolution=None, resampling_method=None, force_data_refresh=False)

city_metrix.layers.overture_buildings_w_height.OvertureBuildingsHeight

OvertureBuildingsHeight(city='', **kwargs)

Bases: Layer

OUTPUT_FILE_FORMAT class-attribute instance-attribute

OUTPUT_FILE_FORMAT = GEOJSON_FILE_EXTENSION

MAJOR_NAMING_ATTS class-attribute instance-attribute

MAJOR_NAMING_ATTS = None

MINOR_NAMING_ATTS class-attribute instance-attribute

MINOR_NAMING_ATTS = ['city']

Attributes: city: city id from https://sat-io.earthengine.app/view/ut-globus

city instance-attribute

city = city

get_data

get_data(bbox: GeoExtent, spatial_resolution=None, resampling_method=None)

city_metrix.layers.overture_buildings_dsm.OvertureBuildingsDSM

OvertureBuildingsDSM(city='', **kwargs)

Bases: Layer

OUTPUT_FILE_FORMAT class-attribute instance-attribute

OUTPUT_FILE_FORMAT = GTIFF_FILE_EXTENSION

MAJOR_NAMING_ATTS class-attribute instance-attribute

MAJOR_NAMING_ATTS = None

MINOR_NAMING_ATTS class-attribute instance-attribute

MINOR_NAMING_ATTS = ['city']

PROCESSING_TILE_SIDE_M class-attribute instance-attribute

PROCESSING_TILE_SIDE_M = 5000

Attributes: city: city id from https://sat-io.earthengine.app/view/ut-globus

city instance-attribute

city = city

get_data

get_data(bbox: GeoExtent, spatial_resolution: int = DEFAULT_SPATIAL_RESOLUTION, resampling_method: str = DEFAULT_RESAMPLING_METHOD)

city_metrix.layers.ut_globus.UtGlobus

UtGlobus(city='', **kwargs)

Bases: Layer

OUTPUT_FILE_FORMAT class-attribute instance-attribute

OUTPUT_FILE_FORMAT = GEOJSON_FILE_EXTENSION

MAJOR_NAMING_ATTS class-attribute instance-attribute

MAJOR_NAMING_ATTS = None

MINOR_NAMING_ATTS class-attribute instance-attribute

MINOR_NAMING_ATTS = ['city']

Attributes: city: city id from https://sat-io.earthengine.app/view/ut-globus

city instance-attribute

city = city

get_data

get_data(bbox: GeoExtent, spatial_resolution=None, resampling_method=None, force_data_refresh=False)

city_metrix.layers.impervious_surface.ImperviousSurface

ImperviousSurface(year=2018, **kwargs)

Bases: Layer

OUTPUT_FILE_FORMAT class-attribute instance-attribute

OUTPUT_FILE_FORMAT = GTIFF_FILE_EXTENSION

MAJOR_NAMING_ATTS class-attribute instance-attribute

MAJOR_NAMING_ATTS = None

MINOR_NAMING_ATTS class-attribute instance-attribute

MINOR_NAMING_ATTS = None

year instance-attribute

year = year

get_data

get_data(bbox: GeoExtent, spatial_resolution: int = DEFAULT_SPATIAL_RESOLUTION, resampling_method=None)

city_metrix.layers.urban_extents.UrbanExtents

UrbanExtents(year=2020, buffer=None, **kwargs)

Bases: Layer

OUTPUT_FILE_FORMAT class-attribute instance-attribute

OUTPUT_FILE_FORMAT = GEOJSON_FILE_EXTENSION

MAJOR_NAMING_ATTS class-attribute instance-attribute

MAJOR_NAMING_ATTS = ['buffer']

MINOR_NAMING_ATTS class-attribute instance-attribute

MINOR_NAMING_ATTS = None

Attributes: year: buffer: int (meter)

year instance-attribute

year = year

buffer instance-attribute

buffer = buffer

get_data

get_data(bbox: GeoExtent, spatial_resolution=None, resampling_method=None, force_data_refresh=False)

city_metrix.layers.urban_land_use.UrbanLandUse

UrbanLandUse(band='lulc', ulu_class=None, **kwargs)

Bases: Layer

OUTPUT_FILE_FORMAT class-attribute instance-attribute

OUTPUT_FILE_FORMAT = GTIFF_FILE_EXTENSION

MAJOR_NAMING_ATTS class-attribute instance-attribute

MAJOR_NAMING_ATTS = ['band']

MINOR_NAMING_ATTS class-attribute instance-attribute

MINOR_NAMING_ATTS = ['ulu_class']

Attributes: band: raster band used for data retrieval ulu_class: urban land use class value used to filter the land use type 0 (open space), 1 (non-res), 2 (Atomistic), 3 (Informal), 4 (Formal), 5 (Housing project)

band instance-attribute

band = band

ulu_class instance-attribute

ulu_class = ulu_class

get_data

get_data(bbox: GeoExtent, spatial_resolution: int = DEFAULT_SPATIAL_RESOLUTION, resampling_method=None)

city_metrix.layers.open_street_map.OpenStreetMapClass

Bases: Enum

ALL class-attribute instance-attribute

ALL = {'aerialway': True, 'aeroway': True, 'amenity': True, 'barrier': True, 'boundary': True, 'building': True, 'craft': True, 'emergency': True, 'geological': True, 'healthcare': True, 'highway': True, 'historic': True, 'landuse': True, 'leisure': True, 'man_made': True, 'military': True, 'natural': True, 'office': True, 'place': True, 'power': True, 'public_transport': True, 'railway': True, 'route': True, 'shop': True, 'sport': True, 'telecom': True, 'tourism': True, 'water': True, 'waterway': True}

OPEN_SPACE class-attribute instance-attribute

OPEN_SPACE = {'leisure': ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'track'], 'boundary': ['protected_area', 'national_park']}

OPEN_SPACE_HEAT class-attribute instance-attribute

OPEN_SPACE_HEAT = {'leisure': ['park', 'nature_reserve', 'common', 'playground', 'pitch', 'garden', 'golf_course', 'dog_park', 'recreation_ground', 'disc_golf_course'], 'boundary': ['protected_area', 'national_park', 'forest_compartment', 'forest']}

WATER class-attribute instance-attribute

WATER = {'water': True, 'natural': ['water'], 'waterway': True}

ROAD class-attribute instance-attribute

ROAD = {'highway': ['residential', 'service', 'unclassified', 'tertiary', 'secondary', 'primary', 'turning_circle', 'living_street', 'trunk', 'motorway', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link', 'motorway_junction', 'turning_loop', 'road', 'mini_roundabout', 'passing_place', 'busway']}

BUILDING class-attribute instance-attribute

BUILDING = {'building': True}

PARKING class-attribute instance-attribute

PARKING = {'amenity': ['parking'], 'parking': True}

COMMERCE class-attribute instance-attribute

COMMERCE = {'building': ['bank', 'commercial', 'office', 'pub', 'restaurant', 'retail', 'shop', 'store', 'supermarket'], 'landuse': ['commercial', 'retail'], 'amenity': ['animal_boarding', 'animal_shelter', 'bank', 'biergarten', 'cafe', 'casino', 'childcare', 'fast_food', 'food_court', 'mortuary', 'nightclub', 'restaurant', 'studio', 'theatre', 'veterinary']}

HEALTHCARE_SOCIAL class-attribute instance-attribute

HEALTHCARE_SOCIAL = {'building': ['clinic', 'hospital'], 'amenity': ['dentist', 'doctors', 'hospital', 'nursing_home', 'pharmacy', 'social_facility']}

MEDICAL class-attribute instance-attribute

MEDICAL = {'building': ['clinic', 'hospital'], 'amenity': ['doctors', 'hospital']}

HOSPITAL class-attribute instance-attribute

HOSPITAL = {'building': ['hospital'], 'amenity': ['hospital']}

AGRICULTURE class-attribute instance-attribute

AGRICULTURE = {'building': ['poultry_house'], 'landuse': ['animal_keeping', 'aquaculture', 'farm', 'farmyard', 'greenhouse_horticulture', 'orchard', 'paddy', 'plant_nursury', 'vinyard'], 'amenity': ['animal_breeding']}

GOVERNMENT class-attribute instance-attribute

GOVERNMENT = {'building': ['government', 'government_office'], 'amenity': ['courthouse', 'fire_station', 'library', 'police', 'post_office', 'townhall']}

INDUSTRY class-attribute instance-attribute

INDUSTRY = {'building': ['factory', 'industrial', 'manufacture'], 'landuse': ['industrial', 'quarry'], 'industrial': True}

TRANSPORTATION_LOGISTICS class-attribute instance-attribute

TRANSPORTATION_LOGISTICS = {'building': ['warehouse'], 'landuse': ['harbour'], 'amenity': ['bus_station', 'ferry_terminal'], 'railway': ['station'], 'aeroway': ['terminal'], 'industrial': ['port'], 'cargo': True}

EDUCATION class-attribute instance-attribute

EDUCATION = {'building': ['college', 'school', 'university'], 'landuse': ['education'], 'amenity': ['college', 'kindergarten', 'music_school', 'prep_school', 'research_institute', 'school', 'university'], 'school': True}

PRIMARY_SECONDARY_EDUCATION class-attribute instance-attribute

PRIMARY_SECONDARY_EDUCATION = {'building': ['school'], 'amenity': ['school', 'kindergarten'], 'school': True}

HIGHER_EDUCATION class-attribute instance-attribute

HIGHER_EDUCATION = {'amenity': ['college', 'university', 'research_institute'], 'building': ['college', 'university']}

SUBWAY_STATION class-attribute instance-attribute

SUBWAY_STATION = {'railway': ['subway_entrance']}

TRANSIT_STOP class-attribute instance-attribute

TRANSIT_STOP = {'amenity': ['ferry_terminal'], 'railway': ['stop', 'platform', 'halt', 'tram_stop', 'subway_entrance', 'station'], 'highway': ['bus_stop', 'platform'], 'public_transport': ['platform', 'stop_position', 'stop_area'], 'station': ['subway'], 'aerialway': ['station']}

ECONOMIC class-attribute instance-attribute

ECONOMIC = _merge_osm_classes([COMMERCE, HEALTHCARE_SOCIAL, AGRICULTURE, GOVERNMENT, INDUSTRY, TRANSPORTATION_LOGISTICS, EDUCATION])

city_metrix.layers.open_street_map.OpenStreetMap

OpenStreetMap(osm_class: OpenStreetMapClass = OpenStreetMapClass.ALL, worldpop_version=1, **kwargs)

Bases: Layer

OUTPUT_FILE_FORMAT class-attribute instance-attribute

OUTPUT_FILE_FORMAT = GEOJSON_FILE_EXTENSION

MAJOR_NAMING_ATTS class-attribute instance-attribute

MAJOR_NAMING_ATTS = ['osm_class']

MINOR_NAMING_ATTS class-attribute instance-attribute

MINOR_NAMING_ATTS = ['worldpop_version']

Attributes: osm_class: OSM class

osm_class instance-attribute

osm_class = osm_class

worldpop_version instance-attribute

worldpop_version = worldpop_version

get_data

get_data(bbox: GeoExtent, spatial_resolution=None, resampling_method=None, force_data_refresh=False)

city_metrix.layers.open_street_map.OpenStreetMapAmenityCount

OpenStreetMapAmenityCount(osm_class: OpenStreetMapClass = OpenStreetMapClass.ALL, worldpop_version=1, **kwargs)

Bases: Layer

OUTPUT_FILE_FORMAT class-attribute instance-attribute

OUTPUT_FILE_FORMAT = GTIFF_FILE_EXTENSION

MAJOR_NAMING_ATTS class-attribute instance-attribute

MAJOR_NAMING_ATTS = ['osm_class']

MINOR_NAMING_ATTS class-attribute instance-attribute

MINOR_NAMING_ATTS = None

Attributes: osm_class: OSM class

osm_class instance-attribute

osm_class = osm_class

worldpop_version instance-attribute

worldpop_version = worldpop_version

get_data

get_data(bbox: GeoExtent, spatial_resolution=None, resampling_method=None, force_data_refresh=False)