In [1]:
Copied!
import pathlib
import numpy as np
import matplotlib.pyplot as plt
import geokit.core.srs
import geokit.core.regionmask
import geokit.core.geom
import geokit.core.extent
from geokit.core.get_test_data import get_test_data
import pathlib
import numpy as np
import matplotlib.pyplot as plt
import geokit.core.srs
import geokit.core.regionmask
import geokit.core.geom
import geokit.core.extent
from geokit.core.get_test_data import get_test_data
Create RegionMask From Shapefile¶
In [2]:
Copied!
# Define a region-centered CRS (Aachen)
aachen_centered_srs = geokit.core.srs.centeredLAEA(6.083, 50.775)
# Load RegionMask from example shapefile
aachen_region_mask = geokit.core.regionmask.RegionMask.load(
get_test_data(file_name="aachenShapefile.shp"),
pixelRes=20,
srs=aachen_centered_srs,
)
ax_handle_aachen = aachen_region_mask.drawSelf(figsize=(6, 6))
# Define a region-centered CRS (Aachen)
aachen_centered_srs = geokit.core.srs.centeredLAEA(6.083, 50.775)
# Load RegionMask from example shapefile
aachen_region_mask = geokit.core.regionmask.RegionMask.load(
get_test_data(file_name="aachenShapefile.shp"),
pixelRes=20,
srs=aachen_centered_srs,
)
ax_handle_aachen = aachen_region_mask.drawSelf(figsize=(6, 6))
Create RegioMask from Geometry¶
In this example, a box is used, but a RegionMask can be created from any geometry object.
In [3]:
Copied!
# boundary box tuple with (xmin, ymin, xmax, ymax)
srs_scale = 10**6
boundary_box_tuple = (4.035 * srs_scale, 3.07 * srs_scale, 4.07 * srs_scale, 3.105 * srs_scale)
box_upper_aachen = geokit.core.geom.box(boundary_box_tuple, srs=3035)
upper_aachen_box_region_mask = geokit.core.regionmask.RegionMask.load(
box_upper_aachen,
srs=3035,
pixelRes=20,
)
ax_handle_aachen_box = upper_aachen_box_region_mask.drawSelf(figsize=(6, 6))
# boundary box tuple with (xmin, ymin, xmax, ymax)
srs_scale = 10**6
boundary_box_tuple = (4.035 * srs_scale, 3.07 * srs_scale, 4.07 * srs_scale, 3.105 * srs_scale)
box_upper_aachen = geokit.core.geom.box(boundary_box_tuple, srs=3035)
upper_aachen_box_region_mask = geokit.core.regionmask.RegionMask.load(
box_upper_aachen,
srs=3035,
pixelRes=20,
)
ax_handle_aachen_box = upper_aachen_box_region_mask.drawSelf(figsize=(6, 6))
From Extent and Boolean Numpy Array¶
This method of creating a RegionMask is useful when the region of interest for your analysis is a Boolean raster. Specify the extent of the raster and provide the regions to be included with a value of 1 and those to be excluded with a value of 0 in the NumPy array.
In [4]:
Copied!
srs_scale = 10**6
boundary_box_tuple = (4.035 * srs_scale, 3.07 * srs_scale, 4.07 * srs_scale, 3.105 * srs_scale)
extent = geokit.core.extent.Extent(boundary_box_tuple, srs=3035)
example_data = np.random.randint(2, size=(20, 25), dtype=bool)
np.random.seed(0)
# example_data = np.random.rand(20,25).astype(bool)
region_mask_from_random_mask = geokit.core.regionmask.RegionMask.fromMask(
extent=extent,
mask=example_data,
)
fig, axs = plt.subplots(ncols=2, figsize=(12, 6))
region_mask_from_random_mask_handle = region_mask_from_random_mask.drawSelf(ax=axs[0])
ax_handle_numpy_array = geokit.drawImage(example_data, ax=axs[1])
srs_scale = 10**6
boundary_box_tuple = (4.035 * srs_scale, 3.07 * srs_scale, 4.07 * srs_scale, 3.105 * srs_scale)
extent = geokit.core.extent.Extent(boundary_box_tuple, srs=3035)
example_data = np.random.randint(2, size=(20, 25), dtype=bool)
np.random.seed(0)
# example_data = np.random.rand(20,25).astype(bool)
region_mask_from_random_mask = geokit.core.regionmask.RegionMask.fromMask(
extent=extent,
mask=example_data,
)
fig, axs = plt.subplots(ncols=2, figsize=(12, 6))
region_mask_from_random_mask_handle = region_mask_from_random_mask.drawSelf(ax=axs[0])
ax_handle_numpy_array = geokit.drawImage(example_data, ax=axs[1])
Create a RegionMask from Geometry¶
In [5]:
Copied!
## Display the RegionMask
aachen_region_mask
## Display the RegionMask
aachen_region_mask
Out[5]:
In [6]:
Copied!
## Display basic info
print("Extent:", aachen_region_mask.extent)
print("Pixel size:", aachen_region_mask.pixelWidth, aachen_region_mask.pixelHeight)
print("Area (m²):", aachen_region_mask.area)
## Display basic info
print("Extent:", aachen_region_mask.extent)
print("Pixel size:", aachen_region_mask.pixelWidth, aachen_region_mask.pixelHeight)
print("Area (m²):", aachen_region_mask.area)
Extent: (-7640.00000,-31220.00000,23820.00000,19500.00000) Pixel size: 20 20 Area (m²): 709403600