cars 1.0.0rc2__cp312-cp312-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cars might be problematic. Click here for more details.
- cars/__init__.py +86 -0
- cars/applications/__init__.py +40 -0
- cars/applications/application.py +117 -0
- cars/applications/application_constants.py +29 -0
- cars/applications/application_template.py +146 -0
- cars/applications/auxiliary_filling/__init__.py +29 -0
- cars/applications/auxiliary_filling/abstract_auxiliary_filling_app.py +105 -0
- cars/applications/auxiliary_filling/auxiliary_filling_algo.py +475 -0
- cars/applications/auxiliary_filling/auxiliary_filling_from_sensors_app.py +632 -0
- cars/applications/auxiliary_filling/auxiliary_filling_wrappers.py +90 -0
- cars/applications/dem_generation/__init__.py +30 -0
- cars/applications/dem_generation/abstract_dem_generation_app.py +116 -0
- cars/applications/dem_generation/bulldozer_config/base_config.yaml +42 -0
- cars/applications/dem_generation/bulldozer_dem_app.py +641 -0
- cars/applications/dem_generation/bulldozer_memory.py +55 -0
- cars/applications/dem_generation/dem_generation_algo.py +107 -0
- cars/applications/dem_generation/dem_generation_constants.py +32 -0
- cars/applications/dem_generation/dem_generation_wrappers.py +323 -0
- cars/applications/dense_match_filling/__init__.py +30 -0
- cars/applications/dense_match_filling/abstract_dense_match_filling_app.py +242 -0
- cars/applications/dense_match_filling/fill_disp_algo.py +113 -0
- cars/applications/dense_match_filling/fill_disp_constants.py +39 -0
- cars/applications/dense_match_filling/fill_disp_wrappers.py +83 -0
- cars/applications/dense_match_filling/zero_padding_app.py +302 -0
- cars/applications/dense_matching/__init__.py +30 -0
- cars/applications/dense_matching/abstract_dense_matching_app.py +261 -0
- cars/applications/dense_matching/census_mccnn_sgm_app.py +1461 -0
- cars/applications/dense_matching/cpp/__init__.py +0 -0
- cars/applications/dense_matching/cpp/dense_matching_cpp.cp312-win_amd64.dll.a +0 -0
- cars/applications/dense_matching/cpp/dense_matching_cpp.cp312-win_amd64.pyd +0 -0
- cars/applications/dense_matching/cpp/dense_matching_cpp.py +94 -0
- cars/applications/dense_matching/cpp/includes/dense_matching.hpp +58 -0
- cars/applications/dense_matching/cpp/meson.build +9 -0
- cars/applications/dense_matching/cpp/src/bindings.cpp +13 -0
- cars/applications/dense_matching/cpp/src/dense_matching.cpp +207 -0
- cars/applications/dense_matching/dense_matching_algo.py +401 -0
- cars/applications/dense_matching/dense_matching_constants.py +89 -0
- cars/applications/dense_matching/dense_matching_wrappers.py +951 -0
- cars/applications/dense_matching/disparity_grid_algo.py +597 -0
- cars/applications/dense_matching/loaders/__init__.py +23 -0
- cars/applications/dense_matching/loaders/config_census_sgm_default.json +31 -0
- cars/applications/dense_matching/loaders/config_census_sgm_homogeneous.json +30 -0
- cars/applications/dense_matching/loaders/config_census_sgm_mountain_and_vegetation.json +30 -0
- cars/applications/dense_matching/loaders/config_census_sgm_shadow.json +30 -0
- cars/applications/dense_matching/loaders/config_census_sgm_sparse.json +36 -0
- cars/applications/dense_matching/loaders/config_census_sgm_urban.json +30 -0
- cars/applications/dense_matching/loaders/config_mapping.json +13 -0
- cars/applications/dense_matching/loaders/config_mccnn.json +28 -0
- cars/applications/dense_matching/loaders/global_land_cover_map.tif +0 -0
- cars/applications/dense_matching/loaders/pandora_loader.py +593 -0
- cars/applications/dsm_filling/__init__.py +32 -0
- cars/applications/dsm_filling/abstract_dsm_filling_app.py +101 -0
- cars/applications/dsm_filling/border_interpolation_app.py +278 -0
- cars/applications/dsm_filling/bulldozer_config/base_config.yaml +44 -0
- cars/applications/dsm_filling/bulldozer_filling_app.py +288 -0
- cars/applications/dsm_filling/exogenous_filling_app.py +341 -0
- cars/applications/dsm_merging/__init__.py +28 -0
- cars/applications/dsm_merging/abstract_dsm_merging_app.py +101 -0
- cars/applications/dsm_merging/weighted_fusion_app.py +639 -0
- cars/applications/grid_correction/__init__.py +30 -0
- cars/applications/grid_correction/abstract_grid_correction_app.py +103 -0
- cars/applications/grid_correction/grid_correction_app.py +557 -0
- cars/applications/grid_generation/__init__.py +30 -0
- cars/applications/grid_generation/abstract_grid_generation_app.py +142 -0
- cars/applications/grid_generation/epipolar_grid_generation_app.py +327 -0
- cars/applications/grid_generation/grid_generation_algo.py +388 -0
- cars/applications/grid_generation/grid_generation_constants.py +46 -0
- cars/applications/grid_generation/transform_grid.py +88 -0
- cars/applications/ground_truth_reprojection/__init__.py +30 -0
- cars/applications/ground_truth_reprojection/abstract_ground_truth_reprojection_app.py +137 -0
- cars/applications/ground_truth_reprojection/direct_localization_app.py +629 -0
- cars/applications/ground_truth_reprojection/ground_truth_reprojection_algo.py +275 -0
- cars/applications/point_cloud_outlier_removal/__init__.py +30 -0
- cars/applications/point_cloud_outlier_removal/abstract_outlier_removal_app.py +385 -0
- cars/applications/point_cloud_outlier_removal/outlier_removal_algo.py +392 -0
- cars/applications/point_cloud_outlier_removal/outlier_removal_constants.py +43 -0
- cars/applications/point_cloud_outlier_removal/small_components_app.py +522 -0
- cars/applications/point_cloud_outlier_removal/statistical_app.py +528 -0
- cars/applications/rasterization/__init__.py +30 -0
- cars/applications/rasterization/abstract_pc_rasterization_app.py +183 -0
- cars/applications/rasterization/rasterization_algo.py +534 -0
- cars/applications/rasterization/rasterization_constants.py +38 -0
- cars/applications/rasterization/rasterization_wrappers.py +639 -0
- cars/applications/rasterization/simple_gaussian_app.py +1152 -0
- cars/applications/resampling/__init__.py +28 -0
- cars/applications/resampling/abstract_resampling_app.py +187 -0
- cars/applications/resampling/bicubic_resampling_app.py +760 -0
- cars/applications/resampling/resampling_algo.py +590 -0
- cars/applications/resampling/resampling_constants.py +36 -0
- cars/applications/resampling/resampling_wrappers.py +309 -0
- cars/applications/sensors_subsampling/__init__.py +32 -0
- cars/applications/sensors_subsampling/abstract_subsampling_app.py +109 -0
- cars/applications/sensors_subsampling/rasterio_subsampling_app.py +420 -0
- cars/applications/sensors_subsampling/subsampling_algo.py +108 -0
- cars/applications/sparse_matching/__init__.py +30 -0
- cars/applications/sparse_matching/abstract_sparse_matching_app.py +599 -0
- cars/applications/sparse_matching/sift_app.py +724 -0
- cars/applications/sparse_matching/sparse_matching_algo.py +360 -0
- cars/applications/sparse_matching/sparse_matching_constants.py +66 -0
- cars/applications/sparse_matching/sparse_matching_wrappers.py +282 -0
- cars/applications/triangulation/__init__.py +32 -0
- cars/applications/triangulation/abstract_triangulation_app.py +227 -0
- cars/applications/triangulation/line_of_sight_intersection_app.py +1243 -0
- cars/applications/triangulation/pc_transform.py +552 -0
- cars/applications/triangulation/triangulation_algo.py +371 -0
- cars/applications/triangulation/triangulation_constants.py +38 -0
- cars/applications/triangulation/triangulation_wrappers.py +259 -0
- cars/bundleadjustment.py +750 -0
- cars/cars.py +179 -0
- cars/conf/__init__.py +23 -0
- cars/conf/geoid/egm96.grd +0 -0
- cars/conf/geoid/egm96.grd.hdr +15 -0
- cars/conf/input_parameters.py +156 -0
- cars/conf/mask_cst.py +35 -0
- cars/core/__init__.py +23 -0
- cars/core/cars_logging.py +402 -0
- cars/core/constants.py +191 -0
- cars/core/constants_disparity.py +50 -0
- cars/core/datasets.py +140 -0
- cars/core/geometry/__init__.py +27 -0
- cars/core/geometry/abstract_geometry.py +1119 -0
- cars/core/geometry/shareloc_geometry.py +598 -0
- cars/core/inputs.py +568 -0
- cars/core/outputs.py +176 -0
- cars/core/preprocessing.py +722 -0
- cars/core/projection.py +843 -0
- cars/core/roi_tools.py +215 -0
- cars/core/tiling.py +774 -0
- cars/core/utils.py +164 -0
- cars/data_structures/__init__.py +23 -0
- cars/data_structures/cars_dataset.py +1544 -0
- cars/data_structures/cars_dict.py +74 -0
- cars/data_structures/corresponding_tiles_tools.py +186 -0
- cars/data_structures/dataframe_converter.py +185 -0
- cars/data_structures/format_transformation.py +297 -0
- cars/devibrate.py +689 -0
- cars/extractroi.py +264 -0
- cars/orchestrator/__init__.py +23 -0
- cars/orchestrator/achievement_tracker.py +125 -0
- cars/orchestrator/cluster/__init__.py +37 -0
- cars/orchestrator/cluster/abstract_cluster.py +250 -0
- cars/orchestrator/cluster/abstract_dask_cluster.py +381 -0
- cars/orchestrator/cluster/dask_cluster_tools.py +103 -0
- cars/orchestrator/cluster/dask_config/README.md +94 -0
- cars/orchestrator/cluster/dask_config/dask.yaml +21 -0
- cars/orchestrator/cluster/dask_config/distributed.yaml +70 -0
- cars/orchestrator/cluster/dask_config/jobqueue.yaml +26 -0
- cars/orchestrator/cluster/dask_config/reference_confs/dask-schema.yaml +137 -0
- cars/orchestrator/cluster/dask_config/reference_confs/dask.yaml +26 -0
- cars/orchestrator/cluster/dask_config/reference_confs/distributed-schema.yaml +1009 -0
- cars/orchestrator/cluster/dask_config/reference_confs/distributed.yaml +273 -0
- cars/orchestrator/cluster/dask_config/reference_confs/jobqueue.yaml +212 -0
- cars/orchestrator/cluster/dask_jobqueue_utils.py +204 -0
- cars/orchestrator/cluster/local_dask_cluster.py +116 -0
- cars/orchestrator/cluster/log_wrapper.py +728 -0
- cars/orchestrator/cluster/mp_cluster/__init__.py +27 -0
- cars/orchestrator/cluster/mp_cluster/mp_factorizer.py +212 -0
- cars/orchestrator/cluster/mp_cluster/mp_objects.py +535 -0
- cars/orchestrator/cluster/mp_cluster/mp_tools.py +93 -0
- cars/orchestrator/cluster/mp_cluster/mp_wrapper.py +505 -0
- cars/orchestrator/cluster/mp_cluster/multiprocessing_cluster.py +986 -0
- cars/orchestrator/cluster/mp_cluster/multiprocessing_profiler.py +399 -0
- cars/orchestrator/cluster/pbs_dask_cluster.py +207 -0
- cars/orchestrator/cluster/sequential_cluster.py +139 -0
- cars/orchestrator/cluster/slurm_dask_cluster.py +234 -0
- cars/orchestrator/memory_tools.py +47 -0
- cars/orchestrator/orchestrator.py +755 -0
- cars/orchestrator/orchestrator_constants.py +29 -0
- cars/orchestrator/registry/__init__.py +23 -0
- cars/orchestrator/registry/abstract_registry.py +143 -0
- cars/orchestrator/registry/compute_registry.py +106 -0
- cars/orchestrator/registry/id_generator.py +116 -0
- cars/orchestrator/registry/replacer_registry.py +213 -0
- cars/orchestrator/registry/saver_registry.py +363 -0
- cars/orchestrator/registry/unseen_registry.py +118 -0
- cars/orchestrator/tiles_profiler.py +279 -0
- cars/pipelines/__init__.py +26 -0
- cars/pipelines/conf_resolution/conf_final_resolution.yaml +5 -0
- cars/pipelines/conf_resolution/conf_first_resolution.yaml +4 -0
- cars/pipelines/conf_resolution/conf_intermediate_resolution.yaml +2 -0
- cars/pipelines/default/__init__.py +26 -0
- cars/pipelines/default/default_pipeline.py +1088 -0
- cars/pipelines/filling/__init__.py +26 -0
- cars/pipelines/filling/filling.py +981 -0
- cars/pipelines/formatting/__init__.py +26 -0
- cars/pipelines/formatting/formatting.py +186 -0
- cars/pipelines/merging/__init__.py +26 -0
- cars/pipelines/merging/merging.py +439 -0
- cars/pipelines/parameters/__init__.py +0 -0
- cars/pipelines/parameters/advanced_parameters.py +256 -0
- cars/pipelines/parameters/advanced_parameters_constants.py +68 -0
- cars/pipelines/parameters/application_parameters.py +72 -0
- cars/pipelines/parameters/depth_map_inputs.py +0 -0
- cars/pipelines/parameters/dsm_inputs.py +349 -0
- cars/pipelines/parameters/dsm_inputs_constants.py +25 -0
- cars/pipelines/parameters/output_constants.py +52 -0
- cars/pipelines/parameters/output_parameters.py +438 -0
- cars/pipelines/parameters/sensor_inputs.py +859 -0
- cars/pipelines/parameters/sensor_inputs_constants.py +51 -0
- cars/pipelines/parameters/sensor_loaders/__init__.py +29 -0
- cars/pipelines/parameters/sensor_loaders/basic_classif_loader.py +86 -0
- cars/pipelines/parameters/sensor_loaders/basic_image_loader.py +98 -0
- cars/pipelines/parameters/sensor_loaders/pivot_classif_loader.py +90 -0
- cars/pipelines/parameters/sensor_loaders/pivot_image_loader.py +105 -0
- cars/pipelines/parameters/sensor_loaders/sensor_loader.py +93 -0
- cars/pipelines/parameters/sensor_loaders/sensor_loader_template.py +71 -0
- cars/pipelines/parameters/sensor_loaders/slurp_classif_loader.py +86 -0
- cars/pipelines/pipeline.py +119 -0
- cars/pipelines/pipeline_constants.py +38 -0
- cars/pipelines/pipeline_template.py +135 -0
- cars/pipelines/subsampling/__init__.py +26 -0
- cars/pipelines/subsampling/subsampling.py +358 -0
- cars/pipelines/surface_modeling/__init__.py +26 -0
- cars/pipelines/surface_modeling/surface_modeling.py +2098 -0
- cars/pipelines/tie_points/__init__.py +26 -0
- cars/pipelines/tie_points/tie_points.py +536 -0
- cars/starter.py +167 -0
- cars-1.0.0rc2.dist-info/DELVEWHEEL +2 -0
- cars-1.0.0rc2.dist-info/METADATA +289 -0
- cars-1.0.0rc2.dist-info/RECORD +225 -0
- cars-1.0.0rc2.dist-info/WHEEL +4 -0
- cars-1.0.0rc2.dist-info/entry_points.txt +8 -0
- cars.libs/libgcc_s_seh-1-b2494fcbd4d80cf2c98fdd5261f6d850.dll +0 -0
- cars.libs/libstdc++-6-e9b0d12ae0e9555bbae55e8dfd08c3f7.dll +0 -0
- cars.libs/libwinpthread-1-7882d1b093714ccdfaf4e0789a817792.dll +0 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# !/usr/bin/env python
|
|
2
|
+
# coding: utf8
|
|
3
|
+
#
|
|
4
|
+
# Copyright (c) 2024 Centre National d'Etudes Spatiales (CNES).
|
|
5
|
+
#
|
|
6
|
+
# This file is part of CARS
|
|
7
|
+
# (see https://github.com/CNES/cars).
|
|
8
|
+
#
|
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
# you may not use this file except in compliance with the License.
|
|
11
|
+
# You may obtain a copy of the License at
|
|
12
|
+
#
|
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
#
|
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
# See the License for the specific language governing permissions and
|
|
19
|
+
# limitations under the License.
|
|
20
|
+
#
|
|
21
|
+
"""
|
|
22
|
+
this module contains the AuxiliaryFillingFromSensors application class.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
from pyproj import CRS
|
|
26
|
+
from shapely.geometry import Polygon
|
|
27
|
+
|
|
28
|
+
from cars.core.projection import polygon_projection_crs
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def compute_sensor_bounds(sensor_inputs, geom_plugin, output_crs):
|
|
32
|
+
"""
|
|
33
|
+
Compute bounds of each input sensor that have an associated color or
|
|
34
|
+
classification image
|
|
35
|
+
|
|
36
|
+
:param sensor_inputs: dictionary containing paths to input images and models
|
|
37
|
+
:type sensor_inputs: dict
|
|
38
|
+
:param geom_plugin: geometry plugin used for inverse locations
|
|
39
|
+
:type geom_plugin: AbstractGeometry
|
|
40
|
+
:param geom_plugin: geometry plugin used for inverse locations
|
|
41
|
+
:type geom_plugin: AbstractGeometry
|
|
42
|
+
:param output_crs: crs of the output polygons
|
|
43
|
+
:type output_crs: CRS
|
|
44
|
+
|
|
45
|
+
:return: a dictionary containing a Polygon in output geometry for each
|
|
46
|
+
valid input sensor
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
sensor_bounds = {}
|
|
50
|
+
|
|
51
|
+
for sensor_name, sensor in sensor_inputs.items():
|
|
52
|
+
reference_sensor_image = sensor["image"]["bands"]["b0"]["path"]
|
|
53
|
+
# no data for this sensor, no need to compute its bounds
|
|
54
|
+
if reference_sensor_image is None:
|
|
55
|
+
continue
|
|
56
|
+
|
|
57
|
+
u_l, u_r, l_l, l_r = geom_plugin.image_envelope(
|
|
58
|
+
reference_sensor_image, sensor["geomodel"]
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
poly_geo = Polygon([u_l, u_r, l_r, l_l, u_l])
|
|
62
|
+
|
|
63
|
+
sensor_bounds[sensor_name] = polygon_projection_crs(
|
|
64
|
+
poly_geo, CRS(4326), output_crs
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
return sensor_bounds
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def filter_sensor_inputs(sensor_inputs, sensor_bounds, ground_polygon):
|
|
71
|
+
"""
|
|
72
|
+
Filter input sensors by comparing their bounds to a reference Polygon
|
|
73
|
+
|
|
74
|
+
:param sensor_inputs: dictionary containing paths to input images and models
|
|
75
|
+
:type sensor_inputs: dict
|
|
76
|
+
:param sensor_bounds: dictionary containing bounds of input sensors
|
|
77
|
+
:type sensor_bounds: dict
|
|
78
|
+
:param ground_polygon: reference polygon, in ground geometry
|
|
79
|
+
:type ground_polygon: Polygon
|
|
80
|
+
|
|
81
|
+
:return: a fitlered version of sensor_inputs
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
filtered_sensor_inputs = sensor_inputs.copy()
|
|
85
|
+
|
|
86
|
+
for sensor_name, bound in sensor_bounds.items():
|
|
87
|
+
if not bound.intersects(ground_polygon):
|
|
88
|
+
del filtered_sensor_inputs[sensor_name]
|
|
89
|
+
|
|
90
|
+
return filtered_sensor_inputs
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# !/usr/bin/env python
|
|
2
|
+
# coding: utf8
|
|
3
|
+
#
|
|
4
|
+
# Copyright (c) 2020 Centre National d'Etudes Spatiales (CNES).
|
|
5
|
+
#
|
|
6
|
+
# This file is part of CARS
|
|
7
|
+
# (see https://github.com/CNES/cars).
|
|
8
|
+
#
|
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
# you may not use this file except in compliance with the License.
|
|
11
|
+
# You may obtain a copy of the License at
|
|
12
|
+
#
|
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
#
|
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
# See the License for the specific language governing permissions and
|
|
19
|
+
# limitations under the License.
|
|
20
|
+
#
|
|
21
|
+
"""
|
|
22
|
+
CARS dem generation init file
|
|
23
|
+
"""
|
|
24
|
+
# flake8: noqa: F401
|
|
25
|
+
|
|
26
|
+
from cars.applications.dem_generation.abstract_dem_generation_app import (
|
|
27
|
+
DemGeneration,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
from . import bulldozer_dem_app
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# coding: utf8
|
|
3
|
+
#
|
|
4
|
+
# Copyright (c) 2020 Centre National d'Etudes Spatiales (CNES).
|
|
5
|
+
#
|
|
6
|
+
# This file is part of CARS
|
|
7
|
+
# (see https://github.com/CNES/cars).
|
|
8
|
+
#
|
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
# you may not use this file except in compliance with the License.
|
|
11
|
+
# You may obtain a copy of the License at
|
|
12
|
+
#
|
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
#
|
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
# See the License for the specific language governing permissions and
|
|
19
|
+
# limitations under the License.
|
|
20
|
+
#
|
|
21
|
+
"""
|
|
22
|
+
This module contains the abstract dem_generation application class.
|
|
23
|
+
"""
|
|
24
|
+
import logging
|
|
25
|
+
from abc import ABCMeta, abstractmethod
|
|
26
|
+
from typing import Dict
|
|
27
|
+
|
|
28
|
+
from cars.applications.application import Application
|
|
29
|
+
from cars.applications.application_template import ScalingApplicationTemplate
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@Application.register("dem_generation")
|
|
33
|
+
class DemGeneration(ScalingApplicationTemplate, metaclass=ABCMeta):
|
|
34
|
+
"""
|
|
35
|
+
DemGeneration
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
available_applications: Dict = {}
|
|
39
|
+
default_application = "bulldozer_on_raster"
|
|
40
|
+
|
|
41
|
+
def __new__(cls, scaling_coeff, conf=None): # pylint: disable=W0613
|
|
42
|
+
"""
|
|
43
|
+
Return the required application
|
|
44
|
+
:raises:
|
|
45
|
+
- KeyError when the required application is not registered
|
|
46
|
+
|
|
47
|
+
:param orchestrator: orchestrator used
|
|
48
|
+
:param scaling_coeff: scaling factor for resolution
|
|
49
|
+
:type scaling_coeff: float
|
|
50
|
+
:param conf: configuration for resampling
|
|
51
|
+
:return: an application_to_use object
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
dem_generation_method = cls.default_application
|
|
55
|
+
if bool(conf) is False or "method" not in conf:
|
|
56
|
+
logging.info(
|
|
57
|
+
"MntGeneration method not specified, default"
|
|
58
|
+
" {} is used".format(dem_generation_method)
|
|
59
|
+
)
|
|
60
|
+
else:
|
|
61
|
+
dem_generation_method = conf["method"]
|
|
62
|
+
|
|
63
|
+
if dem_generation_method not in cls.available_applications:
|
|
64
|
+
logging.error(
|
|
65
|
+
"No dem_generation application named {} registered".format(
|
|
66
|
+
dem_generation_method
|
|
67
|
+
)
|
|
68
|
+
)
|
|
69
|
+
raise KeyError(
|
|
70
|
+
"No dem_generation application named {} registered".format(
|
|
71
|
+
dem_generation_method
|
|
72
|
+
)
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
logging.info(
|
|
76
|
+
"The DemGeneration {} application will be used".format(
|
|
77
|
+
dem_generation_method
|
|
78
|
+
)
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
return super(DemGeneration, cls).__new__(
|
|
82
|
+
cls.available_applications[dem_generation_method]
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
def __init_subclass__(cls, short_name, **kwargs): # pylint: disable=E0302
|
|
86
|
+
super().__init_subclass__(**kwargs)
|
|
87
|
+
cls.available_applications[short_name] = cls
|
|
88
|
+
|
|
89
|
+
def __init__(self, scaling_coeff, conf=None):
|
|
90
|
+
"""
|
|
91
|
+
Init function of MntGeneration
|
|
92
|
+
|
|
93
|
+
:param scaling_coeff: scaling factor for resolution
|
|
94
|
+
:type scaling_coeff: float
|
|
95
|
+
:param conf: configuration
|
|
96
|
+
:return: an application_to_use object
|
|
97
|
+
"""
|
|
98
|
+
|
|
99
|
+
super().__init__(scaling_coeff, conf=conf)
|
|
100
|
+
|
|
101
|
+
@abstractmethod
|
|
102
|
+
def run(self, triangulated_matches_list, output_dir):
|
|
103
|
+
"""
|
|
104
|
+
Run dem generation using matches
|
|
105
|
+
|
|
106
|
+
:param triangulated_matches_list: list of triangulated matches
|
|
107
|
+
positions must be in a metric system
|
|
108
|
+
:type triangulated_matches_list: list(pandas.Dataframe)
|
|
109
|
+
:param output_dir: directory to save dem
|
|
110
|
+
:type output_dir: str
|
|
111
|
+
|
|
112
|
+
:return: dem data computed with mean, min and max.
|
|
113
|
+
dem is also saved in disk, and paths are available in attributes.
|
|
114
|
+
(DEM_MEDIAN_PATH, DEM_MIN_PATH, DEM_MAX_PATH)
|
|
115
|
+
:rtype: CarsDataset
|
|
116
|
+
"""
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#-------------------------#
|
|
2
|
+
# Parameters #
|
|
3
|
+
#-------------------------#
|
|
4
|
+
# [Required] - Input DSM path (expected format: "<folder_1>/<folder_2>/<file>.<[tif/tiff]>")
|
|
5
|
+
dsm_path : "input_dsm_path/dsm.tif"
|
|
6
|
+
# [Required] - Output directory path (if the directory doesn't exist, create it)
|
|
7
|
+
output_dir : "output_dir_path"
|
|
8
|
+
|
|
9
|
+
#-------------------------#
|
|
10
|
+
# Options #
|
|
11
|
+
#-------------------------#
|
|
12
|
+
# [Optional] - If True, generates the Digital Height Model (DHM=DSM-DTM) in the output directory
|
|
13
|
+
generate_dhm : True
|
|
14
|
+
# [Optional] - Foreground max object size (in meter)
|
|
15
|
+
max_object_size : 16
|
|
16
|
+
# [Optional] - Path to the binary ground classification mask (expected format: "<folder_1>/<folder_2>/<mask>.<[tif/tiff]>")
|
|
17
|
+
ground_mask_path : null
|
|
18
|
+
# [Optional] - If True, activate ground anchor detection (ground pre-detection)
|
|
19
|
+
activate_ground_anchors : False
|
|
20
|
+
# [Optional] - Max number of CPU core to use. If null, use maximum number of available CPU core
|
|
21
|
+
nb_max_workers : null
|
|
22
|
+
# [Optional] - If True, keep the intermediate results
|
|
23
|
+
developer_mode : False
|
|
24
|
+
|
|
25
|
+
#-------------------------#
|
|
26
|
+
# Expert options #
|
|
27
|
+
#-------------------------#
|
|
28
|
+
# /!\ Modify those data at your own risk (it is suggested to keep the default values) /!\
|
|
29
|
+
|
|
30
|
+
# [Optional] - Number of regular mask filtering iterations. If null, use the default value: max_object_size/4
|
|
31
|
+
reg_filtering_iter: null
|
|
32
|
+
# [Optional] - Altimetric height accuracy of the input DSM (m). If null, use the default value: 2*planimetric resolution
|
|
33
|
+
dsm_z_accuracy: null
|
|
34
|
+
# [Optional] - Maximum slope of the observed landscape terrain (%)
|
|
35
|
+
max_ground_slope: 20.0
|
|
36
|
+
# [Optional] - Number of unhook iterations
|
|
37
|
+
prevent_unhook_iter : 10
|
|
38
|
+
# [Optional] - Number of gravity step iterations
|
|
39
|
+
num_outer_iter : 25
|
|
40
|
+
# [Optional] - Number of tension iterations
|
|
41
|
+
num_inner_iter : 5
|
|
42
|
+
|