async-geotiff 0.1.0b3__py3-none-any.whl → 0.1.0b5__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.
- async_geotiff/__init__.py +13 -1
- async_geotiff/_array.py +121 -0
- async_geotiff/_fetch.py +154 -0
- async_geotiff/_geotiff.py +87 -111
- async_geotiff/_overview.py +44 -13
- async_geotiff/_read.py +185 -0
- async_geotiff/_tile.py +26 -0
- async_geotiff/_transform.py +90 -0
- async_geotiff/_windows.py +76 -0
- async_geotiff/colormap.py +104 -0
- async_geotiff/exceptions.py +5 -0
- async_geotiff/tms.py +2 -2
- async_geotiff-0.1.0b5.dist-info/METADATA +128 -0
- async_geotiff-0.1.0b5.dist-info/RECORD +20 -0
- async_geotiff-0.1.0b3.dist-info/METADATA +0 -53
- async_geotiff-0.1.0b3.dist-info/RECORD +0 -12
- {async_geotiff-0.1.0b3.dist-info → async_geotiff-0.1.0b5.dist-info}/WHEEL +0 -0
- {async_geotiff-0.1.0b3.dist-info → async_geotiff-0.1.0b5.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: async-geotiff
|
|
3
|
+
Version: 0.1.0b5
|
|
4
|
+
Summary: Async GeoTIFF reader for Python
|
|
5
|
+
Keywords: geotiff,tiff,async,cog,raster,gis
|
|
6
|
+
Author: Kyle Barron
|
|
7
|
+
Author-email: Kyle Barron <kyle@developmentseed.org>
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
19
|
+
Classifier: Typing :: Typed
|
|
20
|
+
Requires-Dist: affine>=2.4.0
|
|
21
|
+
Requires-Dist: async-tiff>=0.5.0b3
|
|
22
|
+
Requires-Dist: numpy>=2.0
|
|
23
|
+
Requires-Dist: pyproj>=3.3.0
|
|
24
|
+
Requires-Dist: morecantile>=7.0,<8.0 ; extra == 'morecantile'
|
|
25
|
+
Requires-Python: >=3.11
|
|
26
|
+
Project-URL: Changelog, https://github.com/developmentseed/async-geotiff/blob/main/CHANGELOG.md
|
|
27
|
+
Project-URL: Documentation, https://developmentseed.github.io/async-geotiff/
|
|
28
|
+
Project-URL: Homepage, https://github.com/developmentseed/async-geotiff
|
|
29
|
+
Project-URL: Issues, https://github.com/developmentseed/async-geotiff/issues
|
|
30
|
+
Project-URL: Repository, https://github.com/developmentseed/async-geotiff
|
|
31
|
+
Provides-Extra: morecantile
|
|
32
|
+
Description-Content-Type: text/markdown
|
|
33
|
+
|
|
34
|
+
# async-geotiff
|
|
35
|
+
|
|
36
|
+
Fast, async GeoTIFF and [Cloud-Optimized GeoTIFF][cogeo] (COG) reader for Python, wrapping the Rust-based [Async-TIFF][async-tiff] library.
|
|
37
|
+
|
|
38
|
+
[async-tiff]: https://github.com/developmentseed/async-tiff
|
|
39
|
+
[cogeo]: https://cogeo.org/
|
|
40
|
+
|
|
41
|
+
## Features
|
|
42
|
+
|
|
43
|
+
- Read-only support for GeoTIFF and COG formats.
|
|
44
|
+
- High-level, familiar, easy to use API.
|
|
45
|
+
- Performance-focused:
|
|
46
|
+
- Rust core ensures native performance.
|
|
47
|
+
- CPU-bound tasks like image decoding happen in a thread pool, without blocking the async executor.
|
|
48
|
+
- Buffer protocol integration for zero-copy data sharing between Rust and Python.
|
|
49
|
+
- Lightweight with no GDAL dependency.
|
|
50
|
+
- Integration with [obstore] for efficient data access on object stores.
|
|
51
|
+
- Full type hinting for all operations.
|
|
52
|
+
- Broad decompression support: Deflate, LZW, JPEG, JPEG2000, WebP, ZSTD.
|
|
53
|
+
|
|
54
|
+
**Anti-Features** (features explicitly not in scope):
|
|
55
|
+
|
|
56
|
+
- No pixel resampling.
|
|
57
|
+
- No warping/reprojection.
|
|
58
|
+
|
|
59
|
+
Resampling and warping bring significant additional complexity and are out of scope for this library.
|
|
60
|
+
|
|
61
|
+
[obstore]: https://developmentseed.org/obstore/latest/
|
|
62
|
+
[obspec]: https://developmentseed.org/obspec/latest/
|
|
63
|
+
|
|
64
|
+
## Example
|
|
65
|
+
|
|
66
|
+
First create a "store", such as an [`S3Store`][S3Store], [`GCSStore`][GCSStore], [`AzureStore`][AzureStore], or [`LocalStore`][LocalStore] for reading data from AWS S3, Google Cloud, Azure Storage, or local files. Refer to [obstore] documentation for more information.
|
|
67
|
+
|
|
68
|
+
[S3Store]: https://developmentseed.org/obstore/latest/api/store/aws/#obstore.store.S3Store
|
|
69
|
+
[GCSStore]: https://developmentseed.org/obstore/latest/api/store/gcs/#obstore.store.GCSStore
|
|
70
|
+
[AzureStore]: https://developmentseed.org/obstore/latest/api/store/azure/#obstore.store.AzureStore
|
|
71
|
+
[LocalStore]: https://developmentseed.org/obstore/latest/api/store/local/#obstore.store.LocalStore
|
|
72
|
+
|
|
73
|
+
```py
|
|
74
|
+
from obstore.store import S3Store
|
|
75
|
+
|
|
76
|
+
store = S3Store("sentinel-cogs", region="us-west-2", skip_signature=True)
|
|
77
|
+
path = "sentinel-s2-l2a-cogs/12/S/UF/2022/6/S2B_12SUF_20220609_0_L2A/TCI.tif"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Then open a `GeoTIFF`:
|
|
81
|
+
|
|
82
|
+
```py
|
|
83
|
+
from async_geotiff import GeoTIFF
|
|
84
|
+
|
|
85
|
+
geotiff = await GeoTIFF.open(path, store=store)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
On the `GeoTIFF` instance you have metadata about the image, such as its affine transform and Coordinate Reference System:
|
|
89
|
+
|
|
90
|
+
```py
|
|
91
|
+
geotiff.transform
|
|
92
|
+
# Affine(10.0, 0.0, 300000.0,
|
|
93
|
+
# 0.0, -10.0, 4100040.0)
|
|
94
|
+
|
|
95
|
+
geotiff.crs
|
|
96
|
+
# <Projected CRS: EPSG:32612>
|
|
97
|
+
# Name: WGS 84 / UTM zone 12N
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
For a COG, you can access the overviews, or reduced resolution versions, of the image:
|
|
101
|
+
|
|
102
|
+
```py
|
|
103
|
+
# Overviews are ordered from finest to coarsest resolution
|
|
104
|
+
# In this case, access the second-coarsest resolution version of the image
|
|
105
|
+
overview = geotiff.overviews[-2]
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Then we can read data from the image. This loads a 512-pixel square from the
|
|
109
|
+
upper-left corner of the selected overview.
|
|
110
|
+
|
|
111
|
+
```py
|
|
112
|
+
from async_geotiff import Window
|
|
113
|
+
|
|
114
|
+
window = Window(col_off=0, row_off=0, width=512, height=512)
|
|
115
|
+
array = await overview.read(window=window)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
This `Array` instance has `data`, `mask`, and some other metadata about the fetched array data.
|
|
119
|
+
|
|
120
|
+
Plot, using [`rasterio.plot.show`](https://rasterio.readthedocs.io/en/stable/api/rasterio.plot.html#rasterio.plot.show) (requires `matplotlib`):
|
|
121
|
+
|
|
122
|
+
```py
|
|
123
|
+
import rasterio.plot
|
|
124
|
+
|
|
125
|
+
rasterio.plot.show(array.data)
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+

|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
async_geotiff/__init__.py,sha256=X8z0LzXJNz1mBcP0kd9e_gsWzHavHf0W9FXc3oKGPNs,435
|
|
2
|
+
async_geotiff/_array.py,sha256=fihbOeFIwJ2maHEiXlv8N00n-J6KcQibaToL74-rHAc,3874
|
|
3
|
+
async_geotiff/_crs.py,sha256=upyEGDiuHyWniTD--blzujYHlXBvfHLCSPzgekvO26Q,22105
|
|
4
|
+
async_geotiff/_fetch.py,sha256=cJvSxNFdiLMWFgtrx9FtP72iClXpR1sFPHsGwiSr66I,4434
|
|
5
|
+
async_geotiff/_geotiff.py,sha256=oH_RBFkyodmeOsZpyftGY7IBPJsUyq9DACDxSsa3U5I,12927
|
|
6
|
+
async_geotiff/_overview.py,sha256=tuht-cUN00usxwfnteJDbE6Y391jLZQmYJbWr61MiRg,3334
|
|
7
|
+
async_geotiff/_read.py,sha256=4mX1ZSHERXJiRsuh7U1m3XN5Nu5Eb159NFcI26jYqJI,5676
|
|
8
|
+
async_geotiff/_tile.py,sha256=Cob3xJusGzchH3_mB2Dg2E6nz_B8skcbQdNXCKURsuo,632
|
|
9
|
+
async_geotiff/_transform.py,sha256=5up_xUgBjyXVE-VlugBENoBrZd4vNlvjx7PGzmN1ugc,2501
|
|
10
|
+
async_geotiff/_version.py,sha256=WOBh553JMD6VV-k_R8km_U4yt5mzyrWhi4OeTSXNoJI,171
|
|
11
|
+
async_geotiff/_windows.py,sha256=0bcJ29kL8kaJoj14RnJMz2Eh_a9B9P4ARrZfC4ACWec,2438
|
|
12
|
+
async_geotiff/colormap.py,sha256=v3_lxOC_RYZojIqQy9NZVziS8YmBtjI9UCduf5n-w3Q,3300
|
|
13
|
+
async_geotiff/enums.py,sha256=j-_K1UtI0tBzZ945auvhWZdktO1bgZp7Nf-K9c208IQ,1493
|
|
14
|
+
async_geotiff/exceptions.py,sha256=rZfS6TFIQIzcj-GBNs_t1HsYNTg7aKvSjbrus1apau4,130
|
|
15
|
+
async_geotiff/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
+
async_geotiff/tms.py,sha256=vHbavoMk1NlZx7MAWf7iuqo4xWsOmKvGfa25ZBTrLCE,3916
|
|
17
|
+
async_geotiff-0.1.0b5.dist-info/licenses/LICENSE,sha256=VRb2Bx0c2u6mtWwU_cBiJx_5qrDwzkG3YMZfV0FQnhU,1073
|
|
18
|
+
async_geotiff-0.1.0b5.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
|
|
19
|
+
async_geotiff-0.1.0b5.dist-info/METADATA,sha256=oISmmY2cVvIAjxDFEtvoNarkBZx_vZL7Hapjz-rMPFk,4699
|
|
20
|
+
async_geotiff-0.1.0b5.dist-info/RECORD,,
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: async-geotiff
|
|
3
|
-
Version: 0.1.0b3
|
|
4
|
-
Summary: Async GeoTIFF reader for Python
|
|
5
|
-
Keywords: geotiff,tiff,async,cog,raster,gis
|
|
6
|
-
Author: Kyle Barron
|
|
7
|
-
Author-email: Kyle Barron <kyle@developmentseed.org>
|
|
8
|
-
License-Expression: MIT
|
|
9
|
-
License-File: LICENSE
|
|
10
|
-
Classifier: Development Status :: 3 - Alpha
|
|
11
|
-
Classifier: Intended Audience :: Developers
|
|
12
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
-
Classifier: Programming Language :: Python :: 3
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.14
|
|
18
|
-
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
19
|
-
Classifier: Typing :: Typed
|
|
20
|
-
Requires-Dist: affine>=2.4.0
|
|
21
|
-
Requires-Dist: async-tiff>=0.4.0
|
|
22
|
-
Requires-Dist: numpy>=2.0
|
|
23
|
-
Requires-Dist: pyproj>=3.3.0
|
|
24
|
-
Requires-Dist: morecantile>=7.0,<8.0 ; extra == 'morecantile'
|
|
25
|
-
Requires-Python: >=3.11
|
|
26
|
-
Project-URL: Changelog, https://github.com/developmentseed/async-geotiff/blob/main/CHANGELOG.md
|
|
27
|
-
Project-URL: Documentation, https://developmentseed.github.io/async-geotiff/
|
|
28
|
-
Project-URL: Homepage, https://github.com/developmentseed/async-geotiff
|
|
29
|
-
Project-URL: Issues, https://github.com/developmentseed/async-geotiff/issues
|
|
30
|
-
Project-URL: Repository, https://github.com/developmentseed/async-geotiff
|
|
31
|
-
Provides-Extra: morecantile
|
|
32
|
-
Description-Content-Type: text/markdown
|
|
33
|
-
|
|
34
|
-
# async-geotiff
|
|
35
|
-
|
|
36
|
-
Async GeoTIFF and [Cloud-Optimized GeoTIFF][cogeo] (COG) reader for Python, wrapping [`async-tiff`].
|
|
37
|
-
|
|
38
|
-
[`async-tiff`]: https://github.com/developmentseed/async-tiff
|
|
39
|
-
[cogeo]: https://cogeo.org/
|
|
40
|
-
|
|
41
|
-
## Project Goals:
|
|
42
|
-
|
|
43
|
-
- Support only for GeoTIFF and Cloud-Optimized GeoTIFF (COG) formats
|
|
44
|
-
- Support for reading only, no writing support
|
|
45
|
-
- Full type hinting.
|
|
46
|
-
- API similar to rasterio where possible.
|
|
47
|
-
- We won't support the full rasterio API, but we'll try to when it's possible to implement rasterio APIs with straightforward maintenance requirements.
|
|
48
|
-
- For methods where we do intentionally try to match with rasterio, the tests should match against rasterio.
|
|
49
|
-
- Initially, we'll try to support a core set of GeoTIFF formats. Obscure GeoTIFF files may not be supported.
|
|
50
|
-
|
|
51
|
-
## References
|
|
52
|
-
|
|
53
|
-
- aiocogeo: https://github.com/geospatial-jeff/aiocogeo
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
async_geotiff/__init__.py,sha256=Z_g9Z04lgDNeIOI4Z3lXn74G_7MOntwcPgjWBYLIoUU,259
|
|
2
|
-
async_geotiff/_crs.py,sha256=upyEGDiuHyWniTD--blzujYHlXBvfHLCSPzgekvO26Q,22105
|
|
3
|
-
async_geotiff/_geotiff.py,sha256=hEC0hR5qTB0DGEe4Cvoaz_56D-zfZeT9UR4lmjJD77w,13123
|
|
4
|
-
async_geotiff/_overview.py,sha256=dsdbKpix3aebjtibfJSgLUbqSAY92tlMMcg3fVLFlfY,2423
|
|
5
|
-
async_geotiff/_version.py,sha256=WOBh553JMD6VV-k_R8km_U4yt5mzyrWhi4OeTSXNoJI,171
|
|
6
|
-
async_geotiff/enums.py,sha256=j-_K1UtI0tBzZ945auvhWZdktO1bgZp7Nf-K9c208IQ,1493
|
|
7
|
-
async_geotiff/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
-
async_geotiff/tms.py,sha256=55nXenfss_KX7I5bmcMwtTHZWzNYAwSqhfjqSQju7OI,3922
|
|
9
|
-
async_geotiff-0.1.0b3.dist-info/licenses/LICENSE,sha256=VRb2Bx0c2u6mtWwU_cBiJx_5qrDwzkG3YMZfV0FQnhU,1073
|
|
10
|
-
async_geotiff-0.1.0b3.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
|
|
11
|
-
async_geotiff-0.1.0b3.dist-info/METADATA,sha256=8AIntKucPXRaoEp7iSW63TXjGdKzs4y6OS3zWiZy7zI,2259
|
|
12
|
-
async_geotiff-0.1.0b3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|