import logging
import os
import sys
from enum import Enum
import hydra
from omegaconf import DictConfig
[docs]
class POSSIBLE_TASK(Enum):
CLEANING = "cleaning"
ID_VEGETATION_UNCLASSIFIED = "identify_vegetation_unclassified"
OPT_VEGETATION = "optimize_veg_id"
OPT_UNCLASSIFIED = "optimize_unc_id"
APPLY_BUILDING = "apply_on_building"
OPT_BUIlDING = "optimize_building"
GET_SHAPEFILE = "get_shapefile"
[docs]
@hydra.main(config_path="../configs/", config_name="config.yaml")
def main(config: DictConfig): # pragma: no cover
"""Main entry point to either apply or optimize thresholds.
Check the configurations files for usage.
"""
# Imports should be nested inside @hydra.main to optimize tab completion
# Read more here: https://github.com/facebookresearch/hydra/issues/934
from lidar_prod.application import (
apply,
apply_building_module,
get_shapefile,
identify_vegetation_unclassified,
just_clean,
)
from lidar_prod.commons.commons import extras
from lidar_prod.optimization import (
optimize_building,
optimize_unclassified,
optimize_vegetation,
)
log = logging.getLogger(__name__)
extras(config)
if config.get("task") == POSSIBLE_TASK.OPT_VEGETATION.value:
optimize_vegetation(config)
elif config.get("task") == POSSIBLE_TASK.OPT_UNCLASSIFIED.value:
optimize_unclassified(config)
elif config.get("task") == POSSIBLE_TASK.ID_VEGETATION_UNCLASSIFIED.value:
apply(config, identify_vegetation_unclassified)
elif config.get("task") == POSSIBLE_TASK.CLEANING.value:
apply(config, just_clean)
elif config.get("task") == POSSIBLE_TASK.APPLY_BUILDING.value:
apply(config, apply_building_module)
elif config.get("task") == POSSIBLE_TASK.OPT_BUIlDING.value:
optimize_building(config)
elif config.get("task") == POSSIBLE_TASK.GET_SHAPEFILE.value:
apply(config, get_shapefile)
else:
log.info("Starting applying the default process")
apply(config, apply_building_module)
if __name__ == "__main__": # pragma: no cover
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
# OmegaConf.register_new_resolver("get_method", hydra.utils.get_method)
main()