Vegetation
Configuration classes for vegetation placement.
s2gos_generator.core.config.vegetation.VegetationPlacementConfig
pydantic-model
Bases: BaseModel
Configuration for multi-species vegetation placement system.
Controls how vegetation instances are distributed across the scene based on landcover classifications. Supports multiple species per landcover class.
Configuration levels: - Per-species parameters: density, scale, asset (in VegetationSpecies) - Global parameters: spacing, variation, limits (this class)
Config:
default:{'validate_assignment': True}
Fields:
-
enabled(bool) -
landcover_species_mapping(Dict[int, List[VegetationSpecies]]) -
min_spacing(float) -
density_variation(float) -
max_instances_per_pixel(int) -
rotation_range(float) -
tilt_range(float) -
spillover_max_distance_m(float) -
spillover_compatibility(Dict[int, float]) -
random_seed(Optional[int]) -
road_exclusion(RoadExclusionConfig)
Attributes
density_variation
pydantic-field
Random variation in density (±30% by default)
landcover_species_mapping
pydantic-field
Mapping from landcover class to list of vegetation species
max_instances_per_pixel
pydantic-field
Performance limit per pixel across all species
min_spacing
pydantic-field
Global minimum spacing between any vegetation instances (meters)
random_seed
pydantic-field
Random seed for reproducible scene generation. If None, uses system entropy.
rotation_range
pydantic-field
Random rotation range in degrees (azimuth around vertical axis)
spillover_compatibility
pydantic-field
Default spillover compatibility map. Maps landcover class to probability 0.0-1.0. Can be overridden per species.
spillover_max_distance_m
pydantic-field
Maximum distance (meters) for spillover from primary landcover class
s2gos_generator.core.config.vegetation.VegetationSpecies
pydantic-model
Bases: BaseModel
Configuration for a single vegetation species.
Defines placement parameters for a vegetation type (e.g., oak trees, shrubs). Multiple species can be assigned to the same landcover class for mixed vegetation. Instances are placed within pixels of the matched landcover class in the target area.
Config:
default:{'validate_assignment': True}
Fields:
-
name(str) -
asset_xml_paths(Union[List[PathRef], Dict[PathRef, float]]) -
density_per_hectare(float) -
scale_min(float) -
scale_max(float) -
spillover_enabled(bool) -
spillover_compatibility(Optional[Dict[int, float]])
Validators:
Attributes
asset_xml_paths
pydantic-field
Asset XML file path(s). Use list for uniform distribution or dict for weighted distribution
spillover_compatibility
pydantic-field
Per-species spillover compatibility map (overrides global). Maps landcover class to probability 0.0-1.0
spillover_enabled
pydantic-field
Enable spillover into adjacent compatible landcover classes
Functions
get_asset_paths_and_weights
Get asset paths and normalized weights for selection.
Returns:
| Type | Description |
|---|---|
Tuple[List[str], List[float]]
|
(paths, weights) tuple ready for random.choices() |
resolve_asset_paths
pydantic-validator
Resolve all asset XML paths using configured search paths.
This ensures all vegetation assets can be found before scene generation, providing fail-fast behavior with clear error messages.
s2gos_generator.core.config.vegetation.VegetationExclusionZone
pydantic-model
Bases: BaseModel
Standalone vegetation exclusion zone not tied to objects.
Defines a geographic area where vegetation placement is disabled. Geometry can be a circle, box, or arbitrary polygon.
Fields:
-
zone_id(str) -
geometry(Union[CircleGeometry, BoxGeometry, PolygonGeometry])
s2gos_generator.core.config.vegetation.CircleGeometry
pydantic-model
Bases: BaseModel
Circular geometry definition for vegetation exclusion zones.
Coordinates can be specified in either: - Geographic coordinates (WGS84): center=(lon, lat) with coord_type="geographic" - Scene coordinates (meters from scene center): center=(x, y) with coord_type="scene"
Fields:
-
type(Literal['circle']) -
center(Tuple[float, float]) -
coord_type(Literal['geographic', 'scene']) -
radius(float)
Validators:
Attributes
Functions
s2gos_generator.core.config.vegetation.BoxGeometry
pydantic-model
Bases: BaseModel
Rectangular box geometry definition for vegetation exclusion zones.
Coordinates can be specified in either: - Geographic coordinates (WGS84): center=(lon, lat) with coord_type="geographic" - Scene coordinates (meters from scene center): center=(x, y) with coord_type="scene"
Fields:
-
type(Literal['box']) -
center(Tuple[float, float]) -
coord_type(Literal['geographic', 'scene']) -
width(float) -
height(float)
Validators:
Attributes
Functions
s2gos_generator.core.config.vegetation.PolygonGeometry
pydantic-model
Bases: BaseModel
Polygon geometry definition for vegetation exclusion zones.
Coordinates can be specified in either: - Geographic coordinates (WGS84): coordinates=[(lon, lat), ...] with coord_type="geographic" - Scene coordinates (meters from scene center): coordinates=[(x, y), ...] with coord_type="scene"
Fields:
-
type(Literal['polygon']) -
coordinates(List[Tuple[float, float]]) -
coord_type(Literal['geographic', 'scene'])
Validators:
Attributes
coordinates
pydantic-field
Vertices: [(lon, lat), ...] if geographic, [(x, y), ...] if scene. Min 3 vertices.