Source code for rastervision.core.data.vector_transformer.buffer_transformer_config
from typing import TYPE_CHECKING, Dict, Optional
from rastervision.pipeline.config import register_config, Field
from rastervision.core.data.vector_transformer import (VectorTransformerConfig,
BufferTransformer)
if TYPE_CHECKING:
from rastervision.core.data import ClassConfig
[docs]@register_config('buffer_transformer')
class BufferTransformerConfig(VectorTransformerConfig):
"""Configure a :class:`.BufferTransformer`.
This is useful, for example, for buffering lines representing roads so that
their width roughly matches the width of roads in the imagery.
"""
geom_type: str = Field(
...,
description='The geometry type to apply this transform to. '
'E.g. "LineString", "Point", "Polygon".')
class_bufs: Dict[int, Optional[float]] = Field(
{},
description='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 and the geom won\'t get converted to a Polygon. Not converting '
'to Polygon is incompatible with the currently available '
'LabelSources, but may be useful in the future.')
default_buf: Optional[float] = Field(
1,
description='Default buffer to apply to classes not in class_bufs. '
'If None, no buffering will be applied to the geoms of those classes.')
[docs] def build(self, class_config: Optional['ClassConfig'] = None
) -> BufferTransformer:
return BufferTransformer(
self.geom_type,
class_bufs=self.class_bufs,
default_buf=self.default_buf)