Source code for rastervision.core.data.vector_transformer.buffer_transformer
from typing import TYPE_CHECKING, Dict, Optional
from rastervision.core.data.utils.geojson import buffer_geoms
from rastervision.core.data.vector_transformer import VectorTransformer
if TYPE_CHECKING:
from rastervision.core.data import CRSTransformer
[docs]class BufferTransformer(VectorTransformer):
"""Buffers geometries."""
[docs] def __init__(self,
geom_type: str,
class_bufs: Optional[Dict[int, Optional[float]]] = None,
default_buf: Optional[float] = None):
"""Constructor.
Args:
geom_type (str): The geometry type to apply this transform to.
E.g. "LineString", "Point", "Polygon".
class_bufs (Dict[int, Optional[float]], optional): Mapping from
class IDs to buffer amounts (in pixels). If a class ID is not
found in the mapping, the value specified by the default_buf
field will be used. If the buffer value for a class is None,
then no buffering will be applied to the geoms of that
class.
Defaults to {}.
default_buf (Optional[float], optional): Default buffer to apply to
classes not in class_bufs. If None, no buffering will be
applied to the geoms of those missing classes. Defaults to
None.
"""
self.geom_type = geom_type
self.class_bufs = class_bufs if class_bufs is not None else {}
self.default_buf = default_buf
[docs] def transform(self,
geojson: dict,
crs_transformer: Optional['CRSTransformer'] = None) -> dict:
return buffer_geoms(
geojson,
self.geom_type,
class_bufs=self.class_bufs,
default_buf=self.default_buf)