LULC mapping methods - wri/cities-OpenUrban GitHub Wiki

Land-use/land-cover version 1

Land use/land cover mapping of urban surfaces. This page documents the methods used to generate the LULC Version 1 maps for the SSC U.S. cities (November 28, 2023). LULC Version 2 methods will be slightly modified. LULC data is generated in the local State Plane coordinate system for U.S. cities. Urban area boundaries are from the 2020 U.S. Decennial Census.

Google Earth Engine App to explore the data.

Datasets

Methods

  1. Create a bounding box of the city geometry, buffer by 804.672 m (half a mile), and create a covering grid (currently 0.15° x 0.15°) and select only the gridcells that intersect with the city geometry. These are the tile extents.

  2. The remaining steps are repeated for each grid cell. Buffer the gridcell by 100 m so that there will be overlap between the tiles and create an Earth Engine (ee) object.

  3. ESA Worldcover

  • Load the ESA Worldcover data in Earth Engine ('ESA/WorldCover/v200'), reclassify, reproject to the local state plane epsg, and download at a 1-m resolution to match LULC.
Combined LULC category Value Original ESA category
NoData 0 ND
Green 1 Tree, Shrubland, Grassland, Cropland
Built up 2 Built up
Barren 3 Barren
Water 4 Snow/ice, Permanent water bodies, Herbaceous wetland, Mangroves
  1. Public open space
  • Download the open space data from OSM. Downloads were timing out so the package retry was used to handle exceptions. Combine polygons and multipolygons and rasterize to match the ESA raster with a LULC value of 10.
OSM Key OSM Value
"leisure" "pitch", "park", "garden", "playground", "nature_reserve", "golf_course", "common", "dog_park", "recreation_ground", "disc_golf_course"
"boundary" "protected_area", "national_park", "forest_compartment", "forest"
  1. Water
  • Download the water data from OSM. Combine polygons and multipolygons and rasterize to match the ESA raster with a LULC value of 20.
OSM Key OSM Value
"water"
"natural" "water"
"waterway"
  1. Roads
  • Download the roads data from OSM. Values from TagInfo. Chosen based on description, excluding footways, etc. Values w/o descriptions not included. Use only line geometries.
  • Get the average number of lanes per highway class. For roads that do not have the a value for lanes, use the ceiling of the class average. Buffer the roads by the number of lanes * 3.048 m (10 ft) (urban road width in U.S.). Parking and other non-travel lane road uses currently are not considered and show be addressed.
  • Rasterize to match the ESA raster with a LULC value of 30.
OSM Key OSM Value
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"
  1. Buildings
  • Load the WRI Urban Land Use (ULU) data, reduce from image collection to image using the first non-null, and mask the roads. Download.
  • Reclass the raster values.
Combined category Value Original ULU category
Non-residential 1 0 (open space), 1 (non-res)
Residential 2 2 (Atomistic), 3 (Informal), 4 (Formal), 5 (Housing project)
Roads 3 6 (Roads)
  • Load the ANBH layer in Earth Engine ("projects/wri-datalab/GHSL/GHS-BUILT-H-ANBH_R2023A") and download.
  • Get buildings from OSM (key = building) (this will likely be replaced or supplemented with the combined Google-Microsoft Building Footprints). Combine polygons and multipolygons.
  • Reproject the buildings to match the ULU data and use the package exactextractr to get the coverage fraction of ULU per building. This value indicates whether the building is in a residential or non-residential area.
    • Assign the max coverage class to the building if it is not roads,
    • If the max class is roads assign the next most common class
    • If the max class is roads, and there is no other class, assign non-residential
  • Reproject the buildings to match the ANBH and extract the mean height per building. This value indicates the average height of the surrounding area.
  • Reproject the buildings to the local state plane and calculate the area of the building footprint.
  • Use the prediction model to classify the buildings a low slope (41) and high slope (42) and rasterize to match the ESA raster with LULC values of 41 and 42. The prediction model is a classification tree that sorts the buildings into low-slope and high-slope basing the decision on the average net building height, the ULU classification (residential or non-residential) and the building footprint size.

image

  1. Parking
  • Get parking from OSM, combine polygons and multipolygons, rasterize to match ESA with LULC value of 50.
OSM key OSM value
amenity "parking"
  1. Combine the rasters taking the maximum value of each pixel. Write the raster to a Google Engine Asset