Source code for shapeit.geometry.multi

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Created on 9/11/19 by Pat Daburu
"""
.. currentmodule:: shapeit.geometry.multi
.. moduleauthor:: Pat Daburu <pat@daburu.net>

This module contains multipart geometry objects.
"""
from typing import Mapping, Union
from shapely.geometry import MultiPoint, MultiLineString, MultiPolygon
from shapely.ops import unary_union
from .base import (
    SrGeometry,
    SrPolygon,
    SrGeometry1D,
    SrGeometry2D,
    update_geometry_type_map
)
from ..srs import Sr, WGS_84


[docs]class SrMultiPoint(SrGeometry): """ A spatially referenced mutlipoint geometry. """ def __init__( self, base_geometry: Union[MultiPoint, Mapping], sr: Sr = WGS_84 ): super().__init__(base_geometry=base_geometry, sr=sr) @property def multipoint(self) -> MultiPoint: """ Get the base geometry as a `shapely.geometry.MultiPoint`. """ return self._base_geometry
[docs]class SrMultiPolygon(SrGeometry2D): """ A spatially referenced multipolygon geometry. """ def __init__( self, base_geometry: Union[MultiPolygon, Mapping], sr: Sr = WGS_84 ): super().__init__(base_geometry=base_geometry, sr=sr) @property def multipolygon(self) -> MultiPolygon: """ Get the base geometry as a `shapely.geometry.MultiPolygon`. """ return self._base_geometry @property def dissolve(self) -> SrPolygon: """ Get a representation of the union of the the polygons. :return: the dissolved polygon """ return SrPolygon( base_geometry=unary_union(self._base_geometry), sr=self._sr )
[docs]class SrMultiPolyline(SrGeometry1D): """ A spatially referenced polyline geometry. """ def __init__( self, base_geometry: Union[MultiLineString, Mapping], sr: Sr = WGS_84 ): super().__init__(base_geometry=base_geometry, sr=sr) @property def multilinestring(self) -> MultiLineString: """ Get the base geometry as a `shapely.geometry.Polygon`. """ return self._base_geometry
SrMultiLinestring = ( SrMultiPolyline ) #: This is an alias for :py:class:`SrMultiPolyline` # Update the geometry type map to include the new geometries defined in this # module. update_geometry_type_map(MultiPoint, SrMultiPoint) update_geometry_type_map(MultiPolygon, SrMultiPolygon) update_geometry_type_map(MultiLineString, SrMultiPolyline)