structure saas with tools
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
"""Provides multi-point element-wise operations such as ``contains``."""
|
||||
|
||||
import warnings
|
||||
|
||||
import numpy as np
|
||||
|
||||
import shapely
|
||||
from shapely.prepared import PreparedGeometry
|
||||
|
||||
|
||||
def _construct_points(x, y):
|
||||
x, y = np.asanyarray(x), np.asanyarray(y)
|
||||
if x.shape != y.shape:
|
||||
raise ValueError("X and Y shapes must be equivalent.")
|
||||
|
||||
if x.dtype != np.float64:
|
||||
x = x.astype(np.float64)
|
||||
if y.dtype != np.float64:
|
||||
y = y.astype(np.float64)
|
||||
|
||||
return shapely.points(x, y)
|
||||
|
||||
|
||||
def contains(geometry, x, y):
|
||||
"""Check whether multiple points are contained by a single geometry.
|
||||
|
||||
Vectorized (element-wise) version of `contains`.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
geometry : PreparedGeometry or subclass of BaseGeometry
|
||||
The geometry which is to be checked to see whether each point is
|
||||
contained within. The geometry will be "prepared" if it is not already
|
||||
a PreparedGeometry instance.
|
||||
x : array
|
||||
The x coordinates of the points to check.
|
||||
y : array
|
||||
The y coordinates of the points to check.
|
||||
|
||||
Returns
|
||||
-------
|
||||
Mask of points contained by the given `geometry`.
|
||||
|
||||
"""
|
||||
warnings.warn(
|
||||
"The 'shapely.vectorized.contains' function is deprecated and will be "
|
||||
"removed a future version. Use 'shapely.contains_xy' instead (available "
|
||||
"since shapely 2.0.0).",
|
||||
DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
if isinstance(geometry, PreparedGeometry):
|
||||
geometry = geometry.context
|
||||
shapely.prepare(geometry)
|
||||
return shapely.contains_xy(geometry, x, y)
|
||||
|
||||
|
||||
def touches(geometry, x, y):
|
||||
"""Check whether multiple points touch the exterior of a single geometry.
|
||||
|
||||
Vectorized (element-wise) version of `touches`.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
geometry : PreparedGeometry or subclass of BaseGeometry
|
||||
The geometry which is to be checked to see whether each point is
|
||||
contained within. The geometry will be "prepared" if it is not already
|
||||
a PreparedGeometry instance.
|
||||
x : array
|
||||
The x coordinates of the points to check.
|
||||
y : array
|
||||
The y coordinates of the points to check.
|
||||
|
||||
Returns
|
||||
-------
|
||||
Mask of points which touch the exterior of the given `geometry`.
|
||||
|
||||
"""
|
||||
warnings.warn(
|
||||
"The 'shapely.vectorized.touches' function is deprecated and will be "
|
||||
"removed a future version. Use 'shapely.intersects_xy(geometry.boundary, x, y)'"
|
||||
" instead (available since shapely 2.0.0).",
|
||||
DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
if isinstance(geometry, PreparedGeometry):
|
||||
geometry = geometry.context
|
||||
# Touches(geom, point) == Intersects(Boundary(geom), point)
|
||||
boundary = geometry.boundary
|
||||
shapely.prepare(boundary)
|
||||
return shapely.intersects_xy(boundary, x, y)
|
||||
Binary file not shown.
Reference in New Issue
Block a user