PyGeoFetch 1.0.8__tar.gz → 1.0.9__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.
Files changed (84) hide show
  1. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/CHANGELOG.md +2 -2
  2. {pygeofetch-1.0.8/pygeofetch.egg-info → pygeofetch-1.0.9}/PKG-INFO +92 -92
  3. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/README.md +91 -91
  4. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/__init__.py +2 -2
  5. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/cli/main.py +2 -2
  6. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/meta.yaml +1 -1
  7. {pygeofetch-1.0.8 → pygeofetch-1.0.9/pygeofetch.egg-info}/PKG-INFO +92 -92
  8. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pyproject.toml +1 -1
  9. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/LICENSE +0 -0
  10. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/MANIFEST.in +0 -0
  11. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/cli/__init__.py +0 -0
  12. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/cli/auth_commands.py +0 -0
  13. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/cli/config_commands.py +0 -0
  14. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/cli/download_commands.py +0 -0
  15. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/cli/index_commands.py +0 -0
  16. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/cli/pipeline_process_commands.py +0 -0
  17. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/cli/postprocess_commands.py +0 -0
  18. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/cli/preprocess_commands.py +0 -0
  19. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/cli/sar_commands.py +0 -0
  20. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/cli/search_commands.py +0 -0
  21. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/config/__init__.py +0 -0
  22. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/config/defaults.yaml +0 -0
  23. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/config/settings.py +0 -0
  24. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/core/__init__.py +0 -0
  25. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/core/authenticator.py +0 -0
  26. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/core/cache_manager.py +0 -0
  27. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/core/downloader.py +0 -0
  28. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/core/engine.py +0 -0
  29. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/core/logging.py +0 -0
  30. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/core/orbits.py +0 -0
  31. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/core/scheduler.py +0 -0
  32. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/core/searcher.py +0 -0
  33. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/models/__init__.py +0 -0
  34. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/models/download_task.py +0 -0
  35. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/models/satellite_data.py +0 -0
  36. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/models/search_query.py +0 -0
  37. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/models/user_auth.py +0 -0
  38. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/processing/__init__.py +0 -0
  39. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/processing/base.py +0 -0
  40. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/processing/batch.py +0 -0
  41. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/processing/indices.py +0 -0
  42. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/processing/pipeline.py +0 -0
  43. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/processing/postprocessor.py +0 -0
  44. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/processing/preprocessor.py +0 -0
  45. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/processing/sar.py +0 -0
  46. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/__init__.py +0 -0
  47. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/airbus_oneatlas.py +0 -0
  48. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/alaska_satellite_facility.py +0 -0
  49. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/aws_earth.py +0 -0
  50. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/base.py +0 -0
  51. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/copernicus.py +0 -0
  52. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/digitalglobe.py +0 -0
  53. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/earth_explorer_additional.py +0 -0
  54. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/element84.py +0 -0
  55. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/esa_scihub.py +0 -0
  56. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/geoserver_generic.py +0 -0
  57. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/google_earth_engine.py +0 -0
  58. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/inpe_cbers.py +0 -0
  59. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/isro_bhuvan.py +0 -0
  60. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/jaxa_earth.py +0 -0
  61. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/maxar_gbdx.py +0 -0
  62. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/nasa_earthdata.py +0 -0
  63. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/nasa_earthdata_cloud.py +0 -0
  64. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/noaa_big_data.py +0 -0
  65. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/opentopography.py +0 -0
  66. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/planet.py +0 -0
  67. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/planetary_computer.py +0 -0
  68. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/sentinel_hub.py +0 -0
  69. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/terrabotics.py +0 -0
  70. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/providers/usgs.py +0 -0
  71. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/utils/__init__.py +0 -0
  72. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/utils/file_utils.py +0 -0
  73. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/utils/geo_utils.py +0 -0
  74. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/utils/logging_setup.py +0 -0
  75. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/utils/retry_handler.py +0 -0
  76. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch/utils/validators.py +0 -0
  77. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch.egg-info/SOURCES.txt +0 -0
  78. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch.egg-info/dependency_links.txt +0 -0
  79. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch.egg-info/entry_points.txt +0 -0
  80. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch.egg-info/not-zip-safe +0 -0
  81. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch.egg-info/requires.txt +0 -0
  82. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/pygeofetch.egg-info/top_level.txt +0 -0
  83. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/setup.cfg +0 -0
  84. {pygeofetch-1.0.8 → pygeofetch-1.0.9}/tests/test_pgv_integration_contract.py +0 -0
@@ -1,9 +1,9 @@
1
1
  # Changelog
2
2
 
3
3
  All notable changes to PyGeoFetch are documented here.
4
- Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.8/).
4
+ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.9/).
5
5
 
6
- ## [1.0.8] — 2026-07-12
6
+ ## [1.0.9] — 2026-07-12
7
7
 
8
8
  ### Added
9
9
  - Federated search across 22+ satellite data providers
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pygeofetch
3
- Version: 1.0.8
3
+ Version: 1.0.9
4
4
  Summary: Universal satellite data pipeline — unified access to 22+ providers
5
5
  Author: PyGeoFetch Contributors
6
6
  License: MIT License
@@ -85,9 +85,9 @@ Dynamic: license-file
85
85
 
86
86
  <div align="center">
87
87
 
88
- <!-- <img src="https://appiahkubis14.github.io/portfolio/logo/samuel_logo_dark.svg" alt="PyGeoFetch Logo" width="200"/> -->
88
+ <!-- <img src="https://appiahkubis14.github.io/portfolio/logo/samuel_logo_dark.svg" alt="pygeofetch Logo" width="200"/> -->
89
89
 
90
- # PyGeoFetch 🛰️
90
+ # pygeofetch 🛰️
91
91
 
92
92
  [![PyPI version](https://badge.fury.io/py/pygeofetch.svg)](https://pypi.org/project/pygeofetch/)
93
93
  [![Python Versions](https://img.shields.io/pypi/pyversions/pygeofetch.svg)](https://pypi.org/project/pygeofetch/)
@@ -103,9 +103,9 @@ Dynamic: license-file
103
103
 
104
104
  ## 📖 Introduction
105
105
 
106
- PyGeoFetch is a **production-ready satellite data acquisition and processing framework** that provides unified, authenticated access to 22+ Earth observation repositories — including Sentinel, Landsat, Planet, Maxar, Airbus, Copernicus, USGS, NASA, JAXA, and more — through a single consistent CLI and Python API.
106
+ pygeofetch is a **production-ready satellite data acquisition and processing framework** that provides unified, authenticated access to 22+ Earth observation repositories — including Sentinel, Landsat, Planet, Maxar, Airbus, Copernicus, USGS, NASA, JAXA, and more — through a single consistent CLI and Python API.
107
107
 
108
- The package abstracts away the authentication complexity, API fragmentation, and format inconsistencies of individual satellite providers, and adds a complete geospatial processing engine on top. PyGeoFetch provides six core capabilities:
108
+ The package abstracts away the authentication complexity, API fragmentation, and format inconsistencies of individual satellite providers, and adds a complete geospatial processing engine on top. pygeofetch provides six core capabilities:
109
109
 
110
110
  1. **Authenticated access** to 22+ providers, with secure credential storage via system keyring (macOS Keychain, Windows Credential Manager, Linux Secret Service).
111
111
  2. **Unified federated search** across all providers, returning standardized STAC 1.0 GeoJSON, GeoParquet, or CSV results sortable by cloud cover, date, or relevance score.
@@ -122,7 +122,7 @@ Accessing satellite data at scale is surprisingly fragmented. Each provider —
122
122
 
123
123
  Existing tools address parts of this problem: EODAG supports several providers but lacks pipeline orchestration and commercial coverage; `pystac-client` handles STAC-compliant endpoints only; `sentinelsat` is Sentinel-specific. No single tool covers the full breadth of providers, processing, and automation needed for operational geospatial workflows.
124
124
 
125
- | Feature | PyGeoFetch | EODAG | pystac-client | satpy | sentinelsat |
125
+ | Feature | pygeofetch | EODAG | pystac-client | satpy | sentinelsat |
126
126
  |---|---|---|---|---|---|
127
127
  | **Providers** | **22+** | 10+ | STAC only | Limited | Sentinel only |
128
128
  | **Processing Engine** | ✅ Full | ❌ | ❌ | Partial | ❌ |
@@ -233,26 +233,26 @@ Existing tools address parts of this problem: EODAG supports several providers b
233
233
 
234
234
  ```bash
235
235
  # Core — free providers work immediately, no extras needed
236
- pip install PyGeoFetch
236
+ pip install pygeofetch
237
237
 
238
238
  # + Raster/vector processing (rasterio, geopandas, shapely)
239
- pip install "PyGeoFetch[geo]"
239
+ pip install "pygeofetch[geo]"
240
240
 
241
241
  # + Cloud provider S3 access
242
- pip install "PyGeoFetch[cloud]"
242
+ pip install "pygeofetch[cloud]"
243
243
 
244
244
  # + Cron scheduling
245
- pip install "PyGeoFetch[schedule]"
245
+ pip install "pygeofetch[schedule]"
246
246
 
247
247
  # Everything
248
- pip install "PyGeoFetch[all]"
248
+ pip install "pygeofetch[all]"
249
249
  ```
250
250
 
251
251
  **Requirements:** Python 3.9+
252
252
 
253
253
  Verify your installation:
254
254
  ```bash
255
- PyGeoFetch doctor
255
+ pygeofetch doctor
256
256
  # ✓ Python 3.11 ✓ httpx ✓ pydantic ✓ rich
257
257
  # ✓ AWS Earth Search: HTTP 200
258
258
  # ✓ Planetary Computer: HTTP 200
@@ -267,12 +267,12 @@ PyGeoFetch doctor
267
267
 
268
268
  ```bash
269
269
  # Add credentials (free providers need no credentials at all)
270
- PyGeoFetch auth add usgs --username USER --password PASS
271
- PyGeoFetch auth add copernicus --username email@example.com --password PASS
272
- PyGeoFetch auth add planet --api-key YOUR_KEY
270
+ pygeofetch auth add usgs --username USER --password PASS
271
+ pygeofetch auth add copernicus --username email@example.com --password PASS
272
+ pygeofetch auth add planet --api-key YOUR_KEY
273
273
 
274
274
  # Search (free — no login)
275
- PyGeoFetch search run \
275
+ pygeofetch search run \
276
276
  --bbox "-74.1,40.6,-73.7,40.9" \
277
277
  --start-date 2024-01-01 \
278
278
  --cloud-cover 0-15 \
@@ -281,7 +281,7 @@ PyGeoFetch search run \
281
281
  --output results.geojson
282
282
 
283
283
  # Download with band selection
284
- PyGeoFetch download run \
284
+ pygeofetch download run \
285
285
  --from-search results.geojson \
286
286
  --output ./data/ \
287
287
  --parallel 4 \
@@ -289,7 +289,7 @@ PyGeoFetch download run \
289
289
  --max-items 3
290
290
 
291
291
  # Download with full post-processing chain
292
- PyGeoFetch download run \
292
+ pygeofetch download run \
293
293
  --from-search results.geojson \
294
294
  --output ./data/ \
295
295
  --parallel 4 \
@@ -301,11 +301,11 @@ PyGeoFetch download run \
301
301
 
302
302
  ```python
303
303
  from pathlib import Path
304
- from pygeofetch import PyGeoFetch
304
+ from pygeofetch import pygeofetch
305
305
  from pygeofetch.models.search_query import SearchQuery, BoundingBox
306
306
  from pygeofetch.models.download_task import DownloadOptions
307
307
 
308
- client = PyGeoFetch()
308
+ client = pygeofetch()
309
309
 
310
310
  # Credentials
311
311
  client.add_credentials("usgs", username="user", password="pass")
@@ -400,18 +400,18 @@ steps:
400
400
 
401
401
  ```bash
402
402
  # Validate without running
403
- PyGeoFetch proc-pipeline validate weekly-sentinel2.yaml
403
+ pygeofetch proc-pipeline validate weekly-sentinel2.yaml
404
404
 
405
405
  # Run once
406
- PyGeoFetch proc-pipeline run weekly-sentinel2.yaml --input scene.tif
406
+ pygeofetch proc-pipeline run weekly-sentinel2.yaml --input scene.tif
407
407
 
408
408
  # Schedule (recurring)
409
- PyGeoFetch pipeline schedule weekly-sentinel2.yaml --name "ndvi-weekly"
409
+ pygeofetch pipeline schedule weekly-sentinel2.yaml --name "ndvi-weekly"
410
410
 
411
411
  # Generate a starter template
412
- PyGeoFetch proc-pipeline template ndvi
413
- PyGeoFetch proc-pipeline template flood_map
414
- PyGeoFetch proc-pipeline template change_detection
412
+ pygeofetch proc-pipeline template ndvi
413
+ pygeofetch proc-pipeline template flood_map
414
+ pygeofetch proc-pipeline template change_detection
415
415
  ```
416
416
 
417
417
  ---
@@ -420,25 +420,25 @@ PyGeoFetch proc-pipeline template change_detection
420
420
 
421
421
  ```
422
422
  SYSTEM
423
- PyGeoFetch doctor diagnose installation + connectivity
424
- PyGeoFetch status [--json] provider and cache overview
425
- PyGeoFetch version
423
+ pygeofetch doctor diagnose installation + connectivity
424
+ pygeofetch status [--json] provider and cache overview
425
+ pygeofetch version
426
426
 
427
427
  AUTH
428
- PyGeoFetch auth add PROVIDER [--username U] [--password P] [--api-key K]
429
- PyGeoFetch auth login PROVIDER interactive prompt
430
- PyGeoFetch auth list [--json]
431
- PyGeoFetch auth test PROVIDER
432
- PyGeoFetch auth remove PROVIDER [--yes]
433
- PyGeoFetch auth export [--output FILE]
428
+ pygeofetch auth add PROVIDER [--username U] [--password P] [--api-key K]
429
+ pygeofetch auth login PROVIDER interactive prompt
430
+ pygeofetch auth list [--json]
431
+ pygeofetch auth test PROVIDER
432
+ pygeofetch auth remove PROVIDER [--yes]
433
+ pygeofetch auth export [--output FILE]
434
434
 
435
435
  PROVIDERS
436
- PyGeoFetch providers list [--auth|--no-auth] [--capabilities sar] [--json]
437
- PyGeoFetch providers info PROVIDER
438
- PyGeoFetch providers search "TERM"
436
+ pygeofetch providers list [--auth|--no-auth] [--capabilities sar] [--json]
437
+ pygeofetch providers info PROVIDER
438
+ pygeofetch providers search "TERM"
439
439
 
440
440
  SEARCH
441
- PyGeoFetch search run \
441
+ pygeofetch search run \
442
442
  --bbox "minlon,minlat,maxlon,maxlat" or --geometry-file area.geojson
443
443
  --start-date YYYY-MM-DD --end-date YYYY-MM-DD
444
444
  --cloud-cover 0-20
@@ -452,7 +452,7 @@ SEARCH
452
452
  --no-cache --timeout 60
453
453
 
454
454
  DOWNLOAD
455
- PyGeoFetch download run \
455
+ pygeofetch download run \
456
456
  --from-search results.geojson
457
457
  --output ./data/
458
458
  --parallel 4 --retry 5
@@ -466,72 +466,72 @@ DOWNLOAD
466
466
  --json
467
467
 
468
468
  PREPROCESSING
469
- PyGeoFetch preprocess atmos scene.tif --method dos1|sen2cor|flaash|6s
470
- PyGeoFetch preprocess cloud-mask scene.tif --method scl|fmask|threshold
471
- PyGeoFetch preprocess cloud-fill cloudy.tif t1.tif t2.tif
472
- PyGeoFetch preprocess topo-correct scene.tif dem.tif --method cosine
473
- PyGeoFetch preprocess clip scene.tif --bbox "..." | --geometry file.geojson
474
- PyGeoFetch preprocess reproject scene.tif --crs EPSG:4326
475
- PyGeoFetch preprocess resample scene.tif --resolution 30
476
- PyGeoFetch preprocess pansharpen pan.tif ms.tif --method brovey
477
- PyGeoFetch preprocess mosaic s1.tif s2.tif --method first|last|min|max
478
- PyGeoFetch preprocess composite *.tif --method median|mean|max|best_pixel
479
- PyGeoFetch preprocess tile scene.tif --tile-size 512 --overlap 64
469
+ pygeofetch preprocess atmos scene.tif --method dos1|sen2cor|flaash|6s
470
+ pygeofetch preprocess cloud-mask scene.tif --method scl|fmask|threshold
471
+ pygeofetch preprocess cloud-fill cloudy.tif t1.tif t2.tif
472
+ pygeofetch preprocess topo-correct scene.tif dem.tif --method cosine
473
+ pygeofetch preprocess clip scene.tif --bbox "..." | --geometry file.geojson
474
+ pygeofetch preprocess reproject scene.tif --crs EPSG:4326
475
+ pygeofetch preprocess resample scene.tif --resolution 30
476
+ pygeofetch preprocess pansharpen pan.tif ms.tif --method brovey
477
+ pygeofetch preprocess mosaic s1.tif s2.tif --method first|last|min|max
478
+ pygeofetch preprocess composite *.tif --method median|mean|max|best_pixel
479
+ pygeofetch preprocess tile scene.tif --tile-size 512 --overlap 64
480
480
 
481
481
  SPECTRAL INDICES
482
- PyGeoFetch index ndvi --red B04.tif --nir B08.tif
483
- PyGeoFetch index evi --blue B02.tif --red B04.tif --nir B08.tif
484
- PyGeoFetch index savi --red B04.tif --nir B08.tif --soil-l 0.5
485
- PyGeoFetch index ndwi --green B03.tif --nir B08.tif
486
- PyGeoFetch index mndwi --green B03.tif --swir1 B11.tif
487
- PyGeoFetch index ndbi --nir B08.tif --swir1 B11.tif
488
- PyGeoFetch index ndsi --green B03.tif --swir1 B11.tif
489
- PyGeoFetch index ndmi --nir B08.tif --swir1 B11.tif
490
- PyGeoFetch index nbr --nir B08.tif --swir2 B12.tif
491
- PyGeoFetch index dnbr --pre-nir B08.tif --pre-swir2 B12.tif \
482
+ pygeofetch index ndvi --red B04.tif --nir B08.tif
483
+ pygeofetch index evi --blue B02.tif --red B04.tif --nir B08.tif
484
+ pygeofetch index savi --red B04.tif --nir B08.tif --soil-l 0.5
485
+ pygeofetch index ndwi --green B03.tif --nir B08.tif
486
+ pygeofetch index mndwi --green B03.tif --swir1 B11.tif
487
+ pygeofetch index ndbi --nir B08.tif --swir1 B11.tif
488
+ pygeofetch index ndsi --green B03.tif --swir1 B11.tif
489
+ pygeofetch index ndmi --nir B08.tif --swir1 B11.tif
490
+ pygeofetch index nbr --nir B08.tif --swir2 B12.tif
491
+ pygeofetch index dnbr --pre-nir B08.tif --pre-swir2 B12.tif \
492
492
  --post-nir B08_post.tif --post-swir2 B12_post.tif
493
- PyGeoFetch index tct --blue B02.tif --green B03.tif --red B04.tif \
493
+ pygeofetch index tct --blue B02.tif --green B03.tif --red B04.tif \
494
494
  --nir B08.tif --swir1 B11.tif --swir2 B12.tif
495
- PyGeoFetch index pca B02.tif B03.tif B04.tif B08.tif --components 3
496
- PyGeoFetch index texture B08.tif --window 7 --features contrast,homogeneity
497
- PyGeoFetch index lst B10.tif --emissivity 0.97 --sensor landsat8
498
- PyGeoFetch index albedo B02.tif B03.tif B04.tif B08.tif B11.tif B12.tif
499
- PyGeoFetch index band-math B04.tif B08.tif --expr "(B[1]-B[0])/(B[1]+B[0]+1e-6)"
500
- PyGeoFetch index stack B02.tif B03.tif B04.tif
495
+ pygeofetch index pca B02.tif B03.tif B04.tif B08.tif --components 3
496
+ pygeofetch index texture B08.tif --window 7 --features contrast,homogeneity
497
+ pygeofetch index lst B10.tif --emissivity 0.97 --sensor landsat8
498
+ pygeofetch index albedo B02.tif B03.tif B04.tif B08.tif B11.tif B12.tif
499
+ pygeofetch index band-math B04.tif B08.tif --expr "(B[1]-B[0])/(B[1]+B[0]+1e-6)"
500
+ pygeofetch index stack B02.tif B03.tif B04.tif
501
501
 
502
502
  POST-PROCESSING
503
- PyGeoFetch post vectorize ndvi.tif --threshold 0.3 --format geojson
504
- PyGeoFetch post smooth polygons.geojson --tolerance 0.5
505
- PyGeoFetch post regularize buildings.geojson
506
- PyGeoFetch post zonal-stats ndvi.tif parcels.geojson --output stats.csv
507
- PyGeoFetch post buffer roads.geojson --distance 15
508
- PyGeoFetch post centroids polygons.geojson
509
- PyGeoFetch post geometry-metrics polygons.geojson
510
- PyGeoFetch post compress scene.tif --method lzw|deflate|zstd
511
- PyGeoFetch post cog scene.tif --compress deflate --blocksize 512
503
+ pygeofetch post vectorize ndvi.tif --threshold 0.3 --format geojson
504
+ pygeofetch post smooth polygons.geojson --tolerance 0.5
505
+ pygeofetch post regularize buildings.geojson
506
+ pygeofetch post zonal-stats ndvi.tif parcels.geojson --output stats.csv
507
+ pygeofetch post buffer roads.geojson --distance 15
508
+ pygeofetch post centroids polygons.geojson
509
+ pygeofetch post geometry-metrics polygons.geojson
510
+ pygeofetch post compress scene.tif --method lzw|deflate|zstd
511
+ pygeofetch post cog scene.tif --compress deflate --blocksize 512
512
512
 
513
513
  SAR PROCESSING
514
- PyGeoFetch sar despeckle sar.tif --filter lee|enhanced_lee|frost|gamma --window 7
515
- PyGeoFetch sar calibrate sar.tif --output-type sigma0|gamma0|beta0 --db
516
- PyGeoFetch sar flood-map post.tif --threshold -15 [--reference pre.tif]
517
- PyGeoFetch sar coherence slc1.tif slc2.tif --window 7
514
+ pygeofetch sar despeckle sar.tif --filter lee|enhanced_lee|frost|gamma --window 7
515
+ pygeofetch sar calibrate sar.tif --output-type sigma0|gamma0|beta0 --db
516
+ pygeofetch sar flood-map post.tif --threshold -15 [--reference pre.tif]
517
+ pygeofetch sar coherence slc1.tif slc2.tif --window 7
518
518
 
519
519
  PROCESSING PIPELINES
520
- PyGeoFetch proc-pipeline template ndvi|change_detection|flood_map|urban_mapping|...
521
- PyGeoFetch proc-pipeline validate FILE
522
- PyGeoFetch proc-pipeline run FILE [--input scene.tif] [--output-dir ./out/]
520
+ pygeofetch proc-pipeline template ndvi|change_detection|flood_map|urban_mapping|...
521
+ pygeofetch proc-pipeline validate FILE
522
+ pygeofetch proc-pipeline run FILE [--input scene.tif] [--output-dir ./out/]
523
523
 
524
524
  DATA PIPELINES (search + download)
525
- PyGeoFetch pipeline run|validate|schedule|list-scheduled|unschedule|history
525
+ pygeofetch pipeline run|validate|schedule|list-scheduled|unschedule|history
526
526
 
527
527
  CACHE
528
- PyGeoFetch cache stats|clear|ttl [show|set N]|location|prune --max-size 1GB
528
+ pygeofetch cache stats|clear|ttl [show|set N]|location|prune --max-size 1GB
529
529
 
530
530
  CONFIG
531
- PyGeoFetch config show|get KEY|set KEY VALUE|path|reset
531
+ pygeofetch config show|get KEY|set KEY VALUE|path|reset
532
532
 
533
533
  COMPLETION
534
- PyGeoFetch --install-completion bash|zsh|fish
534
+ pygeofetch --install-completion bash|zsh|fish
535
535
  ```
536
536
 
537
537
  ---
@@ -600,8 +600,8 @@ Contributions of all kinds are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) f
600
600
  Good first issues include implementing stub providers to full API integrations, improving test coverage, and adding new post-processing actions.
601
601
 
602
602
  ```bash
603
- git clone https://github.com/appiahkubis14/PyGeoFetch
604
- cd PyGeoFetch
603
+ git clone https://github.com/appiahkubis14/pygeofetch
604
+ cd pygeofetch
605
605
  pip install -e ".[dev,all]"
606
606
  pytest tests/unit/ -v
607
607
  ```
@@ -610,6 +610,6 @@ pytest tests/unit/ -v
610
610
 
611
611
  ## 📄 License
612
612
 
613
- PyGeoFetch is free and open source software, licensed under the [MIT License](LICENSE).
613
+ pygeofetch is free and open source software, licensed under the [MIT License](LICENSE).
614
614
 
615
- © 2025 PyGeoFetch Contributors. Part of the **PyGeoVision** platform — [PyGeoFetch](https://github.com/appiahkubis14/PyGeoFetch) (data + processing) + [GeoAI](https://opengeoai.org) (AI) = complete Earth observation pipeline.
615
+ © 2025 pygeofetch Contributors. Part of the **PyGeoVision** platform — [pygeofetch](https://github.com/appiahkubis14/pygeofetch) (data + processing) + [GeoAI](https://opengeoai.org) (AI) = complete Earth observation pipeline.