From aa463d8c609ae2dde726fc33d82451f4ceb0e7e7 Mon Sep 17 00:00:00 2001 From: Gregory Halverson Date: Tue, 26 Nov 2024 14:49:02 -0800 Subject: [PATCH] cleaning up --- rasters/CRS.py | 5 +-- rasters/bbox.py | 5 +-- rasters/coordinate_array.py | 1 - rasters/kdtree.py | 8 ++--- rasters/multi_polygon.py | 3 +- rasters/multi_raster.py | 14 +++----- rasters/point.py | 7 ++-- rasters/polygon.py | 2 +- rasters/raster.py | 64 +++++++++++++---------------------- rasters/raster_geolocation.py | 13 ++----- rasters/raster_geometry.py | 24 +++++-------- rasters/raster_grid.py | 1 + rasters/rasters.py | 1 + rasters/spatial_geometry.py | 2 -- rasters/vector_geometry.py | 9 ++--- rasters/where.py | 2 +- 16 files changed, 56 insertions(+), 105 deletions(-) diff --git a/rasters/CRS.py b/rasters/CRS.py index 2a609c5..ed286c9 100644 --- a/rasters/CRS.py +++ b/rasters/CRS.py @@ -1,14 +1,11 @@ from __future__ import annotations -from typing import Any, Optional, Union - -import math import warnings from collections import OrderedDict +from typing import Any, Optional, Union import pyproj -import shapely.wkt class CRS(pyproj.CRS): """ diff --git a/rasters/bbox.py b/rasters/bbox.py index a256f70..46f6700 100644 --- a/rasters/bbox.py +++ b/rasters/bbox.py @@ -1,11 +1,12 @@ from __future__ import annotations -from typing import List, Union import warnings +from typing import List, Union from .CRS import CRS, WGS84 -from .spatial_geometry import SpatialGeometry from .polygon import Polygon +from .spatial_geometry import SpatialGeometry + class BBox(SpatialGeometry): """ diff --git a/rasters/coordinate_array.py b/rasters/coordinate_array.py index 1e48464..4a76f58 100644 --- a/rasters/coordinate_array.py +++ b/rasters/coordinate_array.py @@ -6,7 +6,6 @@ from pyproj import Transformer from .CRS import CRS, WGS84 -from .bbox import BBox from .point import Point from .spatial_geometry import SpatialGeometry diff --git a/rasters/kdtree.py b/rasters/kdtree.py index a3d99c5..6907aa8 100644 --- a/rasters/kdtree.py +++ b/rasters/kdtree.py @@ -1,15 +1,13 @@ from __future__ import annotations -from typing import Union, Dict, TYPE_CHECKING - import warnings +from typing import Dict, TYPE_CHECKING +import msgpack +import msgpack_numpy import numpy as np - from pyresample import SwathDefinition, AreaDefinition from pyresample.kd_tree import get_neighbour_info, get_sample_from_neighbour_info -import msgpack -import msgpack_numpy if TYPE_CHECKING: from .raster_geometry import RasterGeometry diff --git a/rasters/multi_polygon.py b/rasters/multi_polygon.py index 37219d6..16e25a8 100644 --- a/rasters/multi_polygon.py +++ b/rasters/multi_polygon.py @@ -6,7 +6,8 @@ from .CRS import CRS, WGS84 from .bbox import BBox -from .vector_geometry import VectorGeometry, MultiVectorGeometry +from .vector_geometry import MultiVectorGeometry + class MultiPolygon(MultiVectorGeometry): """ diff --git a/rasters/multi_raster.py b/rasters/multi_raster.py index febcd9e..dd73ea0 100644 --- a/rasters/multi_raster.py +++ b/rasters/multi_raster.py @@ -1,21 +1,15 @@ from __future__ import annotations -from typing import Union, Tuple, List, Dict, TYPE_CHECKING - -import warnings - -import numpy as np -import h5py +from typing import Union, Tuple, List, TYPE_CHECKING import PIL.Image -from PIL.Image import Image - +import h5py import matplotlib.pyplot as plt +import numpy as np +from PIL.Image import Image from matplotlib.colors import Colormap from matplotlib.figure import Figure from matplotlib.ticker import FuncFormatter -from mpl_toolkits.axes_grid1 import make_axes_locatable -from matplotlib import colors from .constants import * from .raster import Raster diff --git a/rasters/point.py b/rasters/point.py index 099716c..f815e64 100644 --- a/rasters/point.py +++ b/rasters/point.py @@ -7,12 +7,11 @@ from shapely.geometry.base import CAP_STYLE, JOIN_STYLE from rasters.wrap_geometry import wrap_geometry - -from .constants import * from .CRS import CRS, WGS84 -from .vector_geometry import VectorGeometry, SingleVectorGeometry -from .polygon import Polygon from .bbox import BBox +from .polygon import Polygon +from .vector_geometry import VectorGeometry, SingleVectorGeometry + class Point(SingleVectorGeometry): """ diff --git a/rasters/polygon.py b/rasters/polygon.py index 709ddc2..f5e4010 100644 --- a/rasters/polygon.py +++ b/rasters/polygon.py @@ -6,7 +6,7 @@ import shapely from .CRS import CRS, WGS84 -from .vector_geometry import VectorGeometry, SingleVectorGeometry +from .vector_geometry import SingleVectorGeometry if TYPE_CHECKING: from .bbox import BBox diff --git a/rasters/raster.py b/rasters/raster.py index 5975ab0..f42e16d 100644 --- a/rasters/raster.py +++ b/rasters/raster.py @@ -1,66 +1,46 @@ from __future__ import annotations -from typing import Any, Union, Tuple, List, Dict, TYPE_CHECKING - -import warnings - +import io +import logging import os +import warnings from os import makedirs from os.path import expanduser, exists, abspath, dirname, splitext +from typing import Any, Union, Tuple, List, TYPE_CHECKING -import io - -# TODO get rid of six -from six import string_types - -import logging - -import numpy as np -import skimage - -import shapely +import PIL.Image import geopandas as gpd - +import h5py +import matplotlib.pyplot as plt +import numpy as np import rasterio -from rasterio.windows import Window -from rasterio.warp import reproject - -import PIL.Image +import shapely +import skimage from PIL.Image import Image - -import matplotlib.pyplot as plt +from astropy.visualization import MinMaxInterval, AsymmetricPercentileInterval +from matplotlib import colors from matplotlib.colors import Colormap from matplotlib.figure import Figure from matplotlib.ticker import FuncFormatter from mpl_toolkits.axes_grid1 import make_axes_locatable -from matplotlib import colors - -from astropy.visualization import MinMaxInterval, AsymmetricPercentileInterval -import h5py +from rasterio.warp import reproject +from rasterio.windows import Window -from .constants import * -from .where import where -from .wrap_geometry import wrap_geometry from .CRS import WGS84 +from .constants import * +from .raster_geolocation import RasterGeolocation from .raster_geometry import RasterGeometry from .raster_grid import RasterGrid -from .raster_geolocation import RasterGeolocation +from .where import where +from .wrap_geometry import wrap_geometry if TYPE_CHECKING: from .CRS import CRS from .bbox import BBox - from .spatial_geometry import SpatialGeometry - from .coordinate_array import CoordinateArray - from .vector_geometry import VectorGeometry, SingleVectorGeometry, MultiVectorGeometry + from .vector_geometry import VectorGeometry, SingleVectorGeometry from .point import Point - from .multi_point import MultiPoint from .polygon import Polygon - from .multi_polygon import MultiPolygon from .kdtree import KDTree - # from .raster_geometry import RasterGeometry - # from .raster_geolocation import RasterGeolocation - # from .raster_grid import RasterGrid - # from .raster import Raster from .multi_raster import MultiRaster class Raster: @@ -633,7 +613,7 @@ def _key(self, key): def __getitem__(self, key): if isinstance(key, (slice, int, tuple)): return self._key(key) - elif isinstance(key, string_types): + elif isinstance(key, str): return self.metadata[key] elif isinstance(key, (Raster, np.ndarray)): result = self.array[key] @@ -644,7 +624,7 @@ def __getitem__(self, key): def __setitem__(self, key, value): if isinstance(key, slice): self.array[slice] = value - elif isinstance(key, string_types): + elif isinstance(key, str): self.metadata[key] = value elif isinstance(key, (Raster, np.ndarray)): self.array[np.array(key)] = value @@ -1079,6 +1059,8 @@ def to_grid( destination = np.empty((grid.rows, grid.cols), destination_dtype) elif len(self.shape) == 3: destination = np.empty((self.shape[0], grid.rows, grid.cols), destination_dtype) + else: + raise ValueError(f"invalid raster dimensions: {self.shape}") if str(self.dtype) == "bool": source = source.astype(np.uint16) diff --git a/rasters/raster_geolocation.py b/rasters/raster_geolocation.py index 9bdf968..99c48a2 100644 --- a/rasters/raster_geolocation.py +++ b/rasters/raster_geolocation.py @@ -3,28 +3,19 @@ from typing import Union, Tuple, Dict, TYPE_CHECKING import numpy as np - from scipy.ndimage import zoom -from scipy.spatial import cKDTree +from scipy.spatial import cKDTree from .CRS import WGS84 - from .raster_geometry import RasterGeometry from .wrap_geometry import wrap_geometry if TYPE_CHECKING: from .CRS import CRS - from .bbox import BBox - from .spatial_geometry import SpatialGeometry - from .coordinate_array import CoordinateArray - from .vector_geometry import VectorGeometry, SingleVectorGeometry, MultiVectorGeometry from .point import Point - from .multi_point import MultiPoint from .polygon import Polygon - from .multi_polygon import MultiPolygon - from .kdtree import KDTree from .raster_grid import RasterGrid - from .raster import Raster + class RasterGeolocation(RasterGeometry): """ diff --git a/rasters/raster_geometry.py b/rasters/raster_geometry.py index 139cb3c..e8625d9 100644 --- a/rasters/raster_geometry.py +++ b/rasters/raster_geometry.py @@ -1,33 +1,27 @@ from __future__ import annotations -from typing import Union, List, Tuple, Dict, TYPE_CHECKING -from abc import abstractmethod - +import json import logging import warnings -import json +from abc import abstractmethod +from typing import Union, List, Tuple, Dict, TYPE_CHECKING +import geopandas as gpd import numpy as np - -from pyproj import Transformer - import shapely -from shapely.ops import transform as shapely_transform -from shapely.geometry.base import BaseGeometry -import geopandas as gpd +from pyproj import Transformer from scipy.ndimage import shift +from shapely.geometry.base import BaseGeometry +from shapely.ops import transform as shapely_transform -from .constants import * from .CRS import WGS84 -from .wrap_geometry import wrap_geometry from .spatial_geometry import SpatialGeometry +from .wrap_geometry import wrap_geometry if TYPE_CHECKING: from .CRS import CRS from .bbox import BBox from .spatial_geometry import SpatialGeometry - from .coordinate_array import CoordinateArray - from .vector_geometry import VectorGeometry, SingleVectorGeometry, MultiVectorGeometry from .point import Point from .multi_point import MultiPoint from .polygon import Polygon @@ -35,7 +29,7 @@ from .kdtree import KDTree from .raster_geolocation import RasterGeolocation from .raster_grid import RasterGrid - from .raster import Raster + class RasterGeometry(SpatialGeometry): """ diff --git a/rasters/raster_grid.py b/rasters/raster_grid.py index 53934d9..ba7015c 100644 --- a/rasters/raster_grid.py +++ b/rasters/raster_grid.py @@ -613,6 +613,7 @@ def rasterize( in shapes ] + # TODO check in on the `rasterio.features` reference image = Raster( rasterio.features.rasterize( shapes=shapes, diff --git a/rasters/rasters.py b/rasters/rasters.py index 404fd61..6b39d67 100644 --- a/rasters/rasters.py +++ b/rasters/rasters.py @@ -1,6 +1,7 @@ """ This package manages the geographic information associated with data points in both swath and grid rasters. """ +# noinspection PyUnusedImports from .constants import * from .CRS import CRS, WGS84 from .bbox import BBox diff --git a/rasters/spatial_geometry.py b/rasters/spatial_geometry.py index 13b9489..fbf1e8a 100644 --- a/rasters/spatial_geometry.py +++ b/rasters/spatial_geometry.py @@ -3,8 +3,6 @@ from abc import abstractmethod from typing import Union, TYPE_CHECKING -import numpy as np - from .CRS import CRS, WGS84 from .local_UTM_proj4_from_lat_lon import local_UTM_proj4_from_lat_lon diff --git a/rasters/vector_geometry.py b/rasters/vector_geometry.py index 59c4ee2..2aaf86c 100644 --- a/rasters/vector_geometry.py +++ b/rasters/vector_geometry.py @@ -1,19 +1,14 @@ from __future__ import annotations -from typing import Union, Iterable, TYPE_CHECKING +from typing import Union -import shapely import geopandas as gpd +import shapely from pyproj import Transformer from .CRS import CRS, WGS84 from .spatial_geometry import SpatialGeometry -from .wrap_geometry import wrap_geometry - -if TYPE_CHECKING: - from .point import Point - from .multi_point import MultiPoint class VectorGeometry(SpatialGeometry): """ diff --git a/rasters/where.py b/rasters/where.py index 4f82c0e..3635fa9 100644 --- a/rasters/where.py +++ b/rasters/where.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union, TYPE_CHECKING +from typing import TYPE_CHECKING import numpy as np