Working on a bus stop heat equity map in South Phoenix using QGIS 3.34, and I need a recent (2022–2024), permissively licensed urban tree canopy layer to quantify shade gaps near low-income routes. Beyond ESA WorldCover and NAIP-derived classifications, what sources or reproducible workflows have given you reliable canopy at street scale — Sentinel-2 with GRASS i.segment, or anything better?
Dynamic World (Sentinel‑2) has 2023–2024 “trees” probabilities — I’ve mapped South Phoenix stops by summer-only composites, threshold >0.6, then GRASS r.neighbors to de-speckle and i.segment to polygonize. It overflags irrigated turf/vines, so mask cropland or require NDVI >0.5 in two seasons. Docs: Dynamic World V1 | Earth Engine Data Catalog | Google for Developers.
If 3DEP lidar covers South Phoenix, grab it via USGS Lidar Explorer (USGS Lidar Explorer Map) and make a 1 m canopy mask from a CHM >3 m, then clip with NAIP NDVI to drop buildings — it’s been my most reliable street‑scale shade layer, almost a cheat code. Caveat: downloads are heavy and coverage can be spotty; if that’s a blocker, the city’s tree inventory points buffered by species crown radius got me close enough for stop‑level gaps.
I’ve had the best luck with the Maricopa County orthos via AZGeo (2022–2023) and an OBIA pass in QGIS: OTB LargeScaleMeanShift on the 4‑band tiles, classify with a simple NDVI+texture threshold, then a SAGA majority filter to de‑speckle. It maps street trees at about 0.3–0.6 m, and for bus stops I buffer 20 m to summarize shade gaps — like a green highlighter on the sidewalk. Caveat: double‑check the AZGeo/County license before publishing; start here: https://azgeo-data-hub-agic.hub.arcgis.com/.
On a similar QGIS 3.34 build, I pulled the @CityofPhoenix street tree inventory (https://gisdata-phoenix.opendata.arcgis.com/), buffered species by typical crown diameters, and merged those polygons with a 2023 canopy mask to tighten shade counts at bus stops. It’s open data and current enough for 2022–2024, but it under-represents private trees, so I spot-checked with summer orthos before finalizing.
For a quick 2023 baseline, I pulled Dynamic World’s “trees” probability via the QGIS Earth Engine plugin (https://dynamicworld.app/), thresholded about 0.6, then masked with OSM buildings/roads to cut shadow and turf noise; it was good enough at the route level for a QGIS 3.34 heat equity screen. It’s permissive and fast, but at 10 m you’ll miss narrow medians and young street trees — if you later want more precision, @henry4528’s OBIA pass on the AZGeo orthos slots in nicely to sharpen stop-level gaps.