cars 1.0.0a3__cp313-cp313-win_amd64.whl → 1.0.0a4__cp313-cp313-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.

Files changed (139) hide show
  1. cars/__init__.py +3 -3
  2. cars/applications/__init__.py +0 -3
  3. cars/applications/application_template.py +20 -0
  4. cars/applications/auxiliary_filling/abstract_auxiliary_filling_app.py +12 -2
  5. cars/applications/auxiliary_filling/auxiliary_filling_algo.py +2 -2
  6. cars/applications/auxiliary_filling/auxiliary_filling_from_sensors_app.py +80 -36
  7. cars/applications/dem_generation/dem_generation_algo.py +1 -1
  8. cars/applications/dem_generation/dem_generation_wrappers.py +23 -57
  9. cars/applications/dem_generation/dichotomic_generation_app.py +3 -3
  10. cars/applications/dem_generation/rasterization_app.py +100 -41
  11. cars/applications/dense_match_filling/__init__.py +1 -1
  12. cars/applications/dense_match_filling/abstract_dense_match_filling_app.py +2 -15
  13. cars/applications/dense_match_filling/fill_disp_algo.py +32 -373
  14. cars/applications/dense_match_filling/fill_disp_wrappers.py +0 -343
  15. cars/applications/dense_match_filling/zero_padding_app.py +10 -5
  16. cars/applications/dense_matching/abstract_dense_matching_app.py +2 -1
  17. cars/applications/dense_matching/census_mccnn_sgm_app.py +38 -39
  18. cars/applications/dense_matching/cpp/dense_matching_cpp.cp313-win_amd64.dll.a +0 -0
  19. cars/applications/dense_matching/cpp/dense_matching_cpp.cp313-win_amd64.pyd +0 -0
  20. cars/applications/dense_matching/dense_matching_algo.py +48 -14
  21. cars/applications/dense_matching/dense_matching_wrappers.py +11 -3
  22. cars/applications/dense_matching/disparity_grid_algo.py +84 -62
  23. cars/applications/dense_matching/loaders/pandora_loader.py +91 -33
  24. cars/applications/dsm_filling/border_interpolation_app.py +1 -7
  25. cars/applications/dsm_filling/bulldozer_filling_app.py +2 -8
  26. cars/applications/dsm_filling/exogenous_filling_app.py +4 -9
  27. cars/applications/grid_generation/abstract_grid_generation_app.py +1 -1
  28. cars/applications/grid_generation/epipolar_grid_generation_app.py +4 -2
  29. cars/applications/grid_generation/grid_correction_app.py +4 -1
  30. cars/applications/grid_generation/grid_generation_algo.py +7 -2
  31. cars/applications/ground_truth_reprojection/abstract_ground_truth_reprojection_app.py +1 -1
  32. cars/applications/ground_truth_reprojection/direct_localization_app.py +2 -2
  33. cars/applications/ground_truth_reprojection/ground_truth_reprojection_algo.py +2 -1
  34. cars/applications/point_cloud_fusion/abstract_pc_fusion_app.py +0 -155
  35. cars/applications/point_cloud_fusion/mapping_to_terrain_tiles_app.py +0 -658
  36. cars/applications/point_cloud_fusion/pc_fusion_algo.py +0 -1339
  37. cars/applications/point_cloud_fusion/pc_fusion_wrappers.py +0 -869
  38. cars/applications/point_cloud_outlier_removal/abstract_outlier_removal_app.py +2 -1
  39. cars/applications/point_cloud_outlier_removal/outlier_removal_algo.py +9 -8
  40. cars/applications/point_cloud_outlier_removal/small_components_app.py +96 -267
  41. cars/applications/point_cloud_outlier_removal/statistical_app.py +116 -275
  42. cars/applications/rasterization/abstract_pc_rasterization_app.py +1 -1
  43. cars/applications/rasterization/rasterization_algo.py +18 -6
  44. cars/applications/rasterization/rasterization_wrappers.py +2 -1
  45. cars/applications/rasterization/simple_gaussian_app.py +60 -113
  46. cars/applications/resampling/abstract_resampling_app.py +1 -1
  47. cars/applications/resampling/bicubic_resampling_app.py +3 -1
  48. cars/applications/resampling/resampling_algo.py +16 -4
  49. cars/applications/resampling/resampling_wrappers.py +3 -1
  50. cars/applications/sparse_matching/abstract_sparse_matching_app.py +1 -1
  51. cars/applications/sparse_matching/sift_app.py +3 -3
  52. cars/applications/sparse_matching/sparse_matching_algo.py +3 -2
  53. cars/applications/sparse_matching/sparse_matching_wrappers.py +1 -1
  54. cars/applications/triangulation/abstract_triangulation_app.py +1 -1
  55. cars/applications/triangulation/line_of_sight_intersection_app.py +13 -11
  56. cars/applications/triangulation/pc_transform.py +552 -0
  57. cars/applications/triangulation/triangulation_algo.py +6 -4
  58. cars/applications/triangulation/triangulation_wrappers.py +1 -0
  59. cars/bundleadjustment.py +6 -6
  60. cars/cars.py +11 -9
  61. cars/core/cars_logging.py +80 -49
  62. cars/core/constants.py +0 -1
  63. cars/core/datasets.py +5 -2
  64. cars/core/geometry/abstract_geometry.py +256 -25
  65. cars/core/geometry/shareloc_geometry.py +110 -82
  66. cars/core/inputs.py +57 -19
  67. cars/core/outputs.py +1 -1
  68. cars/core/preprocessing.py +17 -3
  69. cars/core/projection.py +9 -6
  70. cars/core/tiling.py +10 -3
  71. cars/data_structures/cars_dataset.py +5 -5
  72. cars/data_structures/corresponding_tiles_tools.py +0 -103
  73. cars/data_structures/format_transformation.py +4 -1
  74. cars/devibrate.py +6 -3
  75. cars/extractroi.py +20 -21
  76. cars/orchestrator/cluster/abstract_cluster.py +15 -5
  77. cars/orchestrator/cluster/abstract_dask_cluster.py +6 -2
  78. cars/orchestrator/cluster/dask_jobqueue_utils.py +1 -1
  79. cars/orchestrator/cluster/log_wrapper.py +148 -21
  80. cars/orchestrator/cluster/mp_cluster/multiprocessing_cluster.py +11 -3
  81. cars/orchestrator/cluster/mp_cluster/multiprocessing_profiler.py +2 -2
  82. cars/orchestrator/cluster/pbs_dask_cluster.py +1 -1
  83. cars/orchestrator/cluster/sequential_cluster.py +5 -4
  84. cars/orchestrator/cluster/slurm_dask_cluster.py +1 -1
  85. cars/orchestrator/orchestrator.py +14 -3
  86. cars/orchestrator/registry/id_generator.py +1 -0
  87. cars/orchestrator/registry/saver_registry.py +2 -2
  88. cars/pipelines/conf_resolution/conf_final_resolution.json +5 -3
  89. cars/pipelines/default/default_pipeline.py +462 -1073
  90. cars/pipelines/parameters/advanced_parameters.py +74 -64
  91. cars/pipelines/parameters/advanced_parameters_constants.py +2 -5
  92. cars/pipelines/parameters/application_parameters.py +71 -0
  93. cars/pipelines/parameters/depth_map_inputs.py +0 -314
  94. cars/pipelines/parameters/dsm_inputs.py +40 -4
  95. cars/pipelines/parameters/output_parameters.py +2 -2
  96. cars/pipelines/parameters/sensor_inputs.py +30 -75
  97. cars/pipelines/parameters/sensor_inputs_constants.py +0 -2
  98. cars/pipelines/parameters/sensor_loaders/__init__.py +4 -3
  99. cars/pipelines/parameters/sensor_loaders/basic_classif_loader.py +106 -0
  100. cars/pipelines/parameters/sensor_loaders/{basic_sensor_loader.py → basic_image_loader.py} +16 -22
  101. cars/pipelines/parameters/sensor_loaders/pivot_classif_loader.py +121 -0
  102. cars/pipelines/parameters/sensor_loaders/{pivot_sensor_loader.py → pivot_image_loader.py} +10 -21
  103. cars/pipelines/parameters/sensor_loaders/sensor_loader.py +4 -6
  104. cars/pipelines/parameters/sensor_loaders/sensor_loader_template.py +1 -3
  105. cars/pipelines/pipeline_template.py +1 -3
  106. cars/pipelines/unit/unit_pipeline.py +527 -1016
  107. cars/starter.py +4 -3
  108. cars-1.0.0a4.dist-info/DELVEWHEEL +2 -0
  109. {cars-1.0.0a3.dist-info → cars-1.0.0a4.dist-info}/METADATA +135 -53
  110. {cars-1.0.0a3.dist-info → cars-1.0.0a4.dist-info}/RECORD +115 -131
  111. cars.libs/libgcc_s_seh-1-b2494fcbd4d80cf2c98fdd5261f6d850.dll +0 -0
  112. cars.libs/libstdc++-6-e9b0d12ae0e9555bbae55e8dfd08c3f7.dll +0 -0
  113. cars.libs/libwinpthread-1-7882d1b093714ccdfaf4e0789a817792.dll +0 -0
  114. cars/applications/dense_match_filling/cpp/__init__.py +0 -0
  115. cars/applications/dense_match_filling/cpp/dense_match_filling_cpp.cp313-win_amd64.dll.a +0 -0
  116. cars/applications/dense_match_filling/cpp/dense_match_filling_cpp.cp313-win_amd64.pyd +0 -0
  117. cars/applications/dense_match_filling/cpp/dense_match_filling_cpp.py +0 -72
  118. cars/applications/dense_match_filling/cpp/includes/dense_match_filling.hpp +0 -46
  119. cars/applications/dense_match_filling/cpp/meson.build +0 -9
  120. cars/applications/dense_match_filling/cpp/src/bindings.cpp +0 -11
  121. cars/applications/dense_match_filling/cpp/src/dense_match_filling.cpp +0 -142
  122. cars/applications/dense_match_filling/plane_app.py +0 -556
  123. cars/applications/hole_detection/__init__.py +0 -30
  124. cars/applications/hole_detection/abstract_hole_detection_app.py +0 -125
  125. cars/applications/hole_detection/cloud_to_bbox_app.py +0 -346
  126. cars/applications/hole_detection/hole_detection_algo.py +0 -144
  127. cars/applications/hole_detection/hole_detection_wrappers.py +0 -53
  128. cars/applications/point_cloud_denoising/__init__.py +0 -29
  129. cars/applications/point_cloud_denoising/abstract_pc_denoising_app.py +0 -273
  130. cars/applications/point_cloud_fusion/__init__.py +0 -30
  131. cars/applications/point_cloud_fusion/cloud_fusion_constants.py +0 -39
  132. cars/applications/sparse_matching/pandora_sparse_matching_app.py +0 -0
  133. cars/pipelines/parameters/depth_map_inputs_constants.py +0 -25
  134. cars-1.0.0a3.dist-info/DELVEWHEEL +0 -2
  135. cars.libs/libgcc_s_seh-1-ca70890bbc5723b6d0ea31e9c9cded2b.dll +0 -0
  136. cars.libs/libstdc++-6-00ee19f73d5122a1277c137b1c218401.dll +0 -0
  137. cars.libs/libwinpthread-1-f5042e8e3d21edce20c1bc99445f551b.dll +0 -0
  138. {cars-1.0.0a3.dist-info → cars-1.0.0a4.dist-info}/WHEEL +0 -0
  139. {cars-1.0.0a3.dist-info → cars-1.0.0a4.dist-info}/entry_points.txt +0 -0
@@ -56,7 +56,6 @@ class ExogenousFilling(DsmFilling, short_name="exogenous_filling"):
56
56
 
57
57
  # check conf
58
58
  self.used_method = self.used_config["method"]
59
- self.activated = self.used_config["activated"]
60
59
  self.classification = self.used_config["classification"]
61
60
  self.fill_with_geoid = self.used_config["fill_with_geoid"]
62
61
  self.interpolation_method = self.used_config["interpolation_method"]
@@ -73,7 +72,6 @@ class ExogenousFilling(DsmFilling, short_name="exogenous_filling"):
73
72
 
74
73
  # Overload conf
75
74
  overloaded_conf["method"] = conf.get("method", "bulldozer")
76
- overloaded_conf["activated"] = conf.get("activated", False)
77
75
  overloaded_conf["classification"] = conf.get("classification", "nodata")
78
76
  if isinstance(overloaded_conf["classification"], str):
79
77
  overloaded_conf["classification"] = [
@@ -85,10 +83,11 @@ class ExogenousFilling(DsmFilling, short_name="exogenous_filling"):
85
83
  )
86
84
 
87
85
  if overloaded_conf["interpolation_method"] not in ["bilinear", "cubic"]:
86
+ # pylint: disable=inconsistent-quotes
88
87
  raise RuntimeError(
89
- "Invalid interpolation method"
88
+ f"Invalid interpolation method"
90
89
  f"{overloaded_conf['interpolation_method']}, "
91
- "supported modes are bilinear and cubic."
90
+ f"supported modes are bilinear and cubic."
92
91
  )
93
92
 
94
93
  overloaded_conf["save_intermediate_data"] = conf.get(
@@ -97,7 +96,6 @@ class ExogenousFilling(DsmFilling, short_name="exogenous_filling"):
97
96
 
98
97
  rectification_schema = {
99
98
  "method": str,
100
- "activated": bool,
101
99
  "classification": Or(None, [str]),
102
100
  "fill_with_geoid": Or(None, [str]),
103
101
  "interpolation_method": str,
@@ -111,7 +109,7 @@ class ExogenousFilling(DsmFilling, short_name="exogenous_filling"):
111
109
  return overloaded_conf
112
110
 
113
111
  @cars_profile(name="Exogeneous filling")
114
- def run( # noqa C901
112
+ def run( # pylint: disable=too-many-positional-arguments # noqa C901
115
113
  self,
116
114
  dsm_file,
117
115
  classif_file,
@@ -133,9 +131,6 @@ class ExogenousFilling(DsmFilling, short_name="exogenous_filling"):
133
131
  - a Shapely Polygon
134
132
  """
135
133
 
136
- if not self.activated:
137
- return
138
-
139
134
  if self.classification is None:
140
135
  self.classification = ["nodata"]
141
136
 
@@ -104,7 +104,7 @@ class GridGeneration(ApplicationTemplate, metaclass=ABCMeta):
104
104
  """
105
105
 
106
106
  @abstractmethod
107
- def run(
107
+ def run( # pylint: disable=too-many-positional-arguments
108
108
  self,
109
109
  image_left,
110
110
  image_right,
@@ -31,7 +31,9 @@ from json_checker import And, Checker
31
31
 
32
32
  import cars.orchestrator.orchestrator as ocht
33
33
  from cars.applications import application_constants
34
- from cars.applications.grid_generation import grid_generation_algo
34
+ from cars.applications.grid_generation import (
35
+ grid_generation_algo,
36
+ )
35
37
  from cars.applications.grid_generation import (
36
38
  grid_generation_constants as grid_constants,
37
39
  )
@@ -119,7 +121,7 @@ class EpipolarGridGeneration(GridGeneration, short_name="epipolar"):
119
121
  return self.save_intermediate_data
120
122
 
121
123
  @cars_profile(name="Epi Grid Generation")
122
- def run(
124
+ def run( # pylint: disable=too-many-positional-arguments
123
125
  self,
124
126
  image_left,
125
127
  image_right,
@@ -37,7 +37,9 @@ from scipy.spatial import Delaunay # pylint: disable=E0611
37
37
 
38
38
  import cars.orchestrator.orchestrator as ocht
39
39
  from cars.applications import application_constants
40
- from cars.applications.grid_generation import grid_generation_algo
40
+ from cars.applications.grid_generation import (
41
+ grid_generation_algo,
42
+ )
41
43
  from cars.applications.grid_generation import (
42
44
  grid_generation_constants as grid_constants,
43
45
  )
@@ -165,6 +167,7 @@ def correct_grid(grid, grid_correction, pair_folder, save_grid=None):
165
167
  return corrected_grid_right
166
168
 
167
169
 
170
+ # pylint: disable=too-many-positional-arguments
168
171
  @cars_profile(name="Grid correction estimation")
169
172
  def estimate_right_grid_correction(
170
173
  matches,
@@ -43,6 +43,7 @@ from cars.applications.triangulation.triangulation_algo import (
43
43
  )
44
44
  from cars.core import constants as cst
45
45
  from cars.core import inputs, projection, tiling
46
+ from cars.orchestrator.cluster.log_wrapper import cars_profile
46
47
 
47
48
 
48
49
  def get_new_path(path):
@@ -106,7 +107,7 @@ def write_grid(grid, fname, origin, spacing):
106
107
  dst.write_band(2, grid[:, :, 1])
107
108
 
108
109
 
109
- def generate_epipolar_grids(
110
+ def generate_epipolar_grids( # pylint: disable=too-many-positional-arguments
110
111
  sensor1, sensor2, geomodel1, geomodel2, geometry_plugin, epipolar_step
111
112
  ):
112
113
  """
@@ -140,6 +141,8 @@ def generate_epipolar_grids(
140
141
  )
141
142
 
142
143
 
144
+ # pylint: disable=too-many-positional-arguments
145
+ @cars_profile(name="Compute epipolar grid min max", interval=0.5)
143
146
  def compute_epipolar_grid_min_max(
144
147
  geometry_plugin,
145
148
  grid,
@@ -239,6 +242,7 @@ def compute_epipolar_grid_min_max(
239
242
  grid1,
240
243
  grid2,
241
244
  matches_min,
245
+ interpolation_method="linear",
242
246
  )
243
247
  pc_max = triangulate_matches(
244
248
  geometry_plugin,
@@ -249,6 +253,7 @@ def compute_epipolar_grid_min_max(
249
253
  grid1,
250
254
  grid2,
251
255
  matches_max,
256
+ interpolation_method="linear",
252
257
  )
253
258
 
254
259
  # Convert to correct EPSG
@@ -278,7 +283,7 @@ def compute_epipolar_grid_min_max(
278
283
  return grid_min, grid_max
279
284
 
280
285
 
281
- def terrain_region_to_epipolar(
286
+ def terrain_region_to_epipolar( # pylint: disable=too-many-positional-arguments
282
287
  region,
283
288
  sensor1,
284
289
  sensor2,
@@ -97,7 +97,7 @@ class GroundTruthReprojection(ApplicationTemplate, metaclass=ABCMeta):
97
97
  super().__init__(conf=conf)
98
98
 
99
99
  @abstractmethod
100
- def run(
100
+ def run( # pylint: disable=too-many-positional-arguments
101
101
  self,
102
102
  sensor_left,
103
103
  sensor_right,
@@ -117,7 +117,7 @@ class DirectLocalization(
117
117
 
118
118
  return overloaded_conf
119
119
 
120
- def run( # noqa: C901
120
+ def run( # pylint: disable=too-many-positional-arguments # noqa: C901
121
121
  self,
122
122
  sensor_left,
123
123
  sensor_right,
@@ -495,7 +495,7 @@ class DirectLocalization(
495
495
  )
496
496
 
497
497
 
498
- def maps_generation_wrapper(
498
+ def maps_generation_wrapper( # pylint: disable=too-many-positional-arguments
499
499
  sensor_left,
500
500
  grid_left,
501
501
  geom_plugin,
@@ -32,7 +32,7 @@ from cars.core.projection import point_cloud_conversion
32
32
  from cars.pipelines.parameters import sensor_inputs_constants as sens_cst
33
33
 
34
34
 
35
- def get_ground_truth(
35
+ def get_ground_truth( # pylint: disable=too-many-positional-arguments
36
36
  geom_plugin,
37
37
  grid,
38
38
  sensor,
@@ -76,6 +76,7 @@ def get_ground_truth(
76
76
 
77
77
  (positions_col, positions_row) = np.meshgrid(cols, rows)
78
78
 
79
+ direct_loc = None
79
80
  if target == "epipolar":
80
81
 
81
82
  positions = np.stack([positions_col, positions_row], axis=2)
@@ -1,155 +0,0 @@
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 PointCloudFusion 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 ApplicationTemplate
30
-
31
-
32
- @Application.register("point_cloud_fusion")
33
- class PointCloudFusion(ApplicationTemplate, metaclass=ABCMeta):
34
- """
35
- PointCloudFusion
36
- """
37
-
38
- available_applications: Dict = {}
39
- default_application = "mapping_to_terrain_tiles"
40
-
41
- def __new__(cls, 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 conf: configuration for fusion
48
- :return: a application_to_use object
49
- """
50
-
51
- fusion_method = cls.default_application
52
- if bool(conf) is False or "method" not in conf:
53
- logging.info(
54
- "Fusion method not specified, "
55
- "default {} is used".format(fusion_method)
56
- )
57
- else:
58
- fusion_method = conf.get("method", cls.default_application)
59
-
60
- if fusion_method not in cls.available_applications:
61
- logging.error(
62
- "No Fusion application named {} registered".format(
63
- fusion_method
64
- )
65
- )
66
- raise KeyError(
67
- "No Fusion application named {} registered".format(
68
- fusion_method
69
- )
70
- )
71
-
72
- logging.info(
73
- "The PointCloudFusion({}) application will be used".format(
74
- fusion_method
75
- )
76
- )
77
-
78
- return super(PointCloudFusion, cls).__new__(
79
- cls.available_applications[fusion_method]
80
- )
81
-
82
- def __init_subclass__(cls, short_name, **kwargs): # pylint: disable=E0302
83
- super().__init_subclass__(**kwargs)
84
- cls.available_applications[short_name] = cls
85
-
86
- def __init__(self, conf=None):
87
- """
88
- Init function of PointCloudFusion
89
-
90
- :param conf: configuration
91
- :return: an application_to_use object
92
- """
93
-
94
- super().__init__(conf=conf)
95
-
96
- @abstractmethod
97
- def run(
98
- self,
99
- list_epipolar_point_clouds,
100
- bounds,
101
- epsg,
102
- source_pc_names=None,
103
- orchestrator=None,
104
- margins=0,
105
- optimal_terrain_tile_width=500,
106
- roi=None,
107
- ):
108
- """
109
- Run EpipolarCloudFusion application.
110
-
111
- Creates a CarsDataset corresponding to the merged point clouds,
112
- tiled with the terrain grid used during rasterization.
113
-
114
- :param list_epipolar_point_clouds: list with point clouds\
115
- Each CarsDataset contains:
116
-
117
- - N x M Delayed tiles. \
118
- Each tile will be a future xarray Dataset containing:
119
-
120
- - data : with keys : "x", "y", "z", "corr_msk" \
121
- optional: "texture", "msk", "z_inf", "z_sup"
122
- - attrs with keys: "margins", "epi_full_size", "epsg"
123
- - attributes containing: "disp_lower_bound", "disp_upper_bound" \
124
- "elevation_delta_lower_bound", "elevation_delta_upper_bound"
125
- :type list_epipolar_point_clouds: list(CarsDataset) filled with
126
- xr.Dataset
127
- :param bounds: terrain bounds
128
- :type bounds: list
129
- :param epsg: epsg to use
130
- :type epsg: str
131
- :param source_pc_names: source pc names
132
- :type source_pc_names: list[str]
133
- :param orchestrator: orchestrator used
134
- :type orchestrator: Orchestrator
135
- :param margins: margins needed for tiles, meter or degree
136
- :type margins: float
137
- :param optimal_terrain_tile_width: optimal terrain tile width
138
- :type optimal_terrain_tile_width: int
139
-
140
- :return: Merged point clouds
141
-
142
- CarsDataset contains:
143
-
144
- - Z x W Delayed tiles\
145
- Each tile will be a future pandas DataFrame containing:
146
-
147
- - data : with keys : "x", "y", "z", "corr_msk" \
148
- optional: "clr", "msk", "data_valid","coord_epi_geom_i",\
149
- "coord_epi_geom_j","idx_im_epi", "z_inf", "z_sup"
150
- - attrs with keys: "epsg"
151
- - attributes containing: "bounds", "epsg"
152
-
153
- :rtype: CarsDataset filled with pandas.DataFrame
154
-
155
- """