Footprint¶
-
class
buzzard.Footprint(**kwargs)[source] Immutable object representing the location and size of a spatially localized raster. All methods are thread-safe.
The
Footprintclass:is a toolbox class designed to position a rectangle in both image space and geometry space,
its main purpose is to simplify the manipulation of windows in rasters,
has many accessors,
has many algorithms,
is a constant object,
is designed to work with any rectangle in space (like non north-up/west-left rasters),
is independent from projections, units and files,
uses
affinelibrary internally for conversions (https://github.com/sgillies/affine).
Warning
This class being complex and full python, the constructor is too slow for certain use cases (~0.5ms).
Method category
Method names
Footprint construction
from scratch
__init__, of_extent
from
Footprint__and__, intersection, erode, dilate, …
Conversion
extent, coords, geom, __geo_interface__
Accessors
Spatial - Size and vectors
size, width, height, diagvec, …
Spatial - Coordinates
tl, bl, br, tr, …
Spatial - Misc
area, length, semiminoraxis, …x
Raster - Size
rsize, rwidth, rheight, …
Raster - Indices
rtl, rbl, rbr, ttr, …
Raster - Misc
rarea, rlength, rsemiminoraxis, …
Affine transformations
pxsize, pxvec, angle, …
Binary predicates
__eq__, …
Numpy
shape, meshgrid_raster, meshgrid_spatial, slice_in, …
Coordinates conversions
spatial_to_raster, raster_to_spatial
Geometry / Raster conversions
find_polygons, burn_polygons, …
Tiling
tile, tile_count, tile_occurrence
Serialization
__str__, …
Informations on geo transforms (gt) and affine matrices
GDAL ordering:
c
a
b
f
d
e
tlx
width of a pixel
row rotation
tly
column rotation
height of a pixel
>>> c, a, b, f, d, e = fp.gt >>> tlx, dx, rx, tly, ry, dy = fp.gt
Matrix ordering:
a
b
c
d
e
f
width of a pixel
row rotation
tlx
column rotation
height of a pixel
tly
>>> a, b, c, d, e, f = fp.aff6 >>> dx, rx, tlx, ry, dy, tly = fp.aff6
There are only two ways to construct a Footprint, but several high level constructors exist, such as .intersection.
Usage 1
>>> buzz.Footprint(tl=(0, 10), size=(10, 10), rsize=(100, 100))
Usage 2
>>> buzz.Footprint(gt=(0, .1, 0, 10, 0, -.1), rsize=(100, 100))
Parameters
- tl: (nbr, nbr)
raster spatial top left coordinates
- gt: (nbr, nbr, nbr, nbr, nbr, nbr)
geotransforms with GDAL ordering
- size: (nbr, nbr)
Size of Footprint in space (unsigned)
- rsize: (int, int)
Size of raster in pixel (unsigned integers)
-
__and__(other)[source] Returns Footprint.intersection
-
classmethod
of_extent(extent, scale)[source] Create a Footprint from a rectangle extent and a scale
Parameters
- extent: (nbr, nbr, nbr, nbr)
Spatial coordinates of (minx, maxx, miny, maxy) defining a rectangle
- scale: nbr or (nbr, nbr)
Resolution of output Footprint:
if nbr: resolution = [a, -a]
if (nbr, nbr): resolution [a, b]
-
clip(startx, starty, endx, endy)[source] Construct a new Footprint by clipping self using pixel indices
To clip using coordinates see Footprint.intersection.
Parameters
- startx: int or None
Same rules as regular python slicing
- starty: int or None
Same rules as regular python slicing
- endx: int or None
Same rules as regular python slicing
- endy: int or None
Same rules as regular python slicing
Returns
- fp: Footprint
The new clipped
Footprint
-
erode(count)[source] Construct a new Footprint from self, eroding all edges by
countpixels
-
dilate(count)[source] Construct a new Footprint from self, dilating all edges by
countpixels
-
intersection(self, *objects, scale='self', rotation='auto', alignment='auto', homogeneous=False)[source] Construct a Footprint bounding the intersection of geometric objects, self being one of the of input geometry. Inputs’ intersection is always within output Footprint.
Parameters
- *objects: *object
Any object with a __geo_interface__ attribute defining a geometry, like a Footprint or a shapely object.
- scale: one of {‘self’, ‘highest’, ‘lowest’} or (nbr, nbr) or nbr
‘self’: Output Footprint’s resolution is the same as self ‘highest’: Output Footprint’s resolution is the highest one among the input Footprints ‘lowest’: Output Footprint’s resolution is the lowest one among the input Footprints (nbr, nbr): Signed pixel size, aka scale nbr: Signed pixel width. Signed pixel height is assumed to be -width
- rotation: one of {‘auto’, ‘fit’} or nbr
- ‘auto’
If scale designate a Footprint object, its rotation is chosen Else, self’s rotation is chosen
- ‘fit’
Output Footprint is the rotated minimum bounding rectangle
- nbr
Angle in degree
- alignment: {‘auto’, ‘tl’, (nbr, nbr)}
- ‘auto’
- If scale and rotation designate the same Footprint object, its alignment
is chosen
Else, ‘tl’ alignment is chosen
- ‘tl’: Ouput Footprint’s alignement is the top left most point of the bounding rectangle
of the intersection
- (nbr, nbr): Coordinate of a point that lie on the grid.
This point can be anywhere in space.
- homogeneous: bool
False: No effect True: Raise an exception if all input Footprints do not lie on the same grid as self.
Returns
Footprint
-
move(tl, tr=None, br=None, round_coordinates=False)[source] Create a copy of self moved by an Affine transformation by providing new points. rsize is always conserved
Usage cases
tl
tr
br
Affine transformations possible
coord
None
None
Translation
coord
coord
None
Translation, Rotation, Scale x and y uniformly with positive real
coord
coord
coord
Translation, Rotation, Scale x and y independently with reals
Parameters
- tl: (nbr, nbr)
New top left coordinates
- tr: (nbr, nbr)
New top right coordinates
- br: (nbr, nbr)
New bottom right coordinates
- round_coordinates: bool
Round the input coordinates with respect to buzz.env.significant, so that the output Footprint is as much similar as possible as the input Footprint regarding those properties: - angle - pxsize - pxsizex / pxsizey
This option helps a lot if the input coordinates suffered from floating point precision loss since it will cancel the noise in the resulting transformation matrix.
Warning
Only work when tr and br are both provided
Returns
Footprint
-
property
extent Get the Footprint’s extent (x then y)
Example
>>> minx, maxx, miny, maxy = fp.extent >>> plt.imshow(arr, extent=fp.extent)
fp.extent from fp.bounds using numpy fancy indexing
>>> minx, maxx, miny, maxy = fp.bounds[[0, 2, 1, 3]]
-
property
bounds Get the Footprint’s bounds (min then max)
Example
>>> minx, miny, maxx, maxy = fp.bounds
fp.bounds from fp.extent using numpy fancy indexing
>>> minx, miny, maxx, maxy = fp.extent[[0, 2, 1, 3]]
-
property
coords Get corners coordinates
Example
>>> tl, bl, br, tr = fp.coords
-
property
poly Convert self to shapely.geometry.Polygon
-
property
__geo_interface__
-
property
size Spatial distances: (||raster left - raster right||, ||raster top - raster bottom||)
-
property
sizex Spatial distance: ||raster left - raster right||
-
property
sizey Spatial distance: ||raster top - raster bottom||
-
property
width Spatial distance: ||raster left - raster right||, alias for sizex
-
property
height Spatial distance: ||raster top - raster bottom||, alias for sizey
-
property
w Spatial distance: ||raster left - raster right||, alias for sizex
-
property
h Spatial distance: ||raster top - raster bottom||, alias for sizey
-
property
lrvec Spatial vector: (raster right - raster left)
-
property
tbvec Spatial vector: (raster bottom - raster top)
-
property
diagvec Spatial vector: (raster bottom right - raster top left)
-
property
tl Spatial coordinates: raster top left (x, y)
-
property
tlx Spatial coordinate: raster top left (x)
-
property
tly Spatial coordinate: raster top left (y)
-
property
bl Spatial coordinates: raster bottom left (x, y)
-
property
blx Spatial coordinate: raster bottom left (x)
-
property
bly Spatial coordinate: raster bottom left (y)
-
property
br Spatial coordinates: raster bottom right (x, y)
-
property
brx Spatial coordinate: raster bottom right (x)
-
property
bry Spatial coordinate: raster bottom right (y)
-
property
tr Spatial coordinates: raster top right (x, y)
-
property
trx Spatial coordinate: raster top right (x)
-
property
try_ Spatial coordinate: raster top right (y) Don’t forget the trailing underscore
-
property
t Spatial coordinates: raster top center (x, y)
-
property
tx Spatial coordinate: raster top center (x)
-
property
ty Spatial coordinate: raster top center (y)
-
property
l Spatial coordinates: raster center left (x, y)
-
property
lx Spatial coordinate: raster center left (x)
-
property
ly Spatial coordinate: raster center left (y)
-
property
b Spatial coordinates: raster bottom center (x, y)
-
property
bx Spatial coordinate: raster bottom center (x)
-
property
by Spatial coordinate: raster bottom center (y)
-
property
r Spatial coordinates: raster center right (x, y)
-
property
rx Spatial coordinate: raster center right (x)
-
property
ry Spatial coordinate: raster center right (y)
-
property
c Spatial coordinates: raster center (x, y)
-
property
cx Spatial coordinate: raster center (x)
-
property
cy Spatial coordinate: raster center (y)
-
property
semiminoraxis Spatial distance: half-size of the smaller side
-
property
semimajoraxis Spatial distance: half-size of the bigger side
-
property
area Area: pixel count
-
property
length Length: circumference of the outer ring
-
property
rsize Pixel quantities: (pixel per line, pixel per column)
-
property
rsizex Pixel quantity: pixel per line
-
property
rsizey Pixel quantity: pixel per column
-
property
rwidth Pixel quantity: pixel per line, alias for rsizex
-
property
rheight Pixel quantity: pixel per column, alias for rsizey
-
property
rw Pixel quantity: pixel per line, alias for rsizex
-
property
rh Pixel quantity: pixel per column, alias for rsizey
-
property
rtl Indices: raster top left pixel (x=0, y=0)
-
property
rtlx Index: raster top left pixel (x=0)
-
property
rtly Index: raster top left pixel (y=0)
-
property
rbl Indices: raster bottom left pixel (x=0, y)
-
property
rblx Index: raster bottom left pixel (x=0)
-
property
rbly Index: raster bottom left pixel (y)
-
property
rbr Indices: raster bottom right pixel (x, y)
-
property
rbrx Index: raster bottom right pixel (x)
-
property
rbry Index: raster bottom right pixel (y)
-
property
rtr Indices: raster top right pixel (x, y=0)
-
property
rtrx Index: raster top right pixel (x)
-
property
rtry Index: raster top right pixel (y=0)
-
property
rt Indices: raster top center pixel (x truncated, y=0)
-
property
rtx Index: raster top center pixel (x truncated)
-
property
rty Index: raster top center pixel (y=0)
-
property
rl Indices: raster center left pixel (x=0, y truncated)
-
property
rlx Index: raster center left pixel (x=0)
-
property
rly Index: raster center left pixel (y truncated)
-
property
rb Indices: raster bottom center pixel (x truncated, y)
-
property
rbx Index: raster bottom center pixel (x truncated)
-
property
rby Index: raster bottom center pixel (y)
-
property
rr Indices: raster center right pixel (x, y truncated)
-
property
rrx Index: raster center right pixel (x)
-
property
rry Index: raster center right pixel (y truncated)
-
property
rc Indices: raster center pixel (x truncated, y truncated)
-
property
rcx Index: raster center pixel (x truncated)
-
property
rcy Index: raster center pixel (y truncated)
-
property
rsemiminoraxis Pixel quantity: half pixel count (truncated) of the smaller side
-
property
rsemimajoraxis Pixel quantity: half pixel count (truncated) of the bigger side
-
property
rarea Pixel quantity: pixel count
-
property
rlength Pixel quantity: pixel count in the outer ring
-
property
gt First 6 numbers of the affine transformation matrix, GDAL ordering
-
property
aff33 The affine transformation matrix
-
property
aff23 Top two rows of the affine transformation matrix
-
property
aff6 First 6 numbers of the affine transformation matrix, left-right/top-bottom ordering
-
property
affine Underlying affine object
-
property
scale Spatial vector: scale used in the affine transformation, np.abs(scale) == pxsize
-
property
angle Angle in degree: rotation used in the affine transformation, (0 is north-up)
-
property
pxsize Spatial distance: ||pixel bottom right - pixel top left|| (x, y)
-
property
pxsizex Spatial distance: ||pixel right - pixel left|| (x)
-
property
pxsizey Spatial distance: ||pixel bottom - pixel top|| (y)
-
property
pxvec Spatial vector: (pixel bottom right - pixel top left)
-
property
pxtbvec Spatial vector: (pixel bottom left - pixel top left)
-
property
pxlrvec Spatial vector: (pixel top right - pixel top left)
-
__eq__(other)[source] Returns self.equals
-
__ne__(other)[source] Returns not self.equals
-
share_area(other)[source] Binary predicate: Does other share area with self
Parameters
- other: Footprint or shapely object
Returns
bool
-
equals(other)[source] Binary predicate: Is other Footprint exactly equal to self
Parameters
- other: Footprint
Returns
bool
-
almost_equals(other)[source] Binary predicate: Is other Footprint almost equal to self with regard to buzz.env.significant.
Parameters
- other: Footprint
Returns
bool
-
same_grid(other)[source] Binary predicate: Does other Footprint lie on the same grid as self
Parameters
- other: Footprint
Returns
bool
-
property
shape Pixel quantities: (pixel per column, pixel per line)
-
property
meshgrid_raster Compute indice matrices
Returns
- (x, y): (np.ndarray, np.ndarray)
Raster indices matrices with shape = self.shape with dtype = env.default_index_dtype
-
property
meshgrid_spatial Compute coordinate matrices
Returns
- (x, y): (np.ndarray, np.ndarray)
Spatial coordinate matrices with shape = self.shape with dtype = float32
-
meshgrid_raster_in(other, dtype=None, op=<ufunc 'floor'>)[source] Compute raster coordinate matrices of self in other referential
Parameters
- other: Footprint
- dtype: None or convertible to np.dtype
Output dtype If None: Use buzz.env.default_index_dtype
- op: None or function operating on a vector
Function to apply before casting output to dtype If None: Do not transform data before casting
Returns
- (x, y): (np.ndarray, np.ndarray)
Raster coordinate matrices with shape = self.shape with dtype = dtype
-
slice_in(other, clip=False)[source] Compute location of self inside other with slice objects. If other and self do not have the same rotation, operation is undefined
Parameters
- other: Footprint
- clip: bool
- False
Does nothing
- True
Clip the slices to other bounds. If other and self do not share area, at least one of the returned slice will have slice.start == slice.stop
Returns
(yslice, xslice): (slice, slice)
Example
Burn small into big if small is within big >>> big_data[small.slice_in(big)] = small_data
Burn small into big where overlapping >>> big_data[small.slice_in(big, clip=True)] = small_data[big.slice_in(small, clip=True)]
-
spatial_to_raster(xy, dtype=None, op=<ufunc 'floor'>)[source] Convert xy spatial coordinates to raster xy indices
Parameters
- xy: sequence of numbers of shape (…, 2)
Spatial coordinates
- dtype: None or convertible to np.dtype
Output dtype If None: Use buzz.env.default_index_dtype
- op: None or vectorized function
Function to apply before casting output to dtype If None: Do not transform data before casting
Returns
- out_xy: np.ndarray
Raster indices with shape = np.asarray(xy).shape with dtype = dtype
Prototype inspired from https://mapbox.github.io/rasterio/api/rasterio.io.html#rasterio.io.TransformMethodsMixin.index
-
raster_to_spatial(xy)[source] Convert xy raster coordinates to spatial coordinates
Parameters
- xy: sequence of numbers of shape (…, 2)
Raster coordinages
Returns
- out_xy: np.ndarray
Spatial coordinates with shape = np.asarray(xy).shape with dtype = dtype
-
find_lines(arr, output_offset='middle', merge=True)[source] Create a list of line-strings from a mask. Works with connectivity 4 and 8. The input raster is preprocessed using skimage.morphology.thin. The output linestrings are postprocessed using shapely.ops.linemerge.
Warning
All standalone pixels contained in arr will be ignored.
Parameters
- arr: np.ndarray of bool of shape (self.shape)
- output_offset: ‘middle’ or (nbr, nbr)
Coordinate offset in meter if middle: substituted by self.pxvec / 2
Returns
list of shapely.geometry.LineString
Exemple
>>> import buzzard as buzz >>> import numpy as np >>> import networkx as nx
>>> with buzz.Env(allow_complex_footprint=1): ... a = np.asarray([ ... [0, 1, 1, 1, 0], ... [0, 1, 0, 0, 0], ... [0, 1, 1, 1, 0], ... [0, 1, 0, 0, 0], ... [0, 1, 1, 0, 0], ... ... ]) ... fp = buzz.Footprint(gt=(0, 1, 0, 0, 0, 1), rsize=(a.shape)) ... lines = fp.find_lines(a, (0, 0)) ... ... # Display input / output ... print(fp) ... print(a.astype(int)) ... for i, l in enumerate(lines, 1): ... print(f'edge-id:{i} of type:{type(l)} and length:{l.length}') ... print(fp.burn_lines(l).astype(int) * i) ... ... # Build a networkx graph ... g = nx.Graph([(l.coords[0], l.coords[-1]) for l in lines]) ... print(repr(g.degree)) ... Footprint(tl=(0.000000, 0.000000), scale=(1.000000, 1.000000), angle=0.000000, rsize=(5, 5)) [[0 1 1 1 0] [0 1 0 0 0] [0 1 1 1 0] [0 1 0 0 0] [0 1 1 0 0]] edge-id:1 of type:<class 'shapely.geometry.linestring.LineString'> and length:2.0 [[0 0 0 0 0] [0 0 0 0 0] [0 1 1 1 0] [0 0 0 0 0] [0 0 0 0 0]] edge-id:2 of type:<class 'shapely.geometry.linestring.LineString'> and length:3.0 [[0 0 0 0 0] [0 0 0 0 0] [0 2 0 0 0] [0 2 0 0 0] [0 2 2 0 0]] edge-id:3 of type:<class 'shapely.geometry.linestring.LineString'> and length:4.0 [[0 3 3 3 0] [0 3 0 0 0] [0 3 0 0 0] [0 0 0 0 0] [0 0 0 0 0]] DegreeView({(3.0, 2.0): 1, (1.0, 2.0): 3, (2.0, 4.0): 1, (3.0, 0.0): 1})
-
burn_lines(obj, all_touched=False, labelize=False)[source] Creates a 2d image from lines. Uses gdal.Polygonize.
Parameters
- obj: shapely line or nested iterators over shapely lines
- labelize: bool
if False: Create a boolean mask
if True: Create an integer matrix containing lines indices from order in input
Returns
- np.ndarray
of bool or uint8 or int
of shape (self.shape)
-
find_polygons(mask)[source] Creates a list of polygons from a mask. Uses gdal.Polygonize.
Warning
This method is not equivalent to cv2.findContours that considers that pixels are points and therefore returns the indices of the pixels of the contours of the features.
This method consider that the pixels are areas and therefore returns the coordinates of the points that surrounds the features.
Warning
Some inputs that may produce invalid polygons (see below) are fixed with the shapely.geometry.Polygon.buffer method.
Shapely will issue several warnings while buzzard fixes the polygons.
>>> # 0 0 0 0 0 0 0 ... # 0 1 1 1 0 0 0 ... # 0 1 1 1 1 0 0 ... # 0 1 1 1 0 1 0 <- This feature has a hole near an edge. GDAL produces a self ... # 0 1 1 1 1 1 1 touching polygon without holes. A polygon with one hole is ... # 0 1 1 1 1 1 1 returned with this method. ... # 0 0 0 0 0 0 0
Parameters
arr: np.ndarray of bool of shape (self.shape)
Returns
list of shapely.geometry.Polygon
-
burn_polygons(obj, all_touched=False, labelize=False)[source] Creates a 2d image from polygons. Uses gdal.RasterizeLayer.
Warning
This method is not equivalent to cv2.drawContours that considers that pixels are points and therefore expect as input the indices of the outer pixels of each feature.
This method consider that the pixels are areas and therefore expect as input the coordinates of the points surrounding the features.
Parameters
- obj: shapely polygon or nested iterators over shapely polygons
- all_touched: bool
Burn all polygons touched
Returns
- np.ndarray
of bool or uint8 or int of shape (self.shape)
Examples
>>> burn_polygons(poly) >>> burn_polygons([poly, poly]) >>> burn_polygons([poly, poly, [poly, poly], multipoly, poly])
-
tile(size, overlapx=0, overlapy=0, boundary_effect='extend', boundary_effect_locus='br')[source] Tile a Footprint to a matrix of Footprint
Parameters
- size: (int, int)
Tile width and tile height, in pixel
- overlapx: int
Width of a tile overlapping with each direct horizontal neighbors, in pixel
- overlapy: int
Height of a tile overlapping with each direct vertical neighbors, in pixel
- boundary_effect: {‘extend’, ‘exclude’, ‘overlap’, ‘shrink’, ‘exception’}
Behevior at boundary effect locus
- ‘extend’
Preserve tile size
Preserve overlapx and overlapy
Sacrifice global bounds, results in tiles partially outside bounds at locus (if necessary)
Preserve tile count
Preserve boundary pixels coverage
- ‘overlap’
Preserve tile size
Sacrifice overlapx and overlapy, results in tiles overlapping more at locus (if necessary)
Preserve global bounds
Preserve tile count
Preserve boundary pixels coverage
- ‘exclude’
Preserve tile size
Preserve overlapx and overlapy
Preserve global bounds
Sacrifice tile count, results in tiles excluded at locus (if necessary)
Sacrifice boundary pixels coverage at locus (if necessary)
- ‘shrink’
Sacrifice tile size, results in tiles shrinked at locus (if necessary)
Preserve overlapx and overlapy
Preserve global bounds
Preserve tile count
Preserve boundary pixels coverage
- ‘exception’
Raise an exception if tiles at locus do not lie inside the global bounds
- boundary_effect_locus: {‘br’, ‘tr’, ‘tl’, ‘bl’}
Locus of the boundary effects
‘br’ : Boundary effect occurs at the bottom right corner of the raster, top left coordinates are preserved
‘tr’ : Boundary effect occurs at the top right corner of the raster, bottom left coordinates are preserved
‘tl’ : Boundary effect occurs at the top left corner of the raster, bottom right coordinates are preserved
‘bl’ : Boundary effect occurs at the bottom left corner of the raster, top right coordinates are preserved
Returns
- np.ndarray
of dtype=object (Footprint)
of shape (M, N)
with M the line count
with N the column count
-
tile_count(rowcount, colcount, overlapx=0, overlapy=0, boundary_effect='extend', boundary_effect_locus='br')[source] Tile a Footprint to a matrix of Footprint
Parameters
- rowcount: int
Tile count per row
- colcount: int
Tile count per column
- overlapx: int
Width of a tile overlapping with each direct horizontal neighbors, in pixel
- overlapy: int
Height of a tile overlapping with each direct vertical neighbors, in pixel
- boundary_effect: {‘extend’, ‘exclude’, ‘overlap’, ‘shrink’, ‘exception’}
Behevior at boundary effect locus
- ‘extend’
Preserve tile size
Preserve overlapx and overlapy
Sacrifice global bounds, results in tiles partially outside bounds at locus (if necessary)
Preserve tile count
Preserve boundary pixels coverage
- ‘overlap’
Preserve tile size
Sacrifice overlapx and overlapy, results in tiles overlapping more at locus (if necessary)
Preserve global bounds
Preserve tile count
Preserve boundary pixels coverage
- ‘exclude’
Preserve tile size
Preserve overlapx and overlapy
Preserve global bounds
Preserve tile count
Sacrifice boundary pixels coverage at locus (if necessary)
- ‘shrink’
Sacrifice tile size, results in tiles shrinked at locus (if necessary)
Preserve overlapx and overlapy
Preserve global bounds
Preserve tile count
Preserve boundary pixels coverage
- ‘exception’
Raise an exception if tiles at locus do not lie inside the global bounds
- boundary_effect_locus: {‘br’, ‘tr’, ‘tl’, ‘bl’}
Locus of the boundary effects
‘br’ : Boundary effect occurs at the bottom right corner of the raster, top left coordinates are preserved
‘tr’ : Boundary effect occurs at the top right corner of the raster, bottom left coordinates are preserved
-
tile_occurrence(size, pixel_occurrencex, pixel_occurrencey, boundary_effect='extend', boundary_effect_locus='br')[source] Tile a Footprint to a matrix of Footprint Each pixel occur pixel_occurrencex * pixel_occurrencey times overall in the output
Parameters
- size: (int, int)
Tile width and tile height, in pixel
- pixel_occurrencex: int
Number of occurence of each pixel in a line of tile
- pixel_occurrencey: int
Number of occurence of each pixel in a column of tile
- boundary_effect: {‘extend’, ‘exclude’, ‘overlap’, ‘shrink’, ‘exception’}
Behevior at boundary effect locus
- ‘extend’
Preserve tile size
Preserve overlapx and overlapy
Sacrifice global bounds, results in tiles partially outside bounds at locus (if necessary)
Preserve tile count
Preserve boundary pixels coverage
- ‘overlap’
Preserve tile size
Sacrifice overlapx and overlapy results in tiles overlapping more at locus (if necessary)
Preserve global bounds
Preserve tile count
Preserve boundary pixels coverage
- ‘exclude’
Preserve tile size
Preserve overlapx and overlapy
Preserve global bounds
Sacrifice tile count, results in tiles excluded at locus (if necessary)
Sacrifice boundary pixels coverage at locus (if necessary)
- ‘shrink’
Sacrifice tile size, results in tiles shrinked at locus (if necessary)
Preserve overlapx and overlapy
Preserve global bounds
Preserve tile count
Preserve boundary pixels coverage
- ‘exception’
Raise an exception if tiles at locus do not lie inside the global bounds
- boundary_effect_locus: {‘br’, ‘tr’, ‘tl’, ‘bl’}
Locus of the boundary effects
‘br’ : Boundary effect occurs at the bottom right corner of the raster top left coordinates are preserved
‘tr’ : Boundary effect occurs at the top right corner of the raster, bottom left coordinates are preserved
‘tl’ : Boundary effect occurs at the top left corner of the raster, bottom right coordinates are preserved
‘bl’ : Boundary effect occurs at the bottom left corner of the raster, top right coordinates are preserved
Returns
- np.ndarray
of dtype=object (Footpr
int) - of shape (M, N)
with M the line count
with N the column count
-
__str__()[source] Return str(self).
-
__repr__()[source] Return repr(self).
-
__reduce__()[source] Helper for pickle.
-
__hash__()[source] Return hash(self).