File: test_open_options.py

package info (click to toggle)
rasterio 1.5.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 22,732 kB
  • sloc: python: 23,119; sh: 947; makefile: 275; xml: 29
file content (41 lines) | stat: -rw-r--r-- 1,540 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
"""Tests of dataset opening options and driver choice"""
from contextlib import nullcontext
import concurrent.futures

import pytest

import rasterio
from rasterio.env import _GDAL_AT_LEAST_3_10, _GDAL_AT_LEAST_3_11
from rasterio.transform import Affine

def test_fail_with_missing_driver():
    """Fail to open a GeoTIFF without the GTiff driver"""
    with pytest.raises(rasterio.errors.RasterioIOError):
        rasterio.open('tests/data/RGB.byte.tif', driver='BMP')


def test_open_specific_driver():
    """Open a GeoTIFF with the GTiff driver"""
    with rasterio.open('tests/data/RGB.byte.tif', driver='GTiff') as src:
        assert src.count == 3


def test_open_specific_driver_with_options():
    """Open a GeoTIFF with the GTiff driver and GEOREF_SOURCES option"""
    with rasterio.open(
            'tests/data/RGB.byte.tif', driver='GTiff', GEOREF_SOURCES='NONE') as src:
        assert src.transform == Affine.identity()


def test_open_thread_safe(path_rgb_byte_tif, tmp_path):
    with (
        pytest.raises(rasterio.errors.GDALOptionNotImplementedError) if not _GDAL_AT_LEAST_3_10 else nullcontext(),
        rasterio.Env(GDAL_NUM_THREADS=2),
        rasterio.open(path_rgb_byte_tif, thread_safe=True, driver="LIBERTIFF" if _GDAL_AT_LEAST_3_11 else "GTiff") as src,
    ):
        def process(window):
            src.read(window=window).sum()

        windows = [window for ij, window in src.block_windows()]
        with concurrent.futures.ThreadPoolExecutor() as executor:
            executor.map(process, windows)