flopy.utils.geometry module

Container objects for working with geometric information

class Collection(geometries=())[source]

Bases: list

The collection object is container for a group of flopy geometries

This class acts as a base class for MultiPoint, MultiLineString, and MultiPolygon classes. This class can also accept a mix of geometries and act as a stand alone container.

Parameters:

geometries (list) – list of flopy.util.geometry objects

property bounds

Method to calculate the bounding box of the collection

Return type:

tuple (xmin, ymin, xmax, ymax)

plot(ax=None, **kwargs)[source]

Plotting method for collection

Parameters:
  • ax (matplotlib.axes object) –

  • kwargs (keyword arguments) – matplotlib keyword arguments

Return type:

matplotlib.axes object

class LineString(coordinates)[source]

Bases: Shape

property bounds
has_z = False
plot(ax=None, **kwargs)[source]
property pyshp_parts
shapeType = 3
type = 'LineString'
property x
property y
property z
class MultiLineString(linestrings=())[source]

Bases: Collection

Container for housing and describing multilinestring geometries (e.g. to be

read or written to shapefiles or other geographic data formats)

Parameters:

linestrings (list, tuple, default ()) – list of flopy.utils.geometry.LineString objects

class MultiPoint(points=())[source]

Bases: Collection

Container for housing and describing multipoint geometries (e.g. to be

read or written to shapefiles or other geographic data formats)

Parameters:

points (list, tuple, default ()) – list of flopy.utils.geometry.Point objects

class MultiPolygon(polygons=())[source]

Bases: Collection

Container for housing and describing multipolygon geometries (e.g. to be

read or written to shapefiles or other geographic data formats)

Parameters:

polygons (list, tuple, default ()) – list of flopy.utils.geometry.Polygon objects

class Point(*coordinates)[source]

Bases: Shape

property bounds
has_z = False
plot(ax=None, **kwargs)[source]
property pyshp_parts
shapeType = 1
type = 'Point'
property x
property y
property z
class Polygon(exterior, interiors=None)[source]

Bases: Shape

property bounds
get_patch(**kwargs)[source]
property patch
plot(ax=None, **kwargs)[source]

Plot the feature. :param ax: :type ax: matplotlib.pyplot axes instance :param Accepts keyword arguments to descartes.PolygonPatch. Requires the: :param descartes package (pip install descartes).:

property pyshp_parts
shapeType = 5
type = 'Polygon'
class Shape(shapetype, coordinates=None, exterior=None, interiors=None)[source]

Bases: object

Parent class for handling geo interfacing, do not instantiate directly

Parameters:
  • type (str) – shapetype string

  • coordinates (list or tuple) – list of tuple of point or linestring coordinates

  • exterior (list or tuple) – 2d list of polygon coordinates

  • interiors (list or tuple) – 2d or 3d list of polygon interiors

static from_geojson(geo_interface)[source]

Method to load from geojson

Parameters:

geo_interface (geojson, dict) – geojson compliant representation of a linestring

Return type:

Polygon, LineString, or Point

property geojson
distance(x0, y0, x1, y1)[source]

General distance equation

Parameters:
Return type:

distance

get_polygon_area(geom)[source]

Calculate the area of a closed polygon

Parameters:

geom (geospatial representation of polygon) –

accepted types:

vertices np.array([(x, y),….]) geojson.Polygon shapely.Polygon shapefile.Shape

Returns:

area – area of polygon centroid

Return type:

float

get_polygon_centroid(geom)[source]

Calculate the centroid of a closed polygon

Parameters:

geom (geospatial representation of polygon) –

accepted types:

vertices np.array([(x, y),….]) geojson.Polygon shapely.Polygon shapefile.Shape

Returns:

centroid – (x, y) of polygon centroid

Return type:

tuple

is_clockwise(*geom)[source]

Determine if a ring is defined clockwise

Parameters:

*geom (geospatial representation of polygon) –

accepted types:

vertices [(x, y),….] geojson.Polygon shapely.Polygon shapefile.Shape x and y vertices: [x1, x2, x3], [y1, y2, y3]

Returns:

clockwise – True when the ring is defined clockwise, False otherwise

Return type:

bool

point_in_polygon(xc, yc, polygon)[source]

Use the ray casting algorithm to determine if a point is within a polygon. Enables very fast intersection calculations!

Parameters:
  • xc (np.ndarray) – 2d array of xpoints

  • yc (np.ndarray) – 2d array of ypoints

  • polygon (iterable (list)) – polygon vertices [(x0, y0),….(xn, yn)] note: polygon can be open or closed

Returns:

mask – True value means point is in polygon!

Return type:

np.array

project_point_onto_xc_line(line, pts, d0=0, calc_dist=False)[source]

Method to project points onto a cross sectional line that is defined by distance. Used for plotting MODPATH results on to a cross section!

linelist or np.ndarray

numpy array of [(x0, y0), (x1, y1)] that defines the line to project on to

ptslist or np.ndarray

numpy array of [(x, y),] points to be projected

d0 : distance offset along line of min(xl) calc_dist : bool

boolean flag to indicate that the return type is distance offset by d0 (calculated from line[0]). If false this will return the “projected” xy location along the cross-sectional line

Returns:

tuple of (x , y) or distance

rotate(x, y, xoff, yoff, angrot_radians)[source]

Given x and y array-like values calculate the rotation about an arbitrary origin and then return the rotated coordinates.

transform(x, y, xoff, yoff, angrot_radians, length_multiplier=1.0, inverse=False)[source]

Given x and y array-like values calculate the translation about an arbitrary origin and then return the rotated coordinates.