PyGeoFetch 2.6.2.7__py3-none-any.whl → 2.6.2.8__py3-none-any.whl
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.
- pygeofetch/__init__.py +1 -1
- pygeofetch/insar/auto_fallback.py +18 -2
- pygeofetch/meta.yaml +1 -1
- {pygeofetch-2.6.2.7.dist-info → pygeofetch-2.6.2.8.dist-info}/METADATA +9 -9
- {pygeofetch-2.6.2.7.dist-info → pygeofetch-2.6.2.8.dist-info}/RECORD +9 -9
- {pygeofetch-2.6.2.7.dist-info → pygeofetch-2.6.2.8.dist-info}/WHEEL +0 -0
- {pygeofetch-2.6.2.7.dist-info → pygeofetch-2.6.2.8.dist-info}/entry_points.txt +0 -0
- {pygeofetch-2.6.2.7.dist-info → pygeofetch-2.6.2.8.dist-info}/licenses/LICENSE +0 -0
- {pygeofetch-2.6.2.7.dist-info → pygeofetch-2.6.2.8.dist-info}/top_level.txt +0 -0
pygeofetch/__init__.py
CHANGED
|
@@ -293,7 +293,23 @@ def run_multi_modal_deformation(
|
|
|
293
293
|
# received a scalar `pairs` list, not a per-pixel coherence raster
|
|
294
294
|
# -- build one the same real, honest way the multi-sensor
|
|
295
295
|
# notebooks do (mean across the real per-pair coherence arrays).
|
|
296
|
-
|
|
296
|
+
#
|
|
297
|
+
# Real, necessary edge case, confirmed directly: when `pairs` is
|
|
298
|
+
# genuinely empty (a total InSAR failure with zero usable pairs at
|
|
299
|
+
# all, not just low coherence), `np.mean([], axis=0)` silently
|
|
300
|
+
# degrades to a scalar `nan` with shape `()` rather than raising --
|
|
301
|
+
# which then fails the real shape check inside fuse_insar_optical
|
|
302
|
+
# with a confusing "all input arrays must share the same real
|
|
303
|
+
# shape" error that gives no hint the real cause was an empty
|
|
304
|
+
# pairs list. Build a properly-shaped all-NaN raster explicitly in
|
|
305
|
+
# this case instead: a real, honest signal of "zero real coherence
|
|
306
|
+
# information available," matching `velocity`'s own real shape so
|
|
307
|
+
# fuse_insar_optical's fusion logic runs correctly and correctly
|
|
308
|
+
# concludes optical-only, rather than crashing before it can.
|
|
309
|
+
if pairs:
|
|
310
|
+
mean_coherence_raster = np.mean([np.asarray(p.coherence) for p in pairs], axis=0)
|
|
311
|
+
else:
|
|
312
|
+
mean_coherence_raster = np.full(np.asarray(velocity).shape, np.nan)
|
|
297
313
|
|
|
298
314
|
fused = fuse_insar_optical(
|
|
299
315
|
insar_velocity=velocity,
|
|
@@ -329,4 +345,4 @@ def run_multi_modal_deformation(
|
|
|
329
345
|
"n_optical_windows_reliable": int(offset_result.reliable.sum()),
|
|
330
346
|
"n_optical_windows_total": int(offset_result.reliable.size),
|
|
331
347
|
},
|
|
332
|
-
)
|
|
348
|
+
)
|
pygeofetch/meta.yaml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pygeofetch
|
|
3
|
-
Version: 2.6.2.
|
|
3
|
+
Version: 2.6.2.8
|
|
4
4
|
Summary: Universal satellite data pipeline + geospatial processing platform
|
|
5
5
|
Author-email: Samuel Appiah Kubi <appiahkubis14@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -167,13 +167,13 @@ Where pygeofetch goes further than most data-access libraries is in its **InSAR
|
|
|
167
167
|
|
|
168
168
|
| | |
|
|
169
169
|
|---|---|
|
|
170
|
-
|
|
|
171
|
-
|
|
|
172
|
-
|
|
|
173
|
-
|
|
|
174
|
-
|
|
|
175
|
-
|
|
|
176
|
-
|
|
|
170
|
+
| **Authenticated access** | 22 verified providers; credentials stored via a Fernet-encrypted local file by default, or the system keyring (Keychain / Credential Manager / Secret Service) as an opt-in alternative |
|
|
171
|
+
| **Federated search** | One query across all providers → STAC 1.0 GeoJSON / GeoParquet / CSV, with real footprint geometry where the provider supplies it |
|
|
172
|
+
| **Resilient downloads** | Parallel, resumable, checksum-verified, band-selective, atomic writes |
|
|
173
|
+
| **Preprocessing** | Atmospheric correction, cloud masking, reprojection, resampling, pan-sharpening, mosaicking |
|
|
174
|
+
| **17 spectral indices** | NDVI, EVI, SAVI, NDWI, MNDWI, NDBI, LST, Albedo, dNBR, GLCM texture, and more |
|
|
175
|
+
| **Verified InSAR chain** | Coregistration → phase removal → atmospheric/ionospheric correction → unwrapping → SBAS inversion |
|
|
176
|
+
| **YAML pipelines** | Chainable, schedulable, repeatable workflows with full run history |
|
|
177
177
|
|
|
178
178
|
---
|
|
179
179
|
|
|
@@ -369,7 +369,7 @@ If you use PyGeoFetch in your research or operational work, please cite it using
|
|
|
369
369
|
title = {PyGeoFetch: A Unified Python Framework for Multi-Provider Satellite Data Acquisition, Pre-download Quality Control, and Geospatial Processing},
|
|
370
370
|
year = {2026},
|
|
371
371
|
publisher = {Zenodo},
|
|
372
|
-
version = {2.6.2.
|
|
372
|
+
version = {2.6.2.8.1},
|
|
373
373
|
doi = {10.5281/zenodo.22087230},
|
|
374
374
|
url = {https://doi.org/10.5281/zenodo.22087230}
|
|
375
375
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
pygeofetch/__init__.py,sha256=
|
|
2
|
-
pygeofetch/meta.yaml,sha256=
|
|
1
|
+
pygeofetch/__init__.py,sha256=wLrUCmB8GbXTOJtEuN6yOfZYBVebkhtKokEiaqrga4A,1994
|
|
2
|
+
pygeofetch/meta.yaml,sha256=T6ftbgztSS94-HznuAU4OZE83tYii7JCARzDKmxjYX0,1284
|
|
3
3
|
pygeofetch/cli/__init__.py,sha256=QZMIIHEgmjGFieucqq9fZ5uephxP9-jdu1s8Q4qqw8o,30
|
|
4
4
|
pygeofetch/cli/auth_commands.py,sha256=OUYbInPaERvAfNZ_NmAF3azHoJm14cGn_ZTQtxjjcs4,7871
|
|
5
5
|
pygeofetch/cli/config_commands.py,sha256=1Pps0HLCLPODMlM6SFV8ru3IKCDpexSTz8uKIXvIIF8,3918
|
|
@@ -36,7 +36,7 @@ pygeofetch/insar/advanced_safeguards.py,sha256=CDMmxyC4PsldTaVXrxYm9vaJ2HS0izICB
|
|
|
36
36
|
pygeofetch/insar/analysis.py,sha256=GLNNE2OY17Y92p4FJSu7DwitRRp6AFLj1hccSmw3Mqg,35770
|
|
37
37
|
pygeofetch/insar/annotation.py,sha256=NRtH9HTlMQX1WkYLiJS9H7NrBxmUDBYIsZUOWVXZ37M,20775
|
|
38
38
|
pygeofetch/insar/atmosphere.py,sha256=frOTzYxIz33L4vPxbCQ4fVSkY2c_BZqHwIUoi4grK2Y,23032
|
|
39
|
-
pygeofetch/insar/auto_fallback.py,sha256=
|
|
39
|
+
pygeofetch/insar/auto_fallback.py,sha256=00tn6WT_w38vzv--bQvTWPKw2HRdo1UrWXhxpM7OGTE,14589
|
|
40
40
|
pygeofetch/insar/coregister.py,sha256=9QILqYi6quuRsnqZr4K3Feyrkp-SN_ZOO3ypAgP4lJI,57924
|
|
41
41
|
pygeofetch/insar/deburst.py,sha256=liWkKoP-UYYRRXxVYjsm2dpNCnIamL0RfH9JAe-660w,6456
|
|
42
42
|
pygeofetch/insar/esd.py,sha256=FR0k7TwIUGInDA1u9cW4zrrX0HGTY5MuclfeDcShL9k,26177
|
|
@@ -137,9 +137,9 @@ pygeofetch/validation/optical_validator.py,sha256=S0D361GibQwA2vvGb9_H8_6mxvaFKD
|
|
|
137
137
|
pygeofetch/viz/__init__.py,sha256=xf2C9IL4n3bv3oxk8RYkogq7nkuNyt18V-urAoXWRQY,449
|
|
138
138
|
pygeofetch/viz/map.py,sha256=f8whny5mnz7gDsStNdgtVSpqTNHSDhSZoRT2Qs-Lvos,16403
|
|
139
139
|
pygeofetch/viz/plot.py,sha256=JybD4qElJBOTvWCu7VllL5DqkKFYf5ttJdFfsgApfLE,56601
|
|
140
|
-
pygeofetch-2.6.2.
|
|
141
|
-
pygeofetch-2.6.2.
|
|
142
|
-
pygeofetch-2.6.2.
|
|
143
|
-
pygeofetch-2.6.2.
|
|
144
|
-
pygeofetch-2.6.2.
|
|
145
|
-
pygeofetch-2.6.2.
|
|
140
|
+
pygeofetch-2.6.2.8.dist-info/licenses/LICENSE,sha256=zavMyhODD6NvZTmmKFEtATrngwY4CU_NEtY7lhjxGnI,1075
|
|
141
|
+
pygeofetch-2.6.2.8.dist-info/METADATA,sha256=nj-G1srXTRAHtohO8c5Qsi1rF0EU_RPE53NiIqghRyo,24973
|
|
142
|
+
pygeofetch-2.6.2.8.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
143
|
+
pygeofetch-2.6.2.8.dist-info/entry_points.txt,sha256=dHiUXLF5xNJ8vgtXZoUQNleEMQUeDPZiKQOE1tW8SDY,55
|
|
144
|
+
pygeofetch-2.6.2.8.dist-info/top_level.txt,sha256=rOmnZargIfNk99fwVOqt6OJyJvpSTBBAYO5HU37yhHk,11
|
|
145
|
+
pygeofetch-2.6.2.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|