giga-spatial 0.7.0__tar.gz → 0.7.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/.env_sample +1 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/CHANGELOG.md +125 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/PKG-INFO +1 -1
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/giga_spatial.egg-info/PKG-INFO +1 -1
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/giga_spatial.egg-info/SOURCES.txt +1 -0
- giga_spatial-0.7.1/gigaspatial/__init__.py +1 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/config.py +1 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/generators/poi.py +226 -82
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/generators/zonal/base.py +41 -28
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/generators/zonal/geometry.py +79 -36
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/base.py +22 -8
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/ghsl.py +22 -8
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/giga.py +9 -4
- giga_spatial-0.7.1/gigaspatial/handlers/healthsites.py +350 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/osm.py +325 -105
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/worldpop.py +228 -9
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/processing/geo.py +1 -1
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/processing/tif_processor.py +831 -300
- giga_spatial-0.7.0/gigaspatial/__init__.py +0 -1
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/CODE_OF_CONDUCT.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/CONTRIBUTING.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/LICENSE +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/MANIFEST.in +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/PULL_REQUEST_TEMPLATE.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/README.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/.DS_Store +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/api/core.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/api/generators.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/api/grid.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/api/handlers.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/api/index.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/api/processing.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/assets/GIGA_horizontal_notext_white.webp +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/assets/datasets.png +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/assets/logo.png +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/changelog.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/contributing.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/examples/advanced.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/examples/basic.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/examples/downloading/ghsl.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/examples/downloading/osm.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/examples/index.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/examples/processing/tif.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/examples/use-cases.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/getting-started/installation.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/getting-started/quickstart.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/index.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/license.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/stylesheets/extra.css +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/user-guide/configuration.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/docs/user-guide/index.md +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/giga_spatial.egg-info/dependency_links.txt +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/giga_spatial.egg-info/requires.txt +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/giga_spatial.egg-info/top_level.txt +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/core/__init__.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/core/io/__init__.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/core/io/adls_data_store.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/core/io/data_api.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/core/io/data_store.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/core/io/database.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/core/io/local_data_store.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/core/io/readers.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/core/io/writers.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/core/schemas/__init__.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/core/schemas/entity.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/generators/__init__.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/generators/zonal/__init__.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/generators/zonal/admin.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/generators/zonal/mercator.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/grid/__init__.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/grid/h3.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/grid/mercator_tiles.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/__init__.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/boundaries.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/google_open_buildings.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/hdx.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/mapbox_image.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/maxar_image.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/microsoft_global_buildings.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/ookla_speedtest.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/opencellid.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/overture.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/rwi.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/handlers/unicef_georepo.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/processing/__init__.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/processing/algorithms.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/processing/sat_images.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/gigaspatial/processing/utils.py +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/pyproject.toml +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/requirements.txt +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/setup.cfg +0 -0
- {giga_spatial-0.7.0 → giga_spatial-0.7.1}/setup.py +0 -0
@@ -15,6 +15,7 @@ export GEOREPO_USER_EMAIL=""
|
|
15
15
|
export GIGA_SCHOOL_LOCATION_API_KEY=""
|
16
16
|
export GIGA_SCHOOL_PROFILE_API_KEY=""
|
17
17
|
export GIGA_SCHOOL_MEASUREMENTS_API_KEY=""
|
18
|
+
export HEALTHSITES_API_KEY=""
|
18
19
|
export ROOT_DATA_DIR=""
|
19
20
|
export BRONZE_DIR=""
|
20
21
|
export SILVER_DIR=""
|
@@ -2,6 +2,131 @@
|
|
2
2
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
|
5
|
+
## [v0.7.1] - 2025-10-15
|
6
|
+
|
7
|
+
### Added
|
8
|
+
|
9
|
+
- **Healthsites.io API Integration (`HealthSitesFetcher`):**
|
10
|
+
- New class `HealthSitesFetcher` to fetch and process health facility data from the Healthsites.io API.
|
11
|
+
- Supports filtering by country, bounding box extent, and date ranges (`from_date`, `to_date`).
|
12
|
+
- Provides methods for:
|
13
|
+
- `fetch_facilities()`: Retrieves health facility locations, returning a `pd.DataFrame` or `gpd.GeoDataFrame` based on output format.
|
14
|
+
- `fetch_statistics()`: Fetches aggregated statistics for health facilities based on provided filters.
|
15
|
+
- `fetch_facility_by_id()`: Retrieves details for a specific facility using its OSM type and ID.
|
16
|
+
- Includes robust handling for API pagination, different output formats (JSON, GeoJSON), and nested data structures.
|
17
|
+
- Integrates with `OSMLocationFetcher` and `pycountry` to standardize country names to OSM English names for consistent querying.
|
18
|
+
- Configurable parameters for API URL, API key, page size, flat properties, tag format, output format, and request sleep time.
|
19
|
+
|
20
|
+
- **OSMLocationFetcher Enhancements:**
|
21
|
+
- **Historical Data Fetching (`fetch_locations_changed_between`):**
|
22
|
+
- New method `fetch_locations_changed_between()` to retrieve OSM objects that were created or modified within a specified date range. This enables historical analysis and change tracking.
|
23
|
+
- Defaults `include_metadata` to `True` for this method, as it's typically used for change tracking.
|
24
|
+
- **Comprehensive OSM Country Information (`get_osm_countries`):**
|
25
|
+
- New static method `get_osm_countries()` to fetch country-level administrative boundaries directly from the OSM database.
|
26
|
+
- Supports fetching all countries or a specific country by ISO 3166-1 alpha-3 code.
|
27
|
+
- Option to include various name variants (e.g., `name:en`, `official_name`) and ISO codes.
|
28
|
+
- **Metadata Inclusion in Fetched Locations:**
|
29
|
+
- Added `include_metadata` parameter to `fetch_locations()` to optionally retrieve change tracking metadata (timestamp, version, changeset, user, uid) for each fetched OSM element.
|
30
|
+
- This metadata is now extracted and included in the DataFrame for nodes, relations, and ways.
|
31
|
+
- **Flexible Date Filtering in Overpass Queries:**
|
32
|
+
- Introduced `date_filter_type` (`newer`, `changed`) and `start_date`/`end_date` parameters to `_build_queries()` for more granular control over time-based filtering in Overpass QL.
|
33
|
+
- **Date Normalization Utility:**
|
34
|
+
- Added `_normalize_date()` helper method to convert various date inputs (string, datetime object) into a standardized ISO 8601 format for Overpass API queries.
|
35
|
+
|
36
|
+
- **TifProcessor**
|
37
|
+
- **Comprehensive Memory Management:**
|
38
|
+
- Introduced `_check_available_memory()`, `_estimate_memory_usage()`, and `_memory_guard()` methods for proactive memory assessment across various operations.
|
39
|
+
- Added warnings (`ResourceWarning`) for potentially high memory usage in batched operations, with suggestions for optimizing `n_workers`.
|
40
|
+
- **Chunked DataFrame Conversion:**
|
41
|
+
- Implemented `to_dataframe_chunked()` for memory-efficient processing of large rasters by converting them to DataFrames in manageable chunks.
|
42
|
+
- Automatic calculation of optimal `chunk_size` based on target memory usage via `_calculate_optimal_chunk_size()`.
|
43
|
+
- New helper methods: `_get_chunk_windows()`, `_get_chunk_coordinates()`.
|
44
|
+
- **Raster Clipping Functionality:**
|
45
|
+
- `clip_to_geometry()`: New method to clip rasters to arbitrary geometries (Shapely, GeoDataFrame, GeoSeries, GeoJSON-like dicts).
|
46
|
+
- `clip_to_bounds()`: New method to clip rasters to rectangular bounding boxes, supporting optional CRS transformation for the bounds.
|
47
|
+
- New helper methods for clipping: `_prepare_geometry_for_clipping()`, `_validate_geometry_crs()`, `_create_clipped_processor()`.
|
48
|
+
|
49
|
+
- **WorldPopDownloader Zip Handling:**
|
50
|
+
- Modified `download_data_unit` in `WPPopulationDownloader` to correctly handle `.zip` files (e.g., school age datasets) by downloading them to a temporary location and extracting the contained `.tif` files.
|
51
|
+
- Updated `download_data_units` to correctly flatten the list of paths returned by `download_data_unit` when zip extraction results in multiple files.
|
52
|
+
- Adjusted `WPPopulationConfig.get_data_unit_paths` to correctly identify and return paths for extracted `.tif` files from zip resources. It is now intelligently resolves paths. For school-age datasets, it returns paths to extracted `.tif` files if available; otherwise, it returns the original `.zip` path(s) to trigger download and extraction.
|
53
|
+
- Added filter support to `WPPopulationConfig.get_data_unit_paths` hence to the `WPPopulationHandler` for:
|
54
|
+
- School-age datasets: supports `sex` (e.g., "F", "M", "F_M") and `education_level` (e.g., "PRIMARY", "SECONDARY") filters on extracted `.tif` filenames.
|
55
|
+
- Non-school-age age_structures: supports `sex`, `ages`, `min_age`, and `max_age` filters on `.tif` filenames.
|
56
|
+
- **WorldPop: Filtered aggregation in `GeometryBasedZonalViewGenerator.map_wp_pop`**:
|
57
|
+
- `map_wp_pop` now enforces a single country input when `handler.config.project` is "age_structures".
|
58
|
+
- When `predicate` is "centroid_within" and the project is "age_structures", individual `TifProcessor` objects (representing age/sex combinations) are loaded, sampled with `map_rasters(stat="sum")`, and their results are summed per zone, preventing unintended merging.
|
59
|
+
|
60
|
+
- **PoiViewGenerator: Filtered aggregation in `PoiViewGenerator.map_wp_pop`**:
|
61
|
+
- `map_wp_pop` now enforces a single country input when `handler.config.project` is "age_structures".
|
62
|
+
- When `predicate` is "centroid_within" and the project is "age_structures", individual `TifProcessor` objects (representing age/sex combinations) are loaded, sampled with `map_zonal_stats(stat="sum")`, and their results are summed per POI, preventing unintended merging.
|
63
|
+
|
64
|
+
- **TifProcessor Multi-Raster Merging in Handlers and Generators:**
|
65
|
+
- Extended `_load_raster_data` in `BaseHandlerReader` to support an optional `merge_rasters` argument. When `True` and multiple raster paths are provided, `TifProcessor` now merges them into a single `TifProcessor` object during loading.
|
66
|
+
- Integrated `merge_rasters` argument into `GHSLDataReader` and `WPPopulationReader`'s `load_from_paths` and `load` methods, enabling control over raster merging at the reader level.
|
67
|
+
- Propagated `merge_rasters` to `GHSLDataHandler`'s `load_into_dataframe`, and `load_into_geodataframe` methods for consistent behavior across the handler interface.
|
68
|
+
|
69
|
+
### Changed
|
70
|
+
|
71
|
+
- **TifProcessor**
|
72
|
+
- **Unified DataFrame Conversion:**
|
73
|
+
- Refactored `to_dataframe()` to act as a universal entry point, dynamically routing to internal, more efficient methods for single and multi-band processing.
|
74
|
+
- Deprecated the individual `_to_band_dataframe()`, `_to_rgb_dataframe()`, `_to_rgba_dataframe()`, and `_to_multi_band_dataframe()` methods in favor of the new unified `_to_dataframe()`.
|
75
|
+
- `to_dataframe()` now includes a `check_memory` parameter.
|
76
|
+
- **Optimized `open_dataset` Context Manager:**
|
77
|
+
- The `open_dataset` context manager now directly opens local files when `LocalDataStore` is used, avoiding unnecessary `rasterio.MemoryFile` creation for improved performance and reduced memory overhead.
|
78
|
+
- **Enhanced `to_geodataframe` and `to_graph`:**
|
79
|
+
- Added `check_memory` parameter to `to_geodataframe()` and `to_graph()` for memory pre-checks.
|
80
|
+
- **Refined `sample_by_polygons_batched`:**
|
81
|
+
- Included `check_memory` parameter for memory checks before batch processing.
|
82
|
+
- Implemented platform-specific warnings for potential multiprocessing issues on Windows/macOS.
|
83
|
+
- **Improved Multiprocessing Initialization:**
|
84
|
+
- The `_initializer_worker()` method now prioritizes merged, reprojected, or original local file paths for opening, ensuring workers access the most relevant data.
|
85
|
+
- **Modular Masking and Coordinate Extraction:**
|
86
|
+
- Introduced new private helper methods: `_extract_coordinates_with_mask()`, `_build_data_mask()`, `_build_multi_band_mask()`, and `_bands_to_dict()` to centralize and improve data masking and coordinate extraction logic.
|
87
|
+
- **Streamlined Band-Mode Validation:**
|
88
|
+
- Moved the logic for validating `mode` and band count compatibility into a dedicated `_validate_mode_band_compatibility()` method for better code organization.
|
89
|
+
|
90
|
+
- **GigaSchoolLocationFetcher**
|
91
|
+
- `fetch_locations()` method:
|
92
|
+
- Added `process_geospatial` parameter (defaults to `False`) to optionally process geospatial data and return a `gpd.GeoDataFrame`.
|
93
|
+
- `_process_geospatial_data()` method:
|
94
|
+
- Modified to return a `gpd.GeoDataFrame` by converting the `pd.DataFrame` with a `geometry` column and `EPSG:4326` CRS.
|
95
|
+
|
96
|
+
- **OSMLocationFetcher Refactoring:**
|
97
|
+
- **Unified Query Execution and Processing:** Refactored the core logic for executing Overpass queries and processing their results into a new private method `_execute_and_process_queries()`. This centralizes common steps and reduces code duplication between `fetch_locations()` and the new `fetch_locations_changed_between()`.
|
98
|
+
- **Enhanced `_build_queries`:** Modified `_build_queries` to accept `date_filter_type`, `start_date`, `end_date`, and `include_metadata` to construct more dynamic and feature-rich Overpass QL queries.
|
99
|
+
- **Updated `fetch_locations` Signature:**
|
100
|
+
- Replaced `since_year` parameter with `since_date` (which can be a `str` or `datetime` object) for more precise time-based filtering.
|
101
|
+
- Added `include_metadata` parameter.
|
102
|
+
- **Improved Logging of Category Distribution:**
|
103
|
+
- Modified the logging for category distribution to correctly handle cases where categories are combined into a list (when `handle_duplicates='combine'`).
|
104
|
+
- **`since_year` Parameter:** Removed `since_year` from `fetch_locations()` as its functionality is now superseded by the more flexible `since_date` parameter and the `_build_queries` enhancements.
|
105
|
+
|
106
|
+
- **`PoiViewGenerator` Mapping Methods (`map_zonal_stats`, `map_nearest_points`, `map_google_buildings`, `map_ms_buildings`, `map_built_s`, `map_smod`):**
|
107
|
+
- Changed `map_zonal_stats` and `map_nearest_points` to return `pd.DataFrame` results (including `'poi_id'` and new mapped columns) instead of directly updating the internal view.
|
108
|
+
- Updated `map_google_buildings`, `map_ms_buildings`, `map_built_s`, and `map_smod` to capture the `pd.DataFrame` returned by their respective underlying mapping calls (`map_nearest_points` or `map_zonal_stats`) and then explicitly call `self._update_view()` with these results.
|
109
|
+
- This enhances modularity and allows for more flexible result handling and accumulation.
|
110
|
+
|
111
|
+
- **`ZonalViewGenerator.map_rasters` Enhancements:**
|
112
|
+
- Modified `map_rasters` to accept `raster_data` as either a single `TifProcessor` or a `List[TifProcessor]`.
|
113
|
+
- Implemented internal merging of `List[TifProcessor]` into a single `TifProcessor` before performing zonal statistics.
|
114
|
+
- Replaced `sample_multiple_tifs_by_polygons` with the `TifProcessor.sample_by_polygons` method.
|
115
|
+
|
116
|
+
### Fixed
|
117
|
+
|
118
|
+
- **TifProcessor**:
|
119
|
+
- **`to_graph()` Sparse Matrix Creation:**
|
120
|
+
- Corrected the sparse matrix creation logic in `to_graph()` to ensure proper symmetric graph representation when `graph_type="sparse"`.
|
121
|
+
- **Coordinate System Handling in `_initializer_worker`:**
|
122
|
+
- Ensured that `_initializer_worker` correctly handles different data storage scenarios to provide the correct dataset handle to worker processes, preventing `RuntimeError` due to uninitialized raster datasets.
|
123
|
+
|
124
|
+
### Removed
|
125
|
+
|
126
|
+
- **OSMLocationFetcher**
|
127
|
+
- **Redundant Category Distribution Logging:** Removed the explicit category distribution logging for `handle_duplicates == "separate"` since the `value_counts()` method on the 'category' column already provides this.
|
128
|
+
|
129
|
+
|
5
130
|
## [v0.7.0] - 2025-09-17
|
6
131
|
|
7
132
|
### Added
|
@@ -70,6 +70,7 @@ gigaspatial/handlers/ghsl.py
|
|
70
70
|
gigaspatial/handlers/giga.py
|
71
71
|
gigaspatial/handlers/google_open_buildings.py
|
72
72
|
gigaspatial/handlers/hdx.py
|
73
|
+
gigaspatial/handlers/healthsites.py
|
73
74
|
gigaspatial/handlers/mapbox_image.py
|
74
75
|
gigaspatial/handlers/maxar_image.py
|
75
76
|
gigaspatial/handlers/microsoft_global_buildings.py
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "0.7.1"
|
@@ -38,6 +38,7 @@ class Config(BaseSettings):
|
|
38
38
|
GIGA_SCHOOL_MEASUREMENTS_API_KEY: str = Field(
|
39
39
|
default="", alias="GIGA_SCHOOL_MEASUREMENTS_API_KEY"
|
40
40
|
)
|
41
|
+
HEALTHSITES_API_KEY: str = Field(default="", alias="HEALTHSITES_API_KEY")
|
41
42
|
|
42
43
|
ROOT_DATA_DIR: Path = Field(
|
43
44
|
default=Path("."),
|