- fixed several bugs
- re-architected the major functions for Layers and Metrics
- added s3 caching of tiled layers
- added s3_bucket parameter
- greatly improved boundary clipping for CTCM layers
- Bounds clipping for the CTCM layers collided with the standard clipping used by other CIF layers, so created TreeCanopyHeightCTCM as a workaround.
- Publishing now stores error reports in "metadata" folders in S3 targets.
- Re-added opportunistic caching in retrieve_metric/data functions.
- Removed opportunistic caching
- Added sub-tiled caching for large layers
- Added default date range for Albedo layers
- Added start_date and end_date parameters to Era5MetPreprocessingUmep and Era5MetPreprocessingUpenn metrics classes
- Changed default date values for Era5HottestDay layer to None since we do not hard-coded default values.
- Added seasonal_utc_offset parameter to ERA5 classes
- Removed timezonefinder dependency
- Added local API results caching
- Renamed local cache to
- Added sub-tiling of layers as configured by the optional PROCESSING_TILE_SIDE_M constant in layer classes
- Added metric-specific sub-tiling using the optional CUSTOM_TILE_SIDE_M constant in metric classes
- Redesigned the GeoZone class for improved efficiency and to consistently process city-based metrics in UTM coordinates.
- Modified the create_fishnet_grid function to enclose all tiles fully within the specified AOI by trimming extents of files in NE corner to the AOI.
- CDB-262: Updated written-file naming conventions.
- Added s3_env parameters to write functions
- Changed write/read for metrics to CSV format, instead of geojson.
- Adjusted temp-file handling for both windows and Linux.
- Improved caching logic.
- CDB-322. Fixed error in UTGlobus-to-Overture conflation that had produced many-to-one matches and resulting errors in height computation.
- Modified computation of UTGlobus heights to use mode or median computation. See updated https://gfw.atlassian.net/wiki/spaces/CIT/pages/1971912734/Primary+Raster+Layers+for+Thermal+Comfort+Modeling
- Moved OpenUrban layer from C-TCM to CIF. Former location: https://github.com/wri/cities-thermal-comfort-modeling/blob/main/src/workers/open_urban.py
- Re-implemented OvertureBuildingsDSM to fix a bug and improve cross-tile correspondence in building elevation.
- Updated NasaDEM and AlosDSM to emit smoother surface interpolations for non-default resolutions.
- Renamed overture_buildings_w_height_raster to overture_buildings_dsm and updated to return raster of Overture buildings combined with DEM.
- Added ut_globus_city_handler package for storing geopackage and query function for UT Globus cities. 2. This is a temporary solution until we have time to develop a service for finding Globus city by geometry.
- Combined all bases classes into one file
- Removed retrieve_cached_city_data function call from derived classes
- Removed allow_cache_retrieval argument from get_data() method in layers
- Removed CifCacheSettings
- Updated zonal statistics to handle large, tiled retrievals
- Updated zonal statistics to handle multi-level city and admin polygons
- Added test_write_all_metrics_by_city.py to write metrics by city
- Converted some functions to static class methods to improve performance
- Changed AWS profile for credentials file to "cities-data-dev"
- TODOs:
- Performance of large cities needs to be tested since only small and moderate size have been run so far
- Update the naming conventions wiki: https://gfw.atlassian.net/wiki/spaces/CIT/pages/1886126084/Proposal+for+layer-id+naming
- Added timeout_decorator to environment.yml
- Warning: Some tests in tests/resources folder write intermediate results to a shared S3 bucket, so there is some potential for collision between concurrent runs.
- Simplified tests and renamed some tests
- Refocused layer-write tests on query by city name instead of by bbox.
- Merged some Layers and Metrics functions
- Increased granularity for controling whether individual tests are run by converting the old EXECUTE_IGNORED_TESTS boolean values into enums.
- Created a Metric base class with get_data() and two write functions
- Converted each existing Metric function into a Metric class with get_data() function
- Added tests to write output of each class to a local system file
- Modified skip-if decorator for write tests to use DumpRunLevel enum
- Added download of cached CIF results from S3 or a local directory when available.
- Caching is enabled by running the set_cache_settings function prior to getting or writing data.
- Added standardized naming of cached file storage such as into S3 buckets.
- The current naming convention must be reviewed by users. This wiki discusses naming conventions https://gfw.atlassian.net/wiki/spaces/CIT/pages/1886126084/Proposal+for+layer-id+naming
- Added the layer_dao.py file for handling calls to the cities-data-api API and S3.
- Added requirements for AWS credentials file.
- Added ability to specify city_id+aoi for GeoExtent.
- Bounding coordinates for city_id+aoi are currently read from the cities-data-api.wri.org url since it is stable. Longer term, this url must be replace by the dev.cities-data-api.wri.org url once that API has stabilized.
- Added GeoExtent class supporting bbox coordinates in both UTM and geographic coordinates.
- redefined the bbox parameter on get_data() function as GeoExtent class.
- included several functions on GeoExtent to support conversion from/to projections and other functionality.
- Moved spatial_resolution and resampling_method from Layer class definitions to get_data() functions in all Layers.
- Extensive re-write of fishnet function to output in both UTM and geographic space.