From 6276e6ef31c5b52ae5938567974ff1cafec710ac Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 7 Aug 2024 19:50:24 +0200 Subject: [PATCH 1/9] Chesapeake: update to 2022 edition --- docs/api/datasets.rst | 2 - docs/api/geo_datasets.csv | 2 +- pyproject.toml | 2 - requirements/datasets.txt | 1 - requirements/min-reqs.old | 1 - tests/datasets/test_chesapeake.py | 2 - tests/datasets/test_utils.py | 3 - tests/trainers/test_segmentation.py | 2 - torchgeo/datasets/__init__.py | 2 - torchgeo/datasets/chesapeake.py | 329 ++++++++++------------------ torchgeo/datasets/utils.py | 24 +- 11 files changed, 115 insertions(+), 255 deletions(-) diff --git a/docs/api/datasets.rst b/docs/api/datasets.rst index 20ce1bfcbac..5ac4f59ec63 100644 --- a/docs/api/datasets.rst +++ b/docs/api/datasets.rst @@ -47,8 +47,6 @@ Chesapeake Land Cover ^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: Chesapeake -.. autoclass:: Chesapeake7 -.. autoclass:: Chesapeake13 .. autoclass:: ChesapeakeDC .. autoclass:: ChesapeakeDE .. autoclass:: ChesapeakeMD diff --git a/docs/api/geo_datasets.csv b/docs/api/geo_datasets.csv index 7cdcaf5cfca..0f7870efe06 100644 --- a/docs/api/geo_datasets.csv +++ b/docs/api/geo_datasets.csv @@ -4,7 +4,7 @@ Dataset,Type,Source,License,Size (px),Resolution (m) `Airphen`_,Imagery,Airphen,-,"1,280x960",0.047--0.09 `Aster Global DEM`_,DEM,Aster,"public domain","3,601x3,601",30 `Canadian Building Footprints`_,Geometries,Bing Imagery,"ODbL-1.0",-,- -`Chesapeake Land Cover`_,"Imagery, Masks",NAIP,"CC-BY-4.0",-,1 +`Chesapeake Land Cover`_,"Imagery, Masks",NAIP,"CC0-1.0",-,1 `Global Mangrove Distribution`_,Masks,"Remote Sensing, In Situ Measurements","public domain",-,3 `Cropland Data Layer`_,Masks,Landsat,"public domain",-,30 `EDDMapS`_,Points,Citizen Scientists,-,-,- diff --git a/pyproject.toml b/pyproject.toml index 104eda29c84..3d38ef2d47c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -99,8 +99,6 @@ datasets = [ "scikit-image>=0.19", # scipy 1.7.2+ required for Python 3.10 wheels "scipy>=1.7.2", - # zipfile-deflate64 0.2+ required for Python 3.10 wheels - "zipfile-deflate64>=0.2", ] docs = [ # ipywidgets 7+ required by nbsphinx diff --git a/requirements/datasets.txt b/requirements/datasets.txt index b555abe1182..0678bec1854 100644 --- a/requirements/datasets.txt +++ b/requirements/datasets.txt @@ -8,4 +8,3 @@ radiant-mlhub==0.4.1 rarfile==4.2 scikit-image==0.24.0 scipy==1.14.0 -zipfile-deflate64==0.2.0 diff --git a/requirements/min-reqs.old b/requirements/min-reqs.old index 66fec79be70..7593fd1c3c5 100644 --- a/requirements/min-reqs.old +++ b/requirements/min-reqs.old @@ -31,7 +31,6 @@ radiant-mlhub==0.3.0 rarfile==4.0 scikit-image==0.19.0 scipy==1.7.2 -zipfile-deflate64==0.2.0 # tests pytest==7.3.0 diff --git a/tests/datasets/test_chesapeake.py b/tests/datasets/test_chesapeake.py index 33dbfd27978..6125b8c8f88 100644 --- a/tests/datasets/test_chesapeake.py +++ b/tests/datasets/test_chesapeake.py @@ -23,8 +23,6 @@ UnionDataset, ) -pytest.importorskip('zipfile_deflate64') - def download_url(url: str, root: str | Path, *args: str, **kwargs: str) -> None: shutil.copy(url, root) diff --git a/tests/datasets/test_utils.py b/tests/datasets/test_utils.py index f0b4a104751..5aff7b5626b 100644 --- a/tests/datasets/test_utils.py +++ b/tests/datasets/test_utils.py @@ -76,15 +76,12 @@ def download_url(url: str, root: str | Path, *args: str) -> None: os.path.join('cowc_detection', 'COWC_test_list_detection.txt.bz2'), os.path.join('vhr10', 'NWPU VHR-10 dataset.rar'), os.path.join('landcoverai', 'landcover.ai.v1.zip'), - os.path.join('chesapeake', 'BAYWIDE', 'Baywide_13Class_20132014.zip'), os.path.join('sen12ms', 'ROIs1158_spring_lc.tar.gz'), ], ) def test_extract_archive(src: str, tmp_path: Path) -> None: if src.endswith('.rar'): pytest.importorskip('rarfile', minversion='4') - if src.startswith('chesapeake'): - pytest.importorskip('zipfile_deflate64') extract_archive(os.path.join('tests', 'data', src), tmp_path) diff --git a/tests/trainers/test_segmentation.py b/tests/trainers/test_segmentation.py index d8b207d5d2d..a424508361c 100644 --- a/tests/trainers/test_segmentation.py +++ b/tests/trainers/test_segmentation.py @@ -95,8 +95,6 @@ def test_trainer( 'ecec8e871faf1bbd8ca525ca95ddc1c1f5213f40afb94599884bd85f990ebd6b' ) monkeypatch.setattr(LandCoverAI, 'sha256', sha256) - case 'naipchesapeake': - pytest.importorskip('zipfile_deflate64') config = os.path.join('tests', 'conf', name + '.yaml') diff --git a/torchgeo/datasets/__init__.py b/torchgeo/datasets/__init__.py index 6a15fabdf76..e413297ae7c 100644 --- a/torchgeo/datasets/__init__.py +++ b/torchgeo/datasets/__init__.py @@ -16,8 +16,6 @@ from .chabud import ChaBuD from .chesapeake import ( Chesapeake, - Chesapeake7, - Chesapeake13, ChesapeakeCVPR, ChesapeakeDC, ChesapeakeDE, diff --git a/torchgeo/datasets/chesapeake.py b/torchgeo/datasets/chesapeake.py index 86d75f6276b..dd9c24dff8a 100644 --- a/torchgeo/datasets/chesapeake.py +++ b/torchgeo/datasets/chesapeake.py @@ -1,12 +1,13 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. -"""Chesapeake Bay High-Resolution Land Cover Project datasets.""" +"""Cheasapeake Bay Program Land Use/Land Cover Data Project datasets.""" -import abc +import glob import os import pathlib import sys +from abc import ABC, abstractmethod from collections.abc import Callable, Iterable, Sequence from typing import Any, cast @@ -30,65 +31,72 @@ from .utils import BoundingBox, Path, download_url, extract_archive -class Chesapeake(RasterDataset, abc.ABC): +class Chesapeake(RasterDataset, ABC): """Abstract base class for all Chesapeake datasets. - `Chesapeake Bay High-Resolution Land Cover Project - `_ - dataset. - - This dataset was collected by the Chesapeake Conservancy's Conservation Innovation - Center (CIC) in partnership with the University of Vermont and WorldView Solutions, - Inc. It consists of one-meter resolution land cover information for the Chesapeake - Bay watershed (~100,000 square miles of land). + `Chesapeake Bay Land Use and Land Cover (LULC) Database 2022 Edition + `_ + + The Chesapeake Bay Land Use and Land Cover Database (LULC) facilitates + characterization of the landscape and land change for and between discrete time + periods. The database was developed by the University of Vermont’s Spatial Analysis + Laboratory in cooperation with Chesapeake Conservancy (CC) and U.S. Geological + Survey (USGS) as part of a 6-year Cooperative Agreement between Chesapeake + Conservancy and the U.S. Environmental Protection Agency (EPA) and a separate + Interagency Agreement between the USGS and EPA to provide geospatial support to the + Chesapeake Bay Program Office. + + The database contains one-meter 13-class Land Cover (LC) and 54-class Land Use/Land + Cover (LULC) for all counties within or adjacent to the Chesapeake Bay watershed for + 2013/14 and 2017/18, depending on availability of National Agricultural Imagery + Program (NAIP) imagery for each state. Additionally, 54 LULC classes are generalized + into 18 LULC classes for ease of visualization and communication of LULC trends. LC + change between discrete time periods, detected by spectral changes in NAIP imagery + and LiDAR, represents changes between the 12 land cover classes. LULC change uses LC + change to identify where changes are happening and then LC is translated to LULC to + represent transitions between the 54 LULC classes. The LULCC data is represented as + a LULC class change transition matrix which provides users acres of change between + multiple classes. It is organized by 18x18 and 54x54 LULC classes. The Chesapeake + Bay Water (CBW) indicates raster tabulations were performed for only areas that fall + inside the CBW boundary e.g., if user is interested in CBW portion of a county then + they will use LULC Matrix CBW. Conversely, if they are interested change transitions + across the entire county, they will use LULC Matrix. + + If you use this dataset in your research, please cite the following: + + * https://doi.org/10.5066/P981GV1L """ + url = 'https://hf.co/datasets/torchgeo/chesapeake/resolve/1e0370eda6a24d93af4153745e54fd383d015bf5/{state}_lulc_{year}_2022-Edition.zip' + filename_glob = '{state}_lulc_*_2022-Edition.tif' + filename_regex = r'^{state}_lulc_(?P\d{{4}})_2022-Edition\.tif$' + date_format = '%Y' is_image = False - # subclasses use the 13 class cmap by default - cmap = { - 0: (0, 0, 0, 0), - 1: (0, 197, 255, 255), - 2: (0, 168, 132, 255), - 3: (38, 115, 0, 255), - 4: (76, 230, 0, 255), - 5: (163, 255, 115, 255), - 6: (255, 170, 0, 255), - 7: (255, 0, 0, 255), - 8: (156, 156, 156, 255), - 9: (0, 0, 0, 255), - 10: (115, 115, 0, 255), - 11: (230, 230, 0, 255), - 12: (255, 255, 115, 255), - 13: (197, 0, 255, 255), - } - @property - @abc.abstractmethod - def base_folder(self) -> str: - """Parent directory of dataset in URL.""" + @abstractmethod + def md5s(self) -> dict[int, str]: + """Mapping between data year and zip file MD5.""" @property - @abc.abstractmethod - def filename(self) -> str: - """Filename to find/store dataset in.""" + def state(self) -> str: + """State abbreviation.""" + return self.__class__.__name__[-2:].lower() @property - @abc.abstractmethod - def zipfile(self) -> str: - """Name of zipfile in download URL.""" + def cmap(self) -> dict[int, tuple[int, int, int, int]]: + """Color map for the dataset.""" + cmap = {} + file = self.files[0] + '.vat.dbf' + with fiona.open(file) as src: + for feature in src: + p = feature['properties'] + cmap[p['Value']] = (p['Red'], p['Green'], p['Blue'], 255) - @property - @abc.abstractmethod - def md5(self) -> str: - """MD5 checksum to verify integrity of dataset.""" + # NoData Value + cmap[127] = (255, 255, 255, 255) - @property - def url(self) -> str: - """URL to download dataset from.""" - url = 'https://cicwebresources.blob.core.windows.net/chesapeakebaylandcover' - url += f'/{self.base_folder}/{self.zipfile}' - return url + return cmap def __init__( self, @@ -100,7 +108,7 @@ def __init__( download: bool = False, checksum: bool = False, ) -> None: - """Initialize a new Dataset instance. + """Initialize a new Chesapeake instance. Args: paths: one or more root directories to search or files to load @@ -120,23 +128,15 @@ def __init__( .. versionchanged:: 0.5 *root* was renamed to *paths*. """ + self.filename_glob = self.filename_glob.format(state=self.state) + self.filename_regex = self.filename_regex.format(state=self.state) + self.paths = paths self.download = download self.checksum = checksum self._verify() - colors = [] - for i in range(len(self.cmap)): - colors.append( - ( - self.cmap[i][0] / 255.0, - self.cmap[i][1] / 255.0, - self.cmap[i][2] / 255.0, - ) - ) - self._cmap = ListedColormap(colors) - super().__init__(paths, crs, res, transforms=transforms, cache=cache) def _verify(self) -> None: @@ -147,7 +147,7 @@ def _verify(self) -> None: # Check if the zip file has already been downloaded assert isinstance(self.paths, str | pathlib.Path) - if os.path.exists(os.path.join(self.paths, self.zipfile)): + if glob.glob(os.path.join(self.paths, '**', '*.zip'), recursive=True): self._extract() return @@ -161,12 +161,15 @@ def _verify(self) -> None: def _download(self) -> None: """Download the dataset.""" - download_url(self.url, self.paths, filename=self.zipfile, md5=self.md5) + for year, md5 in self.md5s.items(): + url = self.url.format(state=self.state, year=year) + download_url(url, self.paths, md5=md5 if self.checksum else None) def _extract(self) -> None: """Extract the dataset.""" assert isinstance(self.paths, str | pathlib.Path) - extract_archive(os.path.join(self.paths, self.zipfile)) + for file in glob.iglob(os.path.join(self.paths, '**', '*.zip'), recursive=True): + extract_archive(file) def plot( self, @@ -188,48 +191,32 @@ def plot( Method now takes a sample dict, not a Tensor. Additionally, possible to show subplot titles and/or use a custom suptitle. """ + cmap = torch.zeros(max(self.cmap) + 1, 4, dtype=torch.uint8) + for key, value in self.cmap.items(): + cmap[key] = torch.tensor(value) + mask = sample['mask'].squeeze(0) + mask = cmap[mask] ncols = 1 showing_predictions = 'prediction' in sample if showing_predictions: pred = sample['prediction'].squeeze(0) + pred = cmap[pred] ncols = 2 - fig, axs = plt.subplots(nrows=1, ncols=ncols, figsize=(4 * ncols, 4)) + fig, axs = plt.subplots(ncols=ncols, squeeze=False, figsize=(4 * ncols, 4)) - if showing_predictions: - axs[0].imshow( - mask, - vmin=0, - vmax=self._cmap.N - 1, - cmap=self._cmap, - interpolation='none', - ) - axs[0].axis('off') - axs[1].imshow( - pred, - vmin=0, - vmax=self._cmap.N - 1, - cmap=self._cmap, - interpolation='none', - ) - axs[1].axis('off') - if show_titles: - axs[0].set_title('Mask') - axs[1].set_title('Prediction') + axs[0, 0].imshow(mask) + axs[0, 0].axis('off') + if show_titles: + axs[0, 0].set_title('Mask') - else: - axs.imshow( - mask, - vmin=0, - vmax=self._cmap.N - 1, - cmap=self._cmap, - interpolation='none', - ) - axs.axis('off') + if showing_predictions: + axs[0, 1].imshow(pred) + axs[0, 1].axis('off') if show_titles: - axs.set_title('Mask') + axs[0, 1].set_title('Prediction') if suptitle is not None: plt.suptitle(suptitle) @@ -237,159 +224,67 @@ def plot( return fig -class Chesapeake7(Chesapeake): - """Complete 7-class dataset. - - This version of the dataset is composed of 7 classes: - - 0. No Data: Background values - 1. Water: All areas of open water including ponds, rivers, and lakes - 2. Tree Canopy and Shrubs: All woody vegetation including trees and shrubs - 3. Low Vegetation: Plant material less than 2 meters in height including lawns - 4. Barren: Areas devoid of vegetation consisting of natural earthen material - 5. Impervious Surfaces: Human-constructed surfaces less than 2 meters in height - 6. Impervious Roads: Impervious surfaces that are used for transportation - 7. Aberdeen Proving Ground: U.S. Army facility with no labels - """ - - base_folder = 'BAYWIDE' - filename = 'Baywide_7class_20132014.tif' - filename_glob = filename - zipfile = 'Baywide_7Class_20132014.zip' - md5 = '61a4e948fb2551840b6557ef195c2084' - - cmap = { - 0: (0, 0, 0, 0), - 1: (0, 197, 255, 255), - 2: (38, 115, 0, 255), - 3: (163, 255, 115, 255), - 4: (255, 170, 0, 255), - 5: (156, 156, 156, 255), - 6: (0, 0, 0, 255), - 7: (197, 0, 255, 255), - } - - -class Chesapeake13(Chesapeake): - """Complete 13-class dataset. - - This version of the dataset is composed of 13 classes: - - 0. No Data: Background values - 1. Water: All areas of open water including ponds, rivers, and lakes - 2. Wetlands: Low vegetation areas located along marine or estuarine regions - 3. Tree Canopy: Deciduous and evergreen woody vegetation over 3-5 meters in height - 4. Shrubland: Heterogeneous woody vegetation including shrubs and young trees - 5. Low Vegetation: Plant material less than 2 meters in height including lawns - 6. Barren: Areas devoid of vegetation consisting of natural earthen material - 7. Structures: Human-constructed objects made of impervious materials - 8. Impervious Surfaces: Human-constructed surfaces less than 2 meters in height - 9. Impervious Roads: Impervious surfaces that are used for transportation - 10. Tree Canopy over Structures: Tree cover overlapping impervious structures - 11. Tree Canopy over Impervious Surfaces: Tree cover overlapping impervious surfaces - 12. Tree Canopy over Impervious Roads: Tree cover overlapping impervious roads - 13. Aberdeen Proving Ground: U.S. Army facility with no labels - """ - - base_folder = 'BAYWIDE' - filename = 'Baywide_13Class_20132014.tif' - filename_glob = filename - zipfile = 'Baywide_13Class_20132014.zip' - md5 = '7e51118923c91e80e6e268156d25a4b9' - - class ChesapeakeDC(Chesapeake): """This subset of the dataset contains data only for Washington, D.C.""" - base_folder = 'DC' - filename = os.path.join('DC_11001', 'DC_11001.img') - filename_glob = filename - zipfile = 'DC_11001.zip' - md5 = 'ed06ba7570d2955e8857d7d846c53b06' + md5s = { + 2013: '9f1df21afbb9d5c0fcf33af7f6750a7f', + 2017: 'c45e4af2950e1c93ecd47b61af296d9b', + } class ChesapeakeDE(Chesapeake): """This subset of the dataset contains data only for Delaware.""" - base_folder = 'DE' - filename = 'DE_STATEWIDE.tif' - filename_glob = filename - zipfile = '_DE_STATEWIDE.zip' - md5 = '5e12eff3b6950c01092c7e480b38e544' + md5s = { + 2013: '5850d96d897babba85610658aeb5951a', + 2018: 'ee94c8efeae423d898677104117bdebc', + } class ChesapeakeMD(Chesapeake): - """This subset of the dataset contains data only for Maryland. - - .. note:: - - This dataset requires the following additional library to be installed: + """This subset of the dataset contains data only for Maryland.""" - * `zipfile-deflate64 `_ to extract - the proprietary deflate64 compressed zip file. - """ - - base_folder = 'MD' - filename = 'MD_STATEWIDE.tif' - filename_glob = filename - zipfile = '_MD_STATEWIDE.zip' - md5 = '40c7cd697a887f2ffdb601b5c114e567' + md5s = { + 2013: '9c3ca5040668d15284c1bd64b7d6c7a0', + 2018: '0647530edf8bec6e60f82760dcc7db9c', + } class ChesapeakeNY(Chesapeake): - """This subset of the dataset contains data only for New York. + """This subset of the dataset contains data only for New York.""" - .. note:: - - This dataset requires the following additional library to be installed: - - * `zipfile-deflate64 `_ to extract - the proprietary deflate64 compressed zip file. - """ - - base_folder = 'NY' - filename = 'NY_STATEWIDE.tif' - filename_glob = filename - zipfile = '_NY_STATEWIDE.zip' - md5 = '1100078c526616454ef2e508affda915' + md5s = { + 2013: '38a29b721610ba661a7f8b6ec71a48b7', + 2017: '4c1b1a50fd9368cd7b8b12c4d80c63f3', + } class ChesapeakePA(Chesapeake): """This subset of the dataset contains data only for Pennsylvania.""" - base_folder = 'PA' - filename = 'PA_STATEWIDE.tif' - filename_glob = filename - zipfile = '_PA_STATEWIDE.zip' - md5 = '20a2a857c527a4dbadd6beed8b47e5ab' + md5s = { + 2013: '86febd603a120a49ef7d23ef486152a3', + 2017: 'b11d92e4471e8cb887c790d488a338c1', + } class ChesapeakeVA(Chesapeake): - """This subset of the dataset contains data only for Virginia. + """This subset of the dataset contains data only for Virginia.""" - .. note:: - - This dataset requires the following additional library to be installed: - - * `zipfile-deflate64 `_ to extract - the proprietary deflate64 compressed zip file. - """ - - base_folder = 'VA' - filename = 'CIC2014_VA_STATEWIDE.tif' - filename_glob = filename - zipfile = '_VA_STATEWIDE.zip' - md5 = '6f2c97deaf73bb3e1ea9b21bd7a3fc8e' + md5s = { + 2014: '49c9700c71854eebd00de24d8488eb7c', + 2018: '51731c8b5632978bfd1df869ea10db5b', + } class ChesapeakeWV(Chesapeake): """This subset of the dataset contains data only for West Virginia.""" - base_folder = 'WV' - filename = 'WV_STATEWIDE.tif' - filename_glob = filename - zipfile = '_WV_STATEWIDE.zip' - md5 = '350621ea293651fbc557a1c3e3c64cc3' + md5s = { + 2014: '32fea42fae147bd58a83e3ea6cccfb94', + 2018: '80f25dcba72e39685ab33215c5d97292', + } class ChesapeakeCVPR(GeoDataset): diff --git a/torchgeo/datasets/utils.py b/torchgeo/datasets/utils.py index 2f72916982d..9dc3b604f2e 100644 --- a/torchgeo/datasets/utils.py +++ b/torchgeo/datasets/utils.py @@ -18,6 +18,7 @@ import subprocess import sys import tarfile +import zipfile from collections.abc import Iterable, Iterator, Sequence from dataclasses import dataclass from datetime import datetime, timedelta @@ -55,27 +56,6 @@ def __exit__(self, exc_type: None, exc_value: None, traceback: None) -> None: pass -class _zipfile: - class ZipFile: - def __init__(self, *args: Any, **kwargs: Any) -> None: - self.args = args - self.kwargs = kwargs - - def __enter__(self) -> Any: - try: - # Supports normal zip files, proprietary deflate64 compression algorithm - import zipfile_deflate64 as zipfile - except ImportError: - # Only supports normal zip files - # https://github.com/python/mypy/issues/1153 - import zipfile - - return zipfile.ZipFile(*self.args, **self.kwargs) - - def __exit__(self, exc_type: None, exc_value: None, traceback: None) -> None: - pass - - def extract_archive(src: Path, dst: Path | None = None) -> None: """Extract an archive. @@ -95,7 +75,7 @@ def extract_archive(src: Path, dst: Path | None = None) -> None: ('.tar', '.tar.gz', '.tar.bz2', '.tar.xz', '.tgz', '.tbz2', '.tbz', '.txz'), tarfile.open, ), - ('.zip', _zipfile.ZipFile), + ('.zip', zipfile.ZipFile), ] for suffix, extractor in suffix_and_extractor: From b73b77f08231f9ede77a6ab61c7a8f125fa831cc Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 7 Aug 2024 19:55:52 +0200 Subject: [PATCH 2/9] Hard-code cmap, don't want to write yet another test file --- torchgeo/datasets/chesapeake.py | 55 ++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/torchgeo/datasets/chesapeake.py b/torchgeo/datasets/chesapeake.py index dd9c24dff8a..27bc0bfc9d3 100644 --- a/torchgeo/datasets/chesapeake.py +++ b/torchgeo/datasets/chesapeake.py @@ -83,20 +83,47 @@ def state(self) -> str: """State abbreviation.""" return self.__class__.__name__[-2:].lower() - @property - def cmap(self) -> dict[int, tuple[int, int, int, int]]: - """Color map for the dataset.""" - cmap = {} - file = self.files[0] + '.vat.dbf' - with fiona.open(file) as src: - for feature in src: - p = feature['properties'] - cmap[p['Value']] = (p['Red'], p['Green'], p['Blue'], 255) - - # NoData Value - cmap[127] = (255, 255, 255, 255) - - return cmap + cmap = { + 11: (0, 92, 230, 1), + 12: (0, 92, 230, 1), + 13: (0, 92, 230, 1), + 14: (0, 92, 230, 1), + 15: (0, 92, 230, 1), + 21: (0, 0, 0, 1), + 22: (235, 6, 2, 1), + 23: (89, 89, 89, 1), + 24: (138, 138, 136, 1), + 25: (138, 138, 136, 1), + 26: (138, 138, 136, 1), + 27: (115, 115, 0, 1), + 28: (233, 255, 190, 1), + 29: (255, 255, 115, 1), + 41: (38, 115, 0, 1), + 42: (56, 168, 0, 1), + 51: (255, 255, 115, 1), + 52: (255, 255, 115, 1), + 53: (255, 255, 115, 1), + 54: (170, 255, 0, 1), + 55: (170, 255, 0, 1), + 56: (170, 255, 0, 1), + 62: (77, 209, 148, 1), + 63: (77, 209, 148, 1), + 64: (56, 168, 0, 1), + 65: (38, 115, 0, 1), + 72: (186, 245, 217, 1), + 73: (186, 245, 217, 1), + 74: (56, 168, 0, 1), + 75: (38, 115, 0, 1), + 83: (255, 211, 127, 1), + 84: (255, 211, 127, 1), + 85: (255, 211, 127, 1), + 91: (0, 168, 132, 1), + 92: (0, 168, 132, 1), + 93: (0, 168, 132, 1), + 94: (56, 168, 0, 1), + 95: (38, 115, 0, 1), + 127: (255, 255, 255, 255), + } def __init__( self, From a989656d29062378474c62c832d05e4ffcbc811c Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 7 Aug 2024 23:01:42 +0200 Subject: [PATCH 3/9] Update tests --- .../BAYWIDE/Baywide_13Class_20132014.tif | Bin 18493 -> 0 bytes .../BAYWIDE/Baywide_13Class_20132014.zip | Bin 9848 -> 0 bytes .../data/chesapeake/{BAYWIDE => lulc}/data.py | 94 ++++++++++-------- .../lulc/dc_lulc_2018_2022-Edition.tif | Bin 0 -> 16945 bytes .../lulc/dc_lulc_2018_2022-Edition.zip | Bin 0 -> 11714 bytes .../lulc/de_lulc_2018_2022-Edition.tif | Bin 0 -> 16945 bytes .../lulc/de_lulc_2018_2022-Edition.zip | Bin 0 -> 11707 bytes .../lulc/md_lulc_2018_2022-Edition.tif | Bin 0 -> 16945 bytes .../lulc/md_lulc_2018_2022-Edition.zip | Bin 0 -> 11717 bytes .../lulc/ny_lulc_2018_2022-Edition.tif | Bin 0 -> 16945 bytes .../lulc/ny_lulc_2018_2022-Edition.zip | Bin 0 -> 11720 bytes .../lulc/pa_lulc_2018_2022-Edition.tif | Bin 0 -> 16945 bytes .../lulc/pa_lulc_2018_2022-Edition.zip | Bin 0 -> 11715 bytes .../lulc/va_lulc_2018_2022-Edition.tif | Bin 0 -> 16945 bytes .../lulc/va_lulc_2018_2022-Edition.zip | Bin 0 -> 11714 bytes .../lulc/wv_lulc_2018_2022-Edition.tif | Bin 0 -> 16945 bytes .../lulc/wv_lulc_2018_2022-Edition.zip | Bin 0 -> 11717 bytes tests/datasets/test_chesapeake.py | 60 +++++------ torchgeo/datasets/chesapeake.py | 1 + 19 files changed, 86 insertions(+), 69 deletions(-) delete mode 100644 tests/data/chesapeake/BAYWIDE/Baywide_13Class_20132014.tif delete mode 100644 tests/data/chesapeake/BAYWIDE/Baywide_13Class_20132014.zip rename tests/data/chesapeake/{BAYWIDE => lulc}/data.py (54%) create mode 100644 tests/data/chesapeake/lulc/dc_lulc_2018_2022-Edition.tif create mode 100644 tests/data/chesapeake/lulc/dc_lulc_2018_2022-Edition.zip create mode 100644 tests/data/chesapeake/lulc/de_lulc_2018_2022-Edition.tif create mode 100644 tests/data/chesapeake/lulc/de_lulc_2018_2022-Edition.zip create mode 100644 tests/data/chesapeake/lulc/md_lulc_2018_2022-Edition.tif create mode 100644 tests/data/chesapeake/lulc/md_lulc_2018_2022-Edition.zip create mode 100644 tests/data/chesapeake/lulc/ny_lulc_2018_2022-Edition.tif create mode 100644 tests/data/chesapeake/lulc/ny_lulc_2018_2022-Edition.zip create mode 100644 tests/data/chesapeake/lulc/pa_lulc_2018_2022-Edition.tif create mode 100644 tests/data/chesapeake/lulc/pa_lulc_2018_2022-Edition.zip create mode 100644 tests/data/chesapeake/lulc/va_lulc_2018_2022-Edition.tif create mode 100644 tests/data/chesapeake/lulc/va_lulc_2018_2022-Edition.zip create mode 100644 tests/data/chesapeake/lulc/wv_lulc_2018_2022-Edition.tif create mode 100644 tests/data/chesapeake/lulc/wv_lulc_2018_2022-Edition.zip diff --git a/tests/data/chesapeake/BAYWIDE/Baywide_13Class_20132014.tif b/tests/data/chesapeake/BAYWIDE/Baywide_13Class_20132014.tif deleted file mode 100644 index 8deb2ecb5962b3e2bc29abb26d965908d6d23958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18493 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 W(Utz}iCK~FVm^lfb|`23^Zx*K(GCj$ diff --git a/tests/data/chesapeake/BAYWIDE/Baywide_13Class_20132014.zip b/tests/data/chesapeake/BAYWIDE/Baywide_13Class_20132014.zip deleted file mode 100644 index af6c5db24304d367d09492a6ba13b2c7f3fb8514..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9848 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 H0KoqM1G7{6 diff --git a/tests/data/chesapeake/BAYWIDE/data.py b/tests/data/chesapeake/lulc/data.py similarity index 54% rename from tests/data/chesapeake/BAYWIDE/data.py rename to tests/data/chesapeake/lulc/data.py index dbf807ce0fe..b828baaa180 100755 --- a/tests/data/chesapeake/BAYWIDE/data.py +++ b/tests/data/chesapeake/lulc/data.py @@ -4,8 +4,7 @@ # Licensed under the MIT License. import hashlib -import os -import subprocess +import shutil import numpy as np import rasterio @@ -13,7 +12,6 @@ from rasterio.transform import Affine SIZE = 128 # image width/height -NUM_CLASSES = 14 np.random.seed(0) @@ -41,24 +39,50 @@ AXIS["Easting",EAST], AXIS["Northing",NORTH]] """ -cmap = { - 0: (0, 0, 0, 255), - 1: (0, 197, 255, 255), - 2: (0, 168, 132, 255), - 3: (38, 115, 0, 255), - 4: (76, 230, 0, 255), - 5: (163, 255, 115, 255), - 6: (255, 170, 0, 255), - 7: (255, 0, 0, 255), - 8: (156, 156, 156, 255), - 9: (0, 0, 0, 255), - 10: (115, 115, 0, 255), - 11: (230, 230, 0, 255), - 12: (255, 255, 115, 255), - 13: (197, 0, 255, 255), -} +values = [ + 11, + 12, + 13, + 14, + 15, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 41, + 42, + 51, + 52, + 53, + 54, + 55, + 56, + 62, + 63, + 64, + 65, + 72, + 73, + 74, + 75, + 83, + 84, + 85, + 91, + 92, + 93, + 94, + 95, + 127, +] + meta = { 'driver': 'GTiff', 'dtype': 'uint8', @@ -70,26 +94,18 @@ 'transform': Affine(1.0, 0.0, 1303555.0000000005, 0.0, -1.0, 2535064.999999998), } -# Remove old data -if os.path.exists(f'{filename}.tif'): - os.remove(f'{filename}.tif') +for state in ['dc', 'de', 'md', 'ny', 'pa', 'va', 'wv']: + filename = f'{state}_lulc_2018_2022-Edition' -# Create raster file -with rasterio.open(f'{filename}.tif', 'w', **meta) as f: - data = np.random.randint(NUM_CLASSES, size=(SIZE, SIZE), dtype=np.uint8) - f.write(data, 1) - f.write_colormap(1, cmap) + # Create raster file + with rasterio.open(f'{filename}.tif', 'w', **meta) as f: + data = np.random.choice(values, size=(SIZE, SIZE)) + f.write(data, 1) -# Create zip file -# 7z required to create a zip file using the proprietary DEFLATE64 compression algorithm -# https://github.com/brianhelba/zipfile-deflate64/issues/19#issuecomment-1006077294 -subprocess.run( - ['7z', 'a', f'{filename}.zip', '-mm=DEFLATE64', f'{filename}.tif'], - capture_output=True, - check=True, -) + # Compress file + shutil.make_archive(filename, 'zip', '.', filename + '.tif') -# Compute checksums -with open(f'{filename}.zip', 'rb') as f: - md5 = hashlib.md5(f.read()).hexdigest() - print(repr(md5)) + # Compute checksums + with open(f'{filename}.zip', 'rb') as f: + md5 = hashlib.md5(f.read()).hexdigest() + print(state, repr(md5)) diff --git a/tests/data/chesapeake/lulc/dc_lulc_2018_2022-Edition.tif b/tests/data/chesapeake/lulc/dc_lulc_2018_2022-Edition.tif new file mode 100644 index 0000000000000000000000000000000000000000..ca32088164fdfea2616641e572968b71b49a92c1 GIT binary patch literal 16945 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 literal 0 HcmV?d00001 diff --git a/tests/data/chesapeake/lulc/dc_lulc_2018_2022-Edition.zip b/tests/data/chesapeake/lulc/dc_lulc_2018_2022-Edition.zip new file mode 100644 index 0000000000000000000000000000000000000000..9cadbeeadc3ed6b48a1f0721462a435fb36ff2b9 GIT binary patch literal 11714 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 By%+!h literal 0 HcmV?d00001 diff --git a/tests/data/chesapeake/lulc/de_lulc_2018_2022-Edition.tif b/tests/data/chesapeake/lulc/de_lulc_2018_2022-Edition.tif new file mode 100644 index 0000000000000000000000000000000000000000..21bf4f29452994c19073868c0dfe79f0165fb1df GIT binary patch literal 16945 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 literal 0 HcmV?d00001 diff --git a/tests/data/chesapeake/lulc/md_lulc_2018_2022-Edition.tif b/tests/data/chesapeake/lulc/md_lulc_2018_2022-Edition.tif new file mode 100644 index 0000000000000000000000000000000000000000..2135a007504ad9e93c1455d431f9c24c4c74c4cc GIT binary patch literal 16945 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

MwlX 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 H2FCvYi^$V6 literal 0 HcmV?d00001 diff --git a/tests/data/chesapeake/lulc/ny_lulc_2018_2022-Edition.tif b/tests/data/chesapeake/lulc/ny_lulc_2018_2022-Edition.tif new file mode 100644 index 0000000000000000000000000000000000000000..0288f062aecb06a472feda81e9864e0a9068254e GIT binary patch literal 16945 zcmZX*P0RK?pC5KT^Gqj`TDH=HWy!KjXjaxPShftMej$Ca<)*rc|M$-q!he4gAMiK--9JD7_3QuI{`~A;AOH31 z|NrC9_xk<+F&_W#pZ!_>+yCj`I{x()zx!=O{_S7C{t#pG^Z#EQ|KJb*^iTB9MHrOd z{raE(+VB4OPyghPe(7I-^xNP6`@iv5|M*}0$?tysm0!hgN8APZx$e*MANG_oLSqjY^HF+K3DqY&3|i1dv}OdiQ*~h zqCcAWKBbtRM!d&4hfx*paIbyNq2|@c`g{yzXIr$PNNT69q|!0>mQnMi4{g(Jtt?6L zJjQAD)OCIJ{nZzFQgTmgwXEe;9sacQ)6`?p-_IQcE8;rNzJ6Z2p6=~xM*ZfmY38ex zd1bjxvL9|PzHauyj%jE=F~(Tx%=sycw$y!SY(BNwWzQc|n|C`C**WdWc*iLhn?H0? zx(&L2ib^SQ@mkb`HCi;o{wy26X}j5!-?Ht>YMt(_?~1dN*5uMn+=hd1m1vgM=Vz?C zX1e4`WOlP}i*hLUR@>KJU0Zz49GFS2y zbsSV*kFBF_Z`rH9va`=vG`1{#uIXd=c(qI)V`B3eglyL5>rKR?60(&|{blv0y(;Ke zb?h8FwZCF%S#XQF3RCr^x!rBm>mLAvgUcS$fN^`!S$up@4ZE8QuG&Mclj%B@t&h*&#<)MnzLmjJ64p&Rp z?+D`bR@{>$E>^59dNrI)==&wy-!O+YoMX|RzB2bJ>3gyHyZMSKvc-9sYcjNVCd0;? zCHC{(;A^d`J=7ffu{HC!TlwjExb5|-=@IkPIn%jmn9UO1%BP_X+v|ucXA?x*lzywz zJ#A#{-ugE3;U>|rUFVXbUYB%K$56e;I7P92{N_wwz739Oci%YJJ=Q%ujq>v@T*F1r*)8J4&dq%h>V zc-cpRk(37&Wg7WC-z;}cGxMU|r`$Y_w|dUkVY0mHEL_yG^dh#$_VmqHcga?aQJc2s zx~SGUFRovh6e)LwPuuQJ>uj{caED zA&H*mI8vlr80gk5rZttiDm=KSSmoT(>Rb9^&t&dcS*A%{B;RtO#~D#?dU|%E7UC#r zsH?h?t$MrV2|CW#*z63qEUR&B!X+R1s;9#!9O}v27_4+R?vVFBEoq!u)*j6h#5Vj) ztYbP{?-zc|wo+Ti*M}%A{IQSUdeW)tF^YLuLf1}ra7SgT#(z&Uyj58*f#RbEax;Cu z{k9#dIYv>lC!hW+&VDC8?otPGSF?C;5}D_u*_xiuDzxY5T}_-`v#RJ&` z742P5_|Wxaqjk*Yn>Af?_}lkgp5}Qwq>onRNAwocp;gD;5IM|sdhT@(?bc?RM^6Z6 z`l8;a^{Nu{dR3Kgs;Rk(&y)A6#bC*(#^^JBw@0Q`uC!T|EuHaN?&oPc<;x;%Hr}G& zWAx+V=(!KQ%4S}V_?@#!bvK9o*jc^$Q}%O;ZaZSp8E5!XEaAYXoS_}tf*N{W{UxSj zDZ6>29lK*1)!7G?%DG||9dIi0R>{5Swa-^xu2`wQU)SUoH!gD4oaDY8ba%N8{|4{A6?L?7?~8FP);t%M_86hJ$h;9xKIC+M z`f4_U&Aid_3b9%X$ind`?k=Dyu>RtMVx?b>|O;p?^S zY)@W%=`G7ceY+Obr^G6CiE=g+?0BBVvLmYEIyMw%lSo+E>#qj4x&)hjy*KCBhI8+% zUETdsT18`TI;NsUE5O14KJncxxIRx--)B=D-zYR=t7@eb-7#?g^kQF+EmqrlFj);# zH}JRC7}4(Or=Mb{zV(ZJ%Ldj;W9`(n&(y7#So}=yo_*Zhc^#HiuZ63xP;QZ~d)pk* zKC5^uQT0_SWw?vHkAyrTxa)F?v&fp_D(TJkzAf1OWL>i48ClN#NZ@3vKLsO)B@m{o7@ z%ch}T$#&LbwTEFaPeCfosZGUkiBH-~Iq&G4>sPzJ zx^S}h^SBO`cs8B=Tgf>#-?Fu;ZKix?JL|gvbk%P0pZWB;uM+SM7-rdv`jhR@Np-rD zvB;%bs`t(8N_?zmQBHIP@I-5vb@JVara=ZDscw5?Q4-$iI+g*=8Mv;z(}ZoO#(A z5$3cPUfgdI`$oD@X7teIGW1RSGZP-w#!@qN>Dc{7`Gn!$o|EWms6Q`D2B>w9=zwu{ z4wpo#m}R8~SaA1i6_@cfOcM587lAG=(W>#P`+ zpO%5!Wefz}_#12XgIw;fT`0Q>c`c-%5(S*1fS1krvg#U+SGNA(7kxmvT%O4K7LcymB@~<&YjsWodb+wxZBl zm7*I5?b}yW!&u1;)4sm=G%nYPa=mf6e8=bjwF&4l8_3ZVeQ;inW6fi%#mlW+)mDK_ zHUv=l6#J`1fpvc!Lw7vO(U9FXU%!Jn(EAN=hD0(OwR+Nu=`FvY& z%5Gb3L9J`T$DFI)Al6NEozuN1Ut3V{lwVb>uqVg22AK8?y267@jk01 zOuESCvxceRI|P{ttLnS&I5kBNP+lHM$gWh!Q$|IOD;94(H?n+r&D|mI?RF`~A<(>5 zx$x7eF^#m9fD;|1a^lNbt4WW%sxR~eSC9}1@PZ_rGOduYI+0d3u1TY-(D~2)h@WY_nq2-nw3#)YiOZ~1cqR$*v{Z&Lv zeO+!F2&B;f(Wrt(u_sbqM+Xi*vfXy)v61_&!@W~RCaj@47=Pv&&8?__-5WEEQ$D8n zsQUepIU02?SHC<9*(Vq8wKS_K)FPG{Yf~@h;IDX&Cs6WaBI&~yK2t8o!)$u#{3H%+ z1@Ms;)SktkRX%J=xRHIC9BJnh5L>^1ptnkwoWxvYb?~QEn9}{o1TIbtQ~D`G7fUp% zp?JxZ^=NzD1HV7=0ER=&dfU`PdHH^XHnGE)sE_^GDxY~HK(juy4_!cOI@aNzfCY!yx-sp zuy()oqImaVEGHD#HGVJZWjZh&5MRFtv;IImH;8>+L@(bnZo6lAdK>-PM#?@zrYIuY}M$4+WLr+Yl2E^GVA z&TxEAa{Sm`2{l1n9<$l)d4ABHIP{nGL6hUDIclZP!4_Y8xx>^Ktu74sc;~CF#iXvxzp&NCPcIxU$U(piu^xt&`MU4@l|jx4 zQG(}kTRGH#GjLul=QS(0bZZ@Dy?XXEGCg8(kX)+Mem%Dbf1egGzJbhmUb31# zG9OJ_5a5&8A9Y&Obsb@K13|M?>sd~AcF)H}yk{bIN7CBmiWTkxy>>68s_AA+337V{ z`Sd5APgp~)_` zh{50K?M4&%`Bl$GdkSTx+N(jB^HQ(vsJR#&CIj%d%fqp*=t6*$D?$T-fz)`}bS%TS`xiBI~Szh!e*Hd-zIl6Nq>8&zoQH{P* zlxNz8xrGoI%EkNATYW-gIi?PJ5gk@YMS&3jQ9X?vKL*xa&Ds@DJweJf5xvAk0{&yk zwXy>EqieK1=t%RPhqKG?b3MBo``PWbuY68VhJHUmZb!qb`8b5d5|#3{eh{toax4$P z;dh3GU-s3qn_@w%y?zj z*YiM&96;I!(Ld%(QcQJO&S&DRpJ*wDuKk|l9h=HD!$Jb)P4uSd=m?3H@E*AKYKj*K~vSe8$wr%$gN%3j8~kg&9E}g{}LeDxS#X3cWlV;9bn|Yme8- zNHFuvYaOdrT1*_ddbWQII?Zfmv65ML5bRDA(YJe{4V{ik2sDPF^roNA)b`&YfnWLa zpf&aTHqLT<>#y%A}Pvyslw0Oq{mDxP= z=uZJNAY02>4WJ4wL3dR-U1_o)lLlx!Uez{Vaubu>T;n|ahqHA+c<;sK#Z5JWq^J<{ zxN_Gu%Nxjf3=0`g{dovx0_qJAX4d#PzF%d{$VllTp45QXorl>|kbssj5p2PE5W=fY zonS{l;81TZDorz750sBjui)f90rZ2POhEFWA`mVncb*~y%H5T0(^%6LOQMa^_S-5u z@}vrIIpDt;y3;6}P10=@RF`#TeJu}?)OD?0|E+O>3sHi>t~b~s#WRC!a?d%|9tt14Gy5ZnS~9#X}5N50fYyGO6u zTy%BMPDtx;1sl0sbekZGUf)jUVlPh%I#u3L?llDVS-$*%&MXq&%~B77uCSHle0#Rh zdh46UT}?r|0v5y5-8w23n5taE6BNWI0L|U?09Wz&z9~=a5v10~5a+=RY-w?!?8j$y zxqZmEAN9$J0h`$Fp-ehMq^!qgW6#s05616#_u6(jEzI&E+r0zVGk5hs=R7)$nrpeb zrltUXXe8^YSI70t4R>hA7Z&E6t9^uAA^NgjU8Adt8vcrzxak>9k#9%*Ji02>_jq9l z6&Gv!jq}xY6K}?Sx*_H6BKoFbaw?h>!s3l?9=J)es31k}Q#$MjjlIF>znzDA^5&W? zL>=}R(CNA&U%39!?@`SR1j&xocTZ#ki-FSehOMfUYZoFQD?cstO9N(C%*PX81d{K* zD8R{4*kw6juws-uoj<+H7Sg0?&E?)uR*!rBIZ7G>4D! z6Kxwl)qs;ZX1>Ehf1{--257rk4A(sjG^(-aia|XG>FfJ@)$&cT`{_RXT1qM9PqPO) zM8AipNGfX4`pUFt1_{h&5lGEaa32Tsb029Y0r4GL-)Tul5~st=?{?2`b(c`k*xAJt zQ*Hq0jgeczVy}AFHo>_%conz1C1|ezM8zg&0;_k1wZDd+!o<`#y;thOXX* zudJFrevu!wAGn*G9@74BLTCTkzpC#w0;E4rQmg#Zq!;LSArieq)JsT)R*FY-Yl zhl?d3HwSuH{m%A5vwdMTHBWmls9^yz^uy$x<@ygfj0F4jb(EEZ=K0~~AJ$mij4riRi|z+A$5fq=}b@J0t4 z_ns!)n57l%?r~+0y<8pVZW=+JZ)mxztapF1_doY7{5&wL2D z)Wc@jpcf15VE3oN`0yEPHSF_6coUASgh-I|E{H6}lu#|ZAL;ZYFl#T_l-jNn++Chp zv-L^FV-1+=6Z+Z<%j~|peXH8^@i)J0svT(A2ey^swg$8_HN$Qin+jSxgVGSow$9^$ z^?K_92>rR~`GFub!y_~t{!!oloJRlnyWx8aB$h*0Y@*RO0Iy4wg>5$y*idz{FS|Xs zt~Pom&+vh1&DKwF@ZdibxxykVL!pT-C-B~@X(uJ*0}XmWm5%5RsjncCT@o0-FJdbg zp!HSu`rFDOOgsz8orTS7w&`^}|1d!*jLJ&&Gn?%9oh=891(Hg-?;vob4ivLQyk|nH z0dVwNAt|g1US_M<)<8~zxbuALe47z{3k9|Fs44IO1x#Qa(3IYtz7d8I+?=&-lsky6 zR#C4Io_HzYAn7mph=>6)L|s@Hsou+kH;kPz>o$yL*+zq96K6;OarbOF%XMFRzWW7E zTn96)jh{&Nc4awG0d#;tZI>0B`=zwga?g5c zr%B!EhJrMS?#uHo8eY8x+t)0WU754j$XhN;wM_I%9Tf;OjUa%$^KD52it2s^#8nDL z)*;#Dsw;bz-oYCkT5pH8IhQTvP~AOjn*dwWF0h*#1#5ypX<1up(Lb+muJ?FK!6x6! z{yu~BPrJl6OR|dt>wzdcFpHQJYsUD(yZhnuew_NSM&R#&M9l(or9`SonrphjFwQu* zPmNo_y5nvSz$8-G-bohKuy2sN&*jv9=3MOiGiV^?apcQelIFd&fd^1b%QQ|5`U)CB zAq@Q5sS-n~@%R~V#Y z*(ZGuaec3tC3{120?8nXqkM`zg&V1w3@eT7Pn(_vp6iMgq0IQa)%8JrkP<){_inH63k40fn?QR= zSjGco@`G*e4ws=8$|qq7sqzO(}V3~RwmpA%SdxAoTX z#z}WTgDCp1w4-*N{+e!w3p_!+o94T6m0|19uEZ7N1l~@H1qmEp5H$)~gLxZd%`(LU zeY096$E;sKA-ri2PML^=sy#fuV;mYcDEh-jB+Ve1do^Xd6lW{~Y#YIY9&e;gh16(k z>XWs2Gf+;|9tYiHZV+az@(^@hwMLIE}pK)FS2@FuSIH4Tvfl zmJB%V*@zy&+H2n{-Hk1>)pPrV?gmla+MQf4Oj1OwVS54nLGBrAkq#^gy}N3kfmXM~ zuDN9NnQ52U!Hd2Z(|Vh=JP~#s$2_IESss6G?~U~DkWp;9)~k86DaC9dLAl zCFC!^lBFr#>DwxhN9P`%k42nwBFdZ$>rpa~n4Zqi;uYGJ4*r?$1lIv6YGSmDvs&B! z>fn!&b~lh6Z&=R>A$V9r$6R>CtP=kHurM#*5@EMFNAxlSYIhkCq=8NmQBL&| z{`PUsv^^-4e?IzYMZ{MB_^q`-p$6;EtwK)zLedh!-;*T7+CE&dp>xm=iv~hOd)aNh zCvH(~>{p&pfAT&dGP__d!1At8rinjHt84?seE)WIjua2H!+F1nU%?n_sD!;tT9c2h zSI^~y(0$o2+lPn)9}^PC<)wN6`bA%u!;iOZ-6QF8}q`Y$hTdli*g}i&bTF-GKCQyzR%qdGVYRgb1cCtq2_si--8V{l3DCz;o!~G2GkPl}Cun_?A&G$rcswsN+G7jxgsH9-0)zj2|h{Y?fk$Sd<%66*I2#vA@*tl*p$l#B?0mHh?nphhI{0jua6&Ky9~`T=yD0l}2L^b6F2To(`|)!mNp zh$lpS&2*I$k`Lx5{sBv?7gq}yH#eWx_qtsuQrbPm=Lf_gwhF^~EmK0^h+*$X8PD^6 zqB&`LnUWU3Y!J}ZL0N3yw>;?$r7>+Qo-Y5ax}E~drUz@=J}Ow9<{SOimMv}26)ZY} z4(I{6=|}jmAYngQ;9uH&t!=f`v#GZ^E(03=7{-H=o0yv@X!A3=DgJ zAL}(?tAIa;lvntHx>#Z3h@u_Xc3f>^PY0#dH3{LyZ-Vb7(APKX1X5{Daxf1bfRP{f z`$QD1H>w1^xoU4S_PZFW<}SGd#@*3v$%_ z>5vm&DV+iq<8fG|?u+paHNfZ%cUt%sDjVWp0R@G(>VY*kj0D~JtNjjf|Jkcr_7qa$ zy6okR&_#vN5bDnYm<#_68Xpic0o8U0s11rD4YSs3D^lg-Fwf8pEMJa7tlaB}s91vs zhJbtUu%ghKUTn=sO(UzS0twJxwEj#{ji~cN&iIC?bcn zlurb}1h!R3yN+=~bYm|b*KDLwSC*j-uAoaz?+9rZ@sOWgIi|-Dpk)4}VPPgehj`{2 zp+sYw@twz~D-hU}NK53ZTr2F~p^zhaHLXEld%%6c!|2bYs1jucF3G&%lt3^`)l~9AMz^I+Es|it_aJLZ$LKuflk%zY8V3*cI^yo zgsp^q+XJ`R+#d1?nd}S3S)2%x?CXO49{jGF3Hcv?Bn=?8=z zA!a1t?mR|TS;RD22vQ#KN_B%LOB9lH{oUsw+Ns0ZUj})@kl#VPBNRi@~W16gvd{(q03p6{=ComUq5ZcPLQ7 z+fC*SACTpqlz8YtkTd(_ihVikid{kia0V+0Hi}+~2MKrY6Xlb;Z;VJrD(=GP8w?GtLe-byV+s>$K5n zsFD1=@uBp=Ry3%&aN9wjC+wP;;02yF^aN-_{@q5apiv)}ZojT68bk!| z@hkRf{op1+d{P5+IEjrKif))F)*tN`1p_ZUX=q6w(DATq=amu}?Sd zeg()vNQoDd>7jW|nfeYSpggeQEj#$gZ_!uVTh^(9UL13AU0+f^JN3TAZgYOK zj9-SxioFAX?Rl<-pb&~dD68RJiNY|3-ggD8GvG$_HU|ul4pjI3z{*169w}?9p{c)H z(!e~^K@YH3J07!Z3S{n~3+Z8``^}F-yyLxI?ay?BRqY7ut7YTmxFQX05S)8%c>M`P zl?|L#oFgvxKy1H2bb7VyckaZqa3mt@X@!by52Qi18VJ5S>GEY*{$eQ$u{^_2ZK5BV zJ3qBa!-*ZVYZi+1aG8K2VJyJ$69l%>rwWcTO6%^j$JYQw--~QBK6Lflwqiqbxnc(~ISbJ`3Gc1l ml;=zmT_YG$s@92;>tY{o)U%ymzUg>u2Pi{*`D6;_IRAetwW>(~ literal 0 HcmV?d00001 diff --git a/tests/data/chesapeake/lulc/ny_lulc_2018_2022-Edition.zip b/tests/data/chesapeake/lulc/ny_lulc_2018_2022-Edition.zip new file mode 100644 index 0000000000000000000000000000000000000000..fee8fcc86650dbd05206153ab14934fe915fd502 GIT binary patch literal 11720 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 F{T~@H`-%Vn literal 0 HcmV?d00001 diff --git a/tests/data/chesapeake/lulc/pa_lulc_2018_2022-Edition.tif b/tests/data/chesapeake/lulc/pa_lulc_2018_2022-Edition.tif new file mode 100644 index 0000000000000000000000000000000000000000..ef61f53183fef879a25614e7d627277c9ded0516 GIT binary patch literal 16945 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 literal 0 HcmV?d00001 diff --git a/tests/data/chesapeake/lulc/pa_lulc_2018_2022-Edition.zip b/tests/data/chesapeake/lulc/pa_lulc_2018_2022-Edition.zip new file mode 100644 index 0000000000000000000000000000000000000000..4afe96a532848ef316df6bd70e8059b0b5d9578a GIT binary patch literal 11715 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 Hh4p^`JB#*B literal 0 HcmV?d00001 diff --git a/tests/data/chesapeake/lulc/va_lulc_2018_2022-Edition.tif b/tests/data/chesapeake/lulc/va_lulc_2018_2022-Edition.tif new file mode 100644 index 0000000000000000000000000000000000000000..00f09fae24f38550a3c32b90560a4c331b161565 GIT binary patch literal 16945 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

*VX| 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 literal 0 HcmV?d00001 diff --git a/tests/data/chesapeake/lulc/va_lulc_2018_2022-Edition.zip b/tests/data/chesapeake/lulc/va_lulc_2018_2022-Edition.zip new file mode 100644 index 0000000000000000000000000000000000000000..795cae8e293452798b356a11e34adf098753bee3 GIT binary patch literal 11714 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 Cv){Y` literal 0 HcmV?d00001 diff --git a/tests/data/chesapeake/lulc/wv_lulc_2018_2022-Edition.tif b/tests/data/chesapeake/lulc/wv_lulc_2018_2022-Edition.tif new file mode 100644 index 0000000000000000000000000000000000000000..217d64e1eb6339d3571c9ce7a63bcf9dbc11ae31 GIT binary patch literal 16945 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⁔o$S>4FgV4nj&@;%91k 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 K_-EEeL;F8->iC@i literal 0 HcmV?d00001 diff --git a/tests/datasets/test_chesapeake.py b/tests/datasets/test_chesapeake.py index 6125b8c8f88..546ba41177d 100644 --- a/tests/datasets/test_chesapeake.py +++ b/tests/datasets/test_chesapeake.py @@ -16,8 +16,8 @@ import torchgeo.datasets.utils from torchgeo.datasets import ( BoundingBox, - Chesapeake13, ChesapeakeCVPR, + ChesapeakeDC, DatasetNotFoundError, IntersectionDataset, UnionDataset, @@ -28,71 +28,71 @@ def download_url(url: str, root: str | Path, *args: str, **kwargs: str) -> None: shutil.copy(url, root) -class TestChesapeake13: +class TestChesapeakeDC: @pytest.fixture - def dataset(self, monkeypatch: MonkeyPatch, tmp_path: Path) -> Chesapeake13: + def dataset(self, monkeypatch: MonkeyPatch, tmp_path: Path) -> ChesapeakeDC: monkeypatch.setattr(torchgeo.datasets.chesapeake, 'download_url', download_url) - md5 = 'fe35a615b8e749b21270472aa98bb42c' - monkeypatch.setattr(Chesapeake13, 'md5', md5) url = os.path.join( - 'tests', 'data', 'chesapeake', 'BAYWIDE', 'Baywide_13Class_20132014.zip' + 'tests', + 'data', + 'chesapeake', + 'lulc', + '{state}_lulc_{year}_2022-Edition.zip', ) - monkeypatch.setattr(Chesapeake13, 'url', url) + monkeypatch.setattr(ChesapeakeDC, 'url', url) + md5s = {2018: '35c644f13ccdb1baf62adf85cb8c7e48'} + monkeypatch.setattr(ChesapeakeDC, 'md5s', md5s) monkeypatch.setattr(plt, 'show', lambda *args: None) - root = tmp_path transforms = nn.Identity() - return Chesapeake13(root, transforms=transforms, download=True, checksum=True) + return ChesapeakeDC( + tmp_path, transforms=transforms, download=True, checksum=True + ) - def test_getitem(self, dataset: Chesapeake13) -> None: + def test_getitem(self, dataset: ChesapeakeDC) -> None: x = dataset[dataset.bounds] assert isinstance(x, dict) assert isinstance(x['crs'], CRS) assert isinstance(x['mask'], torch.Tensor) - def test_len(self, dataset: Chesapeake13) -> None: + def test_len(self, dataset: ChesapeakeDC) -> None: assert len(dataset) == 1 - def test_and(self, dataset: Chesapeake13) -> None: + def test_and(self, dataset: ChesapeakeDC) -> None: ds = dataset & dataset assert isinstance(ds, IntersectionDataset) - def test_or(self, dataset: Chesapeake13) -> None: + def test_or(self, dataset: ChesapeakeDC) -> None: ds = dataset | dataset assert isinstance(ds, UnionDataset) - def test_already_extracted(self, dataset: Chesapeake13) -> None: - Chesapeake13(dataset.paths, download=True) + def test_already_extracted(self, dataset: ChesapeakeDC) -> None: + ChesapeakeDC(dataset.paths, download=True) def test_already_downloaded(self, tmp_path: Path) -> None: url = os.path.join( - 'tests', 'data', 'chesapeake', 'BAYWIDE', 'Baywide_13Class_20132014.zip' + 'tests', + 'data', + 'chesapeake', + 'lulc', + 'dc_lulc_2018_2022-Edition.zip', ) - root = tmp_path - shutil.copy(url, root) - Chesapeake13(root) + shutil.copy(url, tmp_path) + ChesapeakeDC(tmp_path) def test_not_downloaded(self, tmp_path: Path) -> None: with pytest.raises(DatasetNotFoundError, match='Dataset not found'): - Chesapeake13(tmp_path, checksum=True) + ChesapeakeDC(tmp_path, checksum=True) - def test_plot(self, dataset: Chesapeake13) -> None: + def test_plot(self, dataset: ChesapeakeDC) -> None: query = dataset.bounds x = dataset[query] dataset.plot(x, suptitle='Test') plt.close() - - def test_plot_prediction(self, dataset: Chesapeake13) -> None: - query = dataset.bounds - x = dataset[query] x['prediction'] = x['mask'].clone() dataset.plot(x, suptitle='Prediction') plt.close() - def test_url(self) -> None: - ds = Chesapeake13(os.path.join('tests', 'data', 'chesapeake', 'BAYWIDE')) - assert 'cicwebresources.blob.core.windows.net' in ds.url - - def test_invalid_query(self, dataset: Chesapeake13) -> None: + def test_invalid_query(self, dataset: ChesapeakeDC) -> None: query = BoundingBox(0, 0, 0, 0, 0, 0) with pytest.raises( IndexError, match='query: .* not found in index with bounds:' diff --git a/torchgeo/datasets/chesapeake.py b/torchgeo/datasets/chesapeake.py index 27bc0bfc9d3..1310d3e9eba 100644 --- a/torchgeo/datasets/chesapeake.py +++ b/torchgeo/datasets/chesapeake.py @@ -190,6 +190,7 @@ def _download(self) -> None: """Download the dataset.""" for year, md5 in self.md5s.items(): url = self.url.format(state=self.state, year=year) + print(url) download_url(url, self.paths, md5=md5 if self.checksum else None) def _extract(self) -> None: From 7254b69a1ffdfb8440334c50668c8a599defa849 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 7 Aug 2024 23:06:57 +0200 Subject: [PATCH 4/9] Update datamodule --- tests/datasets/test_chesapeake.py | 6 +----- torchgeo/datamodules/naip.py | 30 +++++++++++++++++++++--------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/tests/datasets/test_chesapeake.py b/tests/datasets/test_chesapeake.py index 546ba41177d..d1771505baa 100644 --- a/tests/datasets/test_chesapeake.py +++ b/tests/datasets/test_chesapeake.py @@ -70,11 +70,7 @@ def test_already_extracted(self, dataset: ChesapeakeDC) -> None: def test_already_downloaded(self, tmp_path: Path) -> None: url = os.path.join( - 'tests', - 'data', - 'chesapeake', - 'lulc', - 'dc_lulc_2018_2022-Edition.zip', + 'tests', 'data', 'chesapeake', 'lulc', 'dc_lulc_2018_2022-Edition.zip' ) shutil.copy(url, tmp_path) ChesapeakeDC(tmp_path) diff --git a/torchgeo/datamodules/naip.py b/torchgeo/datamodules/naip.py index b414cc0991e..1b861a5c9c2 100644 --- a/torchgeo/datamodules/naip.py +++ b/torchgeo/datamodules/naip.py @@ -8,7 +8,17 @@ import kornia.augmentation as K from matplotlib.figure import Figure -from ..datasets import NAIP, BoundingBox, Chesapeake13 +from ..datasets import ( + NAIP, + BoundingBox, + ChesapeakeDC, + ChesapeakeDE, + ChesapeakeMD, + ChesapeakeNY, + ChesapeakePA, + ChesapeakeVA, + ChesapeakeWV, +) from ..samplers import GridGeoSampler, RandomBatchGeoSampler from ..transforms import AugmentationSequential from .geo import GeoDataModule @@ -49,12 +59,7 @@ def __init__( self.chesapeake_kwargs[key[11:]] = val super().__init__( - Chesapeake13, - batch_size, - patch_size, - length, - num_workers, - **self.chesapeake_kwargs, + NAIP, batch_size, patch_size, length, num_workers, **self.chesapeake_kwargs ) self.aug = AugmentationSequential( @@ -67,9 +72,16 @@ def setup(self, stage: str) -> None: Args: stage: Either 'fit', 'validate', 'test', or 'predict'. """ - self.chesapeake = Chesapeake13(**self.chesapeake_kwargs) self.naip = NAIP(**self.naip_kwargs) - self.dataset = self.chesapeake & self.naip + dc = ChesapeakeDC(**self.chesapeake_kwargs) + de = ChesapeakeDE(**self.chesapeake_kwargs) + md = ChesapeakeMD(**self.chesapeake_kwargs) + ny = ChesapeakeNY(**self.chesapeake_kwargs) + pa = ChesapeakePA(**self.chesapeake_kwargs) + va = ChesapeakeVA(**self.chesapeake_kwargs) + wv = ChesapeakeWV(**self.chesapeake_kwargs) + self.chesapeake = dc | de | md | ny | pa | va | wv + self.dataset = self.naip & self.chesapeake roi = self.dataset.bounds midx = roi.minx + (roi.maxx - roi.minx) / 2 From b8b7a45505efe266ed0cb7691ead2b9bcb163d6f Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 7 Aug 2024 23:17:09 +0200 Subject: [PATCH 5/9] Bug fix --- torchgeo/datamodules/naip.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/torchgeo/datamodules/naip.py b/torchgeo/datamodules/naip.py index 1b861a5c9c2..78af8f1a773 100644 --- a/torchgeo/datamodules/naip.py +++ b/torchgeo/datamodules/naip.py @@ -59,7 +59,7 @@ def __init__( self.chesapeake_kwargs[key[11:]] = val super().__init__( - NAIP, batch_size, patch_size, length, num_workers, **self.chesapeake_kwargs + NAIP, batch_size, patch_size, length, num_workers, **self.naip_kwargs ) self.aug = AugmentationSequential( From 28ac89fbc3b2d7ac483096bd3cc7a154afa1359b Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 7 Aug 2024 23:25:40 +0200 Subject: [PATCH 6/9] Update test config --- tests/conf/naipchesapeake.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/conf/naipchesapeake.yaml b/tests/conf/naipchesapeake.yaml index b5511a26a5a..ca42dbc9f34 100644 --- a/tests/conf/naipchesapeake.yaml +++ b/tests/conf/naipchesapeake.yaml @@ -3,9 +3,9 @@ model: init_args: loss: "ce" model: "deeplabv3+" - backbone: "resnet34" + backbone: "resnet18" in_channels: 4 - num_classes: 14 + num_classes: 39 num_filters: 1 ignore_index: null data: @@ -15,4 +15,4 @@ data: patch_size: 32 dict_kwargs: naip_paths: "tests/data/naip" - chesapeake_paths: "tests/data/chesapeake/BAYWIDE" + chesapeake_paths: "tests/data/chesapeake/lulc" From 0c74e5c17b875bc0a554b1606d4762e6b76ab910 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 7 Aug 2024 23:29:13 +0200 Subject: [PATCH 7/9] Fix plotting --- torchgeo/datasets/chesapeake.py | 76 ++++++++++++++++----------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/torchgeo/datasets/chesapeake.py b/torchgeo/datasets/chesapeake.py index 1310d3e9eba..c3dd0ae88d0 100644 --- a/torchgeo/datasets/chesapeake.py +++ b/torchgeo/datasets/chesapeake.py @@ -84,44 +84,44 @@ def state(self) -> str: return self.__class__.__name__[-2:].lower() cmap = { - 11: (0, 92, 230, 1), - 12: (0, 92, 230, 1), - 13: (0, 92, 230, 1), - 14: (0, 92, 230, 1), - 15: (0, 92, 230, 1), - 21: (0, 0, 0, 1), - 22: (235, 6, 2, 1), - 23: (89, 89, 89, 1), - 24: (138, 138, 136, 1), - 25: (138, 138, 136, 1), - 26: (138, 138, 136, 1), - 27: (115, 115, 0, 1), - 28: (233, 255, 190, 1), - 29: (255, 255, 115, 1), - 41: (38, 115, 0, 1), - 42: (56, 168, 0, 1), - 51: (255, 255, 115, 1), - 52: (255, 255, 115, 1), - 53: (255, 255, 115, 1), - 54: (170, 255, 0, 1), - 55: (170, 255, 0, 1), - 56: (170, 255, 0, 1), - 62: (77, 209, 148, 1), - 63: (77, 209, 148, 1), - 64: (56, 168, 0, 1), - 65: (38, 115, 0, 1), - 72: (186, 245, 217, 1), - 73: (186, 245, 217, 1), - 74: (56, 168, 0, 1), - 75: (38, 115, 0, 1), - 83: (255, 211, 127, 1), - 84: (255, 211, 127, 1), - 85: (255, 211, 127, 1), - 91: (0, 168, 132, 1), - 92: (0, 168, 132, 1), - 93: (0, 168, 132, 1), - 94: (56, 168, 0, 1), - 95: (38, 115, 0, 1), + 11: (0, 92, 230, 255), + 12: (0, 92, 230, 255), + 13: (0, 92, 230, 255), + 14: (0, 92, 230, 255), + 15: (0, 92, 230, 255), + 21: (0, 0, 0, 255), + 22: (235, 6, 2, 255), + 23: (89, 89, 89, 255), + 24: (138, 138, 136, 255), + 25: (138, 138, 136, 255), + 26: (138, 138, 136, 255), + 27: (115, 115, 0, 255), + 28: (233, 255, 190, 255), + 29: (255, 255, 115, 255), + 41: (38, 115, 0, 255), + 42: (56, 168, 0, 255), + 51: (255, 255, 115, 255), + 52: (255, 255, 115, 255), + 53: (255, 255, 115, 255), + 54: (170, 255, 0, 255), + 55: (170, 255, 0, 255), + 56: (170, 255, 0, 255), + 62: (77, 209, 148, 255), + 63: (77, 209, 148, 255), + 64: (56, 168, 0, 255), + 65: (38, 115, 0, 255), + 72: (186, 245, 217, 255), + 73: (186, 245, 217, 255), + 74: (56, 168, 0, 255), + 75: (38, 115, 0, 255), + 83: (255, 211, 127, 255), + 84: (255, 211, 127, 255), + 85: (255, 211, 127, 255), + 91: (0, 168, 132, 255), + 92: (0, 168, 132, 255), + 93: (0, 168, 132, 255), + 94: (56, 168, 0, 255), + 95: (38, 115, 0, 255), 127: (255, 255, 255, 255), } From 868213fe80aedd29643a8483c1c95e56a23380b0 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Wed, 7 Aug 2024 23:52:43 +0200 Subject: [PATCH 8/9] More classes --- tests/conf/naipchesapeake.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/conf/naipchesapeake.yaml b/tests/conf/naipchesapeake.yaml index ca42dbc9f34..9a9f14d678d 100644 --- a/tests/conf/naipchesapeake.yaml +++ b/tests/conf/naipchesapeake.yaml @@ -5,7 +5,7 @@ model: model: "deeplabv3+" backbone: "resnet18" in_channels: 4 - num_classes: 39 + num_classes: 128 num_filters: 1 ignore_index: null data: From 4b5e086285ce241b3c21336299783df7a3e03165 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 8 Aug 2024 00:14:29 +0200 Subject: [PATCH 9/9] Fix docs --- torchgeo/datamodules/naip.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/torchgeo/datamodules/naip.py b/torchgeo/datamodules/naip.py index 78af8f1a773..1be0a64cff5 100644 --- a/torchgeo/datamodules/naip.py +++ b/torchgeo/datamodules/naip.py @@ -47,7 +47,7 @@ def __init__( num_workers: Number of workers for parallel data loading. **kwargs: Additional keyword arguments passed to :class:`~torchgeo.datasets.NAIP` (prefix keys with ``naip_``) and - :class:`~torchgeo.datasets.Chesapeake13` + :class:`~torchgeo.datasets.Chesapeake` (prefix keys with ``chesapeake_``). """ self.naip_kwargs = {}