pygeoutils.geotools#
Some utilities for manipulating GeoSpatial data.
Module Contents#
- class pygeoutils.geotools.Coordinates#
Generate validated and normalized coordinates in WGS84.
- Parameters:
Examples
>>> c = Coordinates([460, 20, -30], [80, 200, 10]) >>> c.points.x.tolist() [100.0, -30.0]
- property points: geopandas.GeoSeries#
Get validate coordinate as a
geopandas.GeoSeries
.
- pygeoutils.geotools.break_lines(lines, points, tol=0.0)#
Break lines at specified points at given direction.
- Parameters:
lines (
geopandas.GeoDataFrame
) – Lines to break at intersection points.points (
geopandas.GeoDataFrame
) – Points to break lines at. It must contain a column nameddirection
with valuesup
ordown
. This column is used to determine which part of the lines to keep, i.e., upstream or downstream of points.tol (
float
, optional) – Tolerance for snapping points to the nearest lines in meters. The default is 0.0.
- Returns:
geopandas.GeoDataFrame
– Original lines except for the parts that have been broken at the specified points.- Return type:
GDFTYPE
- pygeoutils.geotools.coords_list(coords)#
Convert a single coordinate or list of coordinates to a list of coordinates.
- pygeoutils.geotools.geo2polygon(geometry, geo_crs=None, crs=None)#
Convert a geometry to a Shapely’s Polygon and transform to any CRS.
- Parameters:
- Returns:
shapely.Polygon
orshapely.MultiPolygon
– A (Multi)Polygon in the target CRS, if different from the input CRS.- Return type:
shapely.Polygon | shapely.MultiPolygon
- pygeoutils.geotools.geometry_list(geometry)#
Convert input geometry to a list of Polygons, Points, or LineStrings.
- Parameters:
geometry (
Polygon
orMultiPolygon
ortuple
oflength 4
orlist
oftuples
oflength 2
or3
) – Input geometry could be a(Multi)Polygon
,(Multi)LineString
,(Multi)Point
, a tuple/list of length 4 (west, south, east, north), or a list of tuples of length 2 or 3.- Returns:
list
– A list of Polygons, Points, or LineStrings.- Return type:
list[shapely.LineString | shapely.Point | shapely.Polygon]
- pygeoutils.geotools.geometry_reproject(geom, in_crs, out_crs)#
Reproject a geometry to another CRS.
- Parameters:
geom (
list
ortuple
orany shapely.GeometryType
) – Input geometry could be a list of coordinates such as[(x1, y1), ...]
, a bounding box like so(xmin, ymin, xmax, ymax)
, or any validshapely
’s geometry such asPolygon
,MultiPolygon
, etc..in_crs (
str
,int
, orpyproj.CRS
) – Spatial reference of the input geometryout_crs (
str
,int
, orpyproj.CRS
) – Target spatial reference
- Returns:
same type as the input geometry
– Transformed geometry in the target CRS.- Return type:
GEOM
Examples
>>> from shapely import Point >>> point = Point(-7766049.665, 5691929.739) >>> geometry_reproject(point, 3857, 4326).xy (array('d', [-69.7636111130079]), array('d', [45.44549114818127])) >>> bbox = (-7766049.665, 5691929.739, -7763049.665, 5696929.739) >>> geometry_reproject(bbox, 3857, 4326) (-69.7636111130079, 45.44549114818127, -69.73666165448431, 45.47699468552394) >>> coords = [(-7766049.665, 5691929.739)] >>> geometry_reproject(coords, 3857, 4326) [(-69.7636111130079, 45.44549114818127)]
- pygeoutils.geotools.multi2poly(gdf)#
Convert multipolygons to polygon and fill holes, if any.
Notes
This function tries to convert multipolygons to polygons by first checking if multiploygons can be directly converted using their exterior boundaries. If not, will try to remove very small sub-polygons that their area is less than 1% of the total area of the multipolygon. If this fails, the original multipolygon will be returned.
- Parameters:
gdf (
geopandas.GeoDataFrame
orgeopandas.GeoSeries
) – A GeoDataFrame or GeoSeries with (multi)polygons. This will be more accurate if the CRS is projected.- Returns:
geopandas.GeoDataFrame
orgeopandas.GeoSeries
– A GeoDataFrame or GeoSeries with polygons (and multipolygons).- Return type:
GDFTYPE
- pygeoutils.geotools.nested_polygons(gdf)#
Get nested polygons in a GeoDataFrame.
- Parameters:
gdf (
geopandas.GeoDataFrame
orgeopandas.GeoSeries
) – A GeoDataFrame or GeoSeries with (multi)polygons.- Returns:
dict
– A dictionary where keys are indices of larger polygons and values are a list of indices of smaller polygons that are contained within the larger polygons.- Return type:
- pygeoutils.geotools.query_indices(tree_gdf, input_gdf, predicate='intersects')#
Find the indices of the input_geo that intersect with the tree_geo.
- Parameters:
tree_gdf (
geopandas.GeoDataFrame
orgeopandas.GeoSeries
) – The tree geodataframe.input_gdf (
geopandas.GeoDataFrame
orgeopandas.GeoSeries
) – The input geodataframe.predicate (
str
, optional) – The predicate to use for the query operation, defaults tointesects
.
- Returns:
dict
– A dictionary of the indices of theinput_gdf
that intersect with thetree_gdf
. Keys are the index ofinput_gdf
and values are a list of indices of the intersectingtree_gdf
.- Return type:
- pygeoutils.geotools.snap2nearest(lines_gdf, points_gdf, tol)#
Find the nearest points on a line to a set of points.
- Parameters:
lines_gdf (
geopandas.GeoDataFrame
orgeopandas.GeoSeries
) – Lines.points_gdf (
geopandas.GeoDataFrame
orgeopandas.GeoSeries
) – Points to snap to lines.tol (
float
, optional) – Tolerance for snapping points to the nearest lines in meters. It must be greater than 0.0.
- Returns:
geopandas.GeoDataFrame
orgeopandas.GeoSeries
– Points snapped to lines.- Return type:
GDFTYPE