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 -
bounds
¶ Method to calculate the bounding box of the collection
Returns: Return type: tuple (xmin, ymin, xmax, ymax)
-
-
class
LineString
(coordinates)[source]¶ Bases:
flopy.utils.geometry.Shape
-
bounds
¶
-
has_z
= False¶
-
pyshp_parts
¶
-
shapeType
= 3¶
-
type
= 'LineString'¶
-
x
¶
-
y
¶
-
z
¶
-
-
class
MultiLineString
(linestrings=())[source]¶ Bases:
flopy.utils.geometry.Collection
- Container for housing and describing multilinestring geometries (e.g. to be
- read or written to shapefiles or other geographic data formats)
- polygons : list
- list of flopy.utils.geometry.LineString objects
-
class
MultiPoint
(points=())[source]¶ Bases:
flopy.utils.geometry.Collection
- Container for housing and describing multipoint geometries (e.g. to be
- read or written to shapefiles or other geographic data formats)
- polygons : list
- list of flopy.utils.geometry.Point objects
-
class
MultiPolygon
(polygons=())[source]¶ Bases:
flopy.utils.geometry.Collection
- Container for housing and describing multipolygon geometries (e.g. to be
- read or written to shapefiles or other geographic data formats)
- polygons : list
- list of flopy.utils.geometry.Polygon objects
-
class
Point
(*coordinates)[source]¶ Bases:
flopy.utils.geometry.Shape
-
bounds
¶
-
has_z
= False¶
-
pyshp_parts
¶
-
shapeType
= 1¶
-
type
= 'Point'¶
-
x
¶
-
y
¶
-
z
¶
-
-
class
Polygon
(exterior, interiors=None)[source]¶ Bases:
flopy.utils.geometry.Shape
-
bounds
¶
-
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).:
-
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
- 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 Returns: Return type: Polygon, LineString, or Point
-
geojson
¶
-
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, direction='x')[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!
- line : list or np.ndarray
- numpy array of [(x0, y0), (x1, y1)] that defines the line to project on to
- pts : list or np.ndarray
- numpy array of [(x, y),] points to be projected
d0 : distance offset along line of min(xl) direction : string
projection direction “x” or “y”Returns: np.ndarray of projected [(x, y),] points
-
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.
-
shape
(pyshp_shpobj)[source]¶ Convert a pyshp geometry object to a flopy geometry object.
Parameters: pyshp_shpobj (shapefile._Shape instance) – Returns: shape Return type: flopy.utils.geometry Polygon, Linestring, or Point Notes
Currently only regular Polygons, LineStrings and Points (pyshp types 5, 3, 1) supported.
Examples
>>> import shapefile as sf >>> from flopy.utils.geometry import shape >>> sfobj = sf.Reader('shapefile.shp') >>> flopy_geom = shape(list(sfobj.iterShapes())[0])