| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- """Validate geometries and make them valid."""
- # TODO: allow for implementations using other than GEOS
- import shapely
- __all__ = ["explain_validity", "make_valid"]
- def explain_validity(ob):
- """Explain the validity of the input geometry, if it is invalid.
- This will describe why the geometry is invalid, and might
- include a location if there is a self-intersection or a
- ring self-intersection.
- Parameters
- ----------
- ob: Geometry
- A shapely geometry object
- Returns
- -------
- str
- A string describing the reason the geometry is invalid.
- """
- return shapely.is_valid_reason(ob)
- def make_valid(ob):
- """Make the input geometry valid according to the GEOS MakeValid algorithm.
- If the input geometry is already valid, then it will be returned.
- If the geometry must be split into multiple parts of the same type to be
- made valid, then a multi-part geometry will be returned.
- If the geometry must be split into multiple parts of different types to be
- made valid, then a GeometryCollection will be returned.
- Parameters
- ----------
- ob : Geometry
- A shapely geometry object which should be made valid. If the object is
- already valid, it will be returned as-is.
- Returns
- -------
- Geometry
- The input geometry, made valid according to the GEOS MakeValid algorithm.
- """
- if ob.is_valid:
- return ob
- return shapely.make_valid(ob)
|