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.

Files changed (225) hide show
  1. cars/__init__.py +86 -0
  2. cars/applications/__init__.py +40 -0
  3. cars/applications/application.py +117 -0
  4. cars/applications/application_constants.py +29 -0
  5. cars/applications/application_template.py +146 -0
  6. cars/applications/auxiliary_filling/__init__.py +29 -0
  7. cars/applications/auxiliary_filling/abstract_auxiliary_filling_app.py +105 -0
  8. cars/applications/auxiliary_filling/auxiliary_filling_algo.py +475 -0
  9. cars/applications/auxiliary_filling/auxiliary_filling_from_sensors_app.py +632 -0
  10. cars/applications/auxiliary_filling/auxiliary_filling_wrappers.py +90 -0
  11. cars/applications/dem_generation/__init__.py +30 -0
  12. cars/applications/dem_generation/abstract_dem_generation_app.py +116 -0
  13. cars/applications/dem_generation/bulldozer_config/base_config.yaml +42 -0
  14. cars/applications/dem_generation/bulldozer_dem_app.py +641 -0
  15. cars/applications/dem_generation/bulldozer_memory.py +55 -0
  16. cars/applications/dem_generation/dem_generation_algo.py +107 -0
  17. cars/applications/dem_generation/dem_generation_constants.py +32 -0
  18. cars/applications/dem_generation/dem_generation_wrappers.py +323 -0
  19. cars/applications/dense_match_filling/__init__.py +30 -0
  20. cars/applications/dense_match_filling/abstract_dense_match_filling_app.py +242 -0
  21. cars/applications/dense_match_filling/fill_disp_algo.py +113 -0
  22. cars/applications/dense_match_filling/fill_disp_constants.py +39 -0
  23. cars/applications/dense_match_filling/fill_disp_wrappers.py +83 -0
  24. cars/applications/dense_match_filling/zero_padding_app.py +302 -0
  25. cars/applications/dense_matching/__init__.py +30 -0
  26. cars/applications/dense_matching/abstract_dense_matching_app.py +261 -0
  27. cars/applications/dense_matching/census_mccnn_sgm_app.py +1461 -0
  28. cars/applications/dense_matching/cpp/__init__.py +0 -0
  29. cars/applications/dense_matching/cpp/dense_matching_cpp.cp312-win_amd64.dll.a +0 -0
  30. cars/applications/dense_matching/cpp/dense_matching_cpp.cp312-win_amd64.pyd +0 -0
  31. cars/applications/dense_matching/cpp/dense_matching_cpp.py +94 -0
  32. cars/applications/dense_matching/cpp/includes/dense_matching.hpp +58 -0
  33. cars/applications/dense_matching/cpp/meson.build +9 -0
  34. cars/applications/dense_matching/cpp/src/bindings.cpp +13 -0
  35. cars/applications/dense_matching/cpp/src/dense_matching.cpp +207 -0
  36. cars/applications/dense_matching/dense_matching_algo.py +401 -0
  37. cars/applications/dense_matching/dense_matching_constants.py +89 -0
  38. cars/applications/dense_matching/dense_matching_wrappers.py +951 -0
  39. cars/applications/dense_matching/disparity_grid_algo.py +597 -0
  40. cars/applications/dense_matching/loaders/__init__.py +23 -0
  41. cars/applications/dense_matching/loaders/config_census_sgm_default.json +31 -0
  42. cars/applications/dense_matching/loaders/config_census_sgm_homogeneous.json +30 -0
  43. cars/applications/dense_matching/loaders/config_census_sgm_mountain_and_vegetation.json +30 -0
  44. cars/applications/dense_matching/loaders/config_census_sgm_shadow.json +30 -0
  45. cars/applications/dense_matching/loaders/config_census_sgm_sparse.json +36 -0
  46. cars/applications/dense_matching/loaders/config_census_sgm_urban.json +30 -0
  47. cars/applications/dense_matching/loaders/config_mapping.json +13 -0
  48. cars/applications/dense_matching/loaders/config_mccnn.json +28 -0
  49. cars/applications/dense_matching/loaders/global_land_cover_map.tif +0 -0
  50. cars/applications/dense_matching/loaders/pandora_loader.py +593 -0
  51. cars/applications/dsm_filling/__init__.py +32 -0
  52. cars/applications/dsm_filling/abstract_dsm_filling_app.py +101 -0
  53. cars/applications/dsm_filling/border_interpolation_app.py +278 -0
  54. cars/applications/dsm_filling/bulldozer_config/base_config.yaml +44 -0
  55. cars/applications/dsm_filling/bulldozer_filling_app.py +288 -0
  56. cars/applications/dsm_filling/exogenous_filling_app.py +341 -0
  57. cars/applications/dsm_merging/__init__.py +28 -0
  58. cars/applications/dsm_merging/abstract_dsm_merging_app.py +101 -0
  59. cars/applications/dsm_merging/weighted_fusion_app.py +639 -0
  60. cars/applications/grid_correction/__init__.py +30 -0
  61. cars/applications/grid_correction/abstract_grid_correction_app.py +103 -0
  62. cars/applications/grid_correction/grid_correction_app.py +557 -0
  63. cars/applications/grid_generation/__init__.py +30 -0
  64. cars/applications/grid_generation/abstract_grid_generation_app.py +142 -0
  65. cars/applications/grid_generation/epipolar_grid_generation_app.py +327 -0
  66. cars/applications/grid_generation/grid_generation_algo.py +388 -0
  67. cars/applications/grid_generation/grid_generation_constants.py +46 -0
  68. cars/applications/grid_generation/transform_grid.py +88 -0
  69. cars/applications/ground_truth_reprojection/__init__.py +30 -0
  70. cars/applications/ground_truth_reprojection/abstract_ground_truth_reprojection_app.py +137 -0
  71. cars/applications/ground_truth_reprojection/direct_localization_app.py +629 -0
  72. cars/applications/ground_truth_reprojection/ground_truth_reprojection_algo.py +275 -0
  73. cars/applications/point_cloud_outlier_removal/__init__.py +30 -0
  74. cars/applications/point_cloud_outlier_removal/abstract_outlier_removal_app.py +385 -0
  75. cars/applications/point_cloud_outlier_removal/outlier_removal_algo.py +392 -0
  76. cars/applications/point_cloud_outlier_removal/outlier_removal_constants.py +43 -0
  77. cars/applications/point_cloud_outlier_removal/small_components_app.py +522 -0
  78. cars/applications/point_cloud_outlier_removal/statistical_app.py +528 -0
  79. cars/applications/rasterization/__init__.py +30 -0
  80. cars/applications/rasterization/abstract_pc_rasterization_app.py +183 -0
  81. cars/applications/rasterization/rasterization_algo.py +534 -0
  82. cars/applications/rasterization/rasterization_constants.py +38 -0
  83. cars/applications/rasterization/rasterization_wrappers.py +639 -0
  84. cars/applications/rasterization/simple_gaussian_app.py +1152 -0
  85. cars/applications/resampling/__init__.py +28 -0
  86. cars/applications/resampling/abstract_resampling_app.py +187 -0
  87. cars/applications/resampling/bicubic_resampling_app.py +760 -0
  88. cars/applications/resampling/resampling_algo.py +590 -0
  89. cars/applications/resampling/resampling_constants.py +36 -0
  90. cars/applications/resampling/resampling_wrappers.py +309 -0
  91. cars/applications/sensors_subsampling/__init__.py +32 -0
  92. cars/applications/sensors_subsampling/abstract_subsampling_app.py +109 -0
  93. cars/applications/sensors_subsampling/rasterio_subsampling_app.py +420 -0
  94. cars/applications/sensors_subsampling/subsampling_algo.py +108 -0
  95. cars/applications/sparse_matching/__init__.py +30 -0
  96. cars/applications/sparse_matching/abstract_sparse_matching_app.py +599 -0
  97. cars/applications/sparse_matching/sift_app.py +724 -0
  98. cars/applications/sparse_matching/sparse_matching_algo.py +360 -0
  99. cars/applications/sparse_matching/sparse_matching_constants.py +66 -0
  100. cars/applications/sparse_matching/sparse_matching_wrappers.py +282 -0
  101. cars/applications/triangulation/__init__.py +32 -0
  102. cars/applications/triangulation/abstract_triangulation_app.py +227 -0
  103. cars/applications/triangulation/line_of_sight_intersection_app.py +1243 -0
  104. cars/applications/triangulation/pc_transform.py +552 -0
  105. cars/applications/triangulation/triangulation_algo.py +371 -0
  106. cars/applications/triangulation/triangulation_constants.py +38 -0
  107. cars/applications/triangulation/triangulation_wrappers.py +259 -0
  108. cars/bundleadjustment.py +750 -0
  109. cars/cars.py +179 -0
  110. cars/conf/__init__.py +23 -0
  111. cars/conf/geoid/egm96.grd +0 -0
  112. cars/conf/geoid/egm96.grd.hdr +15 -0
  113. cars/conf/input_parameters.py +156 -0
  114. cars/conf/mask_cst.py +35 -0
  115. cars/core/__init__.py +23 -0
  116. cars/core/cars_logging.py +402 -0
  117. cars/core/constants.py +191 -0
  118. cars/core/constants_disparity.py +50 -0
  119. cars/core/datasets.py +140 -0
  120. cars/core/geometry/__init__.py +27 -0
  121. cars/core/geometry/abstract_geometry.py +1119 -0
  122. cars/core/geometry/shareloc_geometry.py +598 -0
  123. cars/core/inputs.py +568 -0
  124. cars/core/outputs.py +176 -0
  125. cars/core/preprocessing.py +722 -0
  126. cars/core/projection.py +843 -0
  127. cars/core/roi_tools.py +215 -0
  128. cars/core/tiling.py +774 -0
  129. cars/core/utils.py +164 -0
  130. cars/data_structures/__init__.py +23 -0
  131. cars/data_structures/cars_dataset.py +1544 -0
  132. cars/data_structures/cars_dict.py +74 -0
  133. cars/data_structures/corresponding_tiles_tools.py +186 -0
  134. cars/data_structures/dataframe_converter.py +185 -0
  135. cars/data_structures/format_transformation.py +297 -0
  136. cars/devibrate.py +689 -0
  137. cars/extractroi.py +264 -0
  138. cars/orchestrator/__init__.py +23 -0
  139. cars/orchestrator/achievement_tracker.py +125 -0
  140. cars/orchestrator/cluster/__init__.py +37 -0
  141. cars/orchestrator/cluster/abstract_cluster.py +250 -0
  142. cars/orchestrator/cluster/abstract_dask_cluster.py +381 -0
  143. cars/orchestrator/cluster/dask_cluster_tools.py +103 -0
  144. cars/orchestrator/cluster/dask_config/README.md +94 -0
  145. cars/orchestrator/cluster/dask_config/dask.yaml +21 -0
  146. cars/orchestrator/cluster/dask_config/distributed.yaml +70 -0
  147. cars/orchestrator/cluster/dask_config/jobqueue.yaml +26 -0
  148. cars/orchestrator/cluster/dask_config/reference_confs/dask-schema.yaml +137 -0
  149. cars/orchestrator/cluster/dask_config/reference_confs/dask.yaml +26 -0
  150. cars/orchestrator/cluster/dask_config/reference_confs/distributed-schema.yaml +1009 -0
  151. cars/orchestrator/cluster/dask_config/reference_confs/distributed.yaml +273 -0
  152. cars/orchestrator/cluster/dask_config/reference_confs/jobqueue.yaml +212 -0
  153. cars/orchestrator/cluster/dask_jobqueue_utils.py +204 -0
  154. cars/orchestrator/cluster/local_dask_cluster.py +116 -0
  155. cars/orchestrator/cluster/log_wrapper.py +728 -0
  156. cars/orchestrator/cluster/mp_cluster/__init__.py +27 -0
  157. cars/orchestrator/cluster/mp_cluster/mp_factorizer.py +212 -0
  158. cars/orchestrator/cluster/mp_cluster/mp_objects.py +535 -0
  159. cars/orchestrator/cluster/mp_cluster/mp_tools.py +93 -0
  160. cars/orchestrator/cluster/mp_cluster/mp_wrapper.py +505 -0
  161. cars/orchestrator/cluster/mp_cluster/multiprocessing_cluster.py +986 -0
  162. cars/orchestrator/cluster/mp_cluster/multiprocessing_profiler.py +399 -0
  163. cars/orchestrator/cluster/pbs_dask_cluster.py +207 -0
  164. cars/orchestrator/cluster/sequential_cluster.py +139 -0
  165. cars/orchestrator/cluster/slurm_dask_cluster.py +234 -0
  166. cars/orchestrator/memory_tools.py +47 -0
  167. cars/orchestrator/orchestrator.py +755 -0
  168. cars/orchestrator/orchestrator_constants.py +29 -0
  169. cars/orchestrator/registry/__init__.py +23 -0
  170. cars/orchestrator/registry/abstract_registry.py +143 -0
  171. cars/orchestrator/registry/compute_registry.py +106 -0
  172. cars/orchestrator/registry/id_generator.py +116 -0
  173. cars/orchestrator/registry/replacer_registry.py +213 -0
  174. cars/orchestrator/registry/saver_registry.py +363 -0
  175. cars/orchestrator/registry/unseen_registry.py +118 -0
  176. cars/orchestrator/tiles_profiler.py +279 -0
  177. cars/pipelines/__init__.py +26 -0
  178. cars/pipelines/conf_resolution/conf_final_resolution.yaml +5 -0
  179. cars/pipelines/conf_resolution/conf_first_resolution.yaml +4 -0
  180. cars/pipelines/conf_resolution/conf_intermediate_resolution.yaml +2 -0
  181. cars/pipelines/default/__init__.py +26 -0
  182. cars/pipelines/default/default_pipeline.py +1088 -0
  183. cars/pipelines/filling/__init__.py +26 -0
  184. cars/pipelines/filling/filling.py +981 -0
  185. cars/pipelines/formatting/__init__.py +26 -0
  186. cars/pipelines/formatting/formatting.py +186 -0
  187. cars/pipelines/merging/__init__.py +26 -0
  188. cars/pipelines/merging/merging.py +439 -0
  189. cars/pipelines/parameters/__init__.py +0 -0
  190. cars/pipelines/parameters/advanced_parameters.py +256 -0
  191. cars/pipelines/parameters/advanced_parameters_constants.py +68 -0
  192. cars/pipelines/parameters/application_parameters.py +72 -0
  193. cars/pipelines/parameters/depth_map_inputs.py +0 -0
  194. cars/pipelines/parameters/dsm_inputs.py +349 -0
  195. cars/pipelines/parameters/dsm_inputs_constants.py +25 -0
  196. cars/pipelines/parameters/output_constants.py +52 -0
  197. cars/pipelines/parameters/output_parameters.py +438 -0
  198. cars/pipelines/parameters/sensor_inputs.py +859 -0
  199. cars/pipelines/parameters/sensor_inputs_constants.py +51 -0
  200. cars/pipelines/parameters/sensor_loaders/__init__.py +29 -0
  201. cars/pipelines/parameters/sensor_loaders/basic_classif_loader.py +86 -0
  202. cars/pipelines/parameters/sensor_loaders/basic_image_loader.py +98 -0
  203. cars/pipelines/parameters/sensor_loaders/pivot_classif_loader.py +90 -0
  204. cars/pipelines/parameters/sensor_loaders/pivot_image_loader.py +105 -0
  205. cars/pipelines/parameters/sensor_loaders/sensor_loader.py +93 -0
  206. cars/pipelines/parameters/sensor_loaders/sensor_loader_template.py +71 -0
  207. cars/pipelines/parameters/sensor_loaders/slurp_classif_loader.py +86 -0
  208. cars/pipelines/pipeline.py +119 -0
  209. cars/pipelines/pipeline_constants.py +38 -0
  210. cars/pipelines/pipeline_template.py +135 -0
  211. cars/pipelines/subsampling/__init__.py +26 -0
  212. cars/pipelines/subsampling/subsampling.py +358 -0
  213. cars/pipelines/surface_modeling/__init__.py +26 -0
  214. cars/pipelines/surface_modeling/surface_modeling.py +2098 -0
  215. cars/pipelines/tie_points/__init__.py +26 -0
  216. cars/pipelines/tie_points/tie_points.py +536 -0
  217. cars/starter.py +167 -0
  218. cars-1.0.0rc2.dist-info/DELVEWHEEL +2 -0
  219. cars-1.0.0rc2.dist-info/METADATA +289 -0
  220. cars-1.0.0rc2.dist-info/RECORD +225 -0
  221. cars-1.0.0rc2.dist-info/WHEEL +4 -0
  222. cars-1.0.0rc2.dist-info/entry_points.txt +8 -0
  223. cars.libs/libgcc_s_seh-1-b2494fcbd4d80cf2c98fdd5261f6d850.dll +0 -0
  224. cars.libs/libstdc++-6-e9b0d12ae0e9555bbae55e8dfd08c3f7.dll +0 -0
  225. cars.libs/libwinpthread-1-7882d1b093714ccdfaf4e0789a817792.dll +0 -0
@@ -0,0 +1,279 @@
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 tile profiler class
23
+ """
24
+
25
+ import argparse
26
+ import logging
27
+ import os
28
+ import pickle
29
+
30
+ import numpy as np
31
+ import xarray as xr
32
+
33
+ COMPUTED = [0, 255, 0]
34
+ NONE_TILE = [255, 0, 0]
35
+ UNKNOWN = [0, 0, 255]
36
+
37
+ COLOR = "color"
38
+
39
+
40
+ class TileProfiler: # pylint: disable=too-few-public-methods
41
+ """
42
+ TileProfiler
43
+ """
44
+
45
+ def __init__(self, folder, saver_registry, replacer_registry):
46
+ """
47
+ Init function of TileProfiler
48
+ """
49
+
50
+ self.folder = folder
51
+ self.saver_registry = saver_registry
52
+ self.replacer_registry = replacer_registry
53
+
54
+ self.cars_ds_ids = []
55
+ self.monitored_cars_ds = []
56
+ self.file_names = []
57
+ self.arrays = []
58
+
59
+ def add_tile(self, tile_object):
60
+ """
61
+ Add tile to profiling
62
+ """
63
+
64
+ try:
65
+ self._add_tile(tile_object)
66
+ except Exception:
67
+ logging.debug("Error in TileProfiler.add_tile ")
68
+
69
+ def _add_tile(self, tile_object):
70
+ """
71
+ Add tile to profiling
72
+ """
73
+
74
+ # Get Cars Dastaset id
75
+ cars_ds_id = self.saver_registry.get_future_cars_dataset_id(tile_object)
76
+
77
+ if cars_ds_id not in self.cars_ds_ids:
78
+ self.cars_ds_ids.append(cars_ds_id)
79
+
80
+ # Get cars_ds
81
+ cars_ds = self.saver_registry.get_cars_ds(tile_object)
82
+ if cars_ds is None:
83
+ cars_ds = self.replacer_registry.get_cars_ds(tile_object)
84
+ if cars_ds is None:
85
+ raise RuntimeError("CARS Dataset is None")
86
+ self.monitored_cars_ds.append(cars_ds)
87
+
88
+ # Create array
89
+ new_arr = np.zeros((*cars_ds.shape, 3), dtype=int)
90
+ # Update None tiles
91
+ for tile_row in range(cars_ds.shape[0]):
92
+ for tile_col in range(cars_ds.shape[1]):
93
+ if cars_ds[tile_row, tile_col] is None:
94
+ new_arr[tile_row, tile_col, :] = NONE_TILE
95
+ else:
96
+ new_arr[tile_row, tile_col, :] = UNKNOWN
97
+
98
+ # Create Dataset
99
+ tiling_grid = cars_ds.tiling_grid
100
+ rows = (tiling_grid[:, 0, 0] + tiling_grid[:, 0, 1]) / 2
101
+ cols = (tiling_grid[0, :, 2] + tiling_grid[0, :, 3]) / 2
102
+
103
+ progress = ["None", "Computed", "In progress"]
104
+ dataset = xr.Dataset(
105
+ data_vars={
106
+ "color": (["row", "col", "progress"], new_arr),
107
+ },
108
+ coords={"progress": progress, "row": rows, "col": cols},
109
+ attrs={
110
+ "x0": tiling_grid[0, 0, 0],
111
+ "y0": tiling_grid[0, 0, 2],
112
+ "dx": tiling_grid[0, 0, 3] - tiling_grid[0, 0, 2],
113
+ "dy": tiling_grid[0, 0, 1] - tiling_grid[0, 0, 0],
114
+ },
115
+ )
116
+ self.arrays.append(dataset)
117
+
118
+ # Create file name
119
+ application_name = cars_ds.name
120
+ file_name = None
121
+ if os.path.exists(self.folder):
122
+ file_name = os.path.join(self.folder, application_name)
123
+
124
+ self.file_names.append(file_name)
125
+
126
+ # Get index
127
+ index = self.cars_ds_ids.index(cars_ds_id)
128
+
129
+ # Get position
130
+ row, col = self.saver_registry.get_future_cars_dataset_position(
131
+ tile_object
132
+ )
133
+
134
+ # Fill corresponding array
135
+ self.arrays[index][COLOR].values[row, col, :] = COMPUTED
136
+
137
+ # Save
138
+ save_pickle(self.arrays[index], self.file_names[index])
139
+
140
+
141
+ def save_pickle(dataset, file_name):
142
+ """
143
+ Save pickle
144
+ """
145
+
146
+ try:
147
+ if file_name is not None:
148
+
149
+ with open(file_name, "wb") as desc: # open a text file
150
+ pickle.dump(dataset, desc)
151
+ except FileNotFoundError:
152
+ logging.error("{} could not be opened".format(file_name))
153
+
154
+
155
+ def load_pickle(file_name):
156
+ """
157
+ Load pickle
158
+ """
159
+ with open(file_name, "rb") as desc:
160
+ dataset = pickle.load(desc)
161
+
162
+ return dataset
163
+
164
+
165
+ def main():
166
+ """
167
+ Main
168
+ """
169
+
170
+ parser = argparse.ArgumentParser(
171
+ "cars-dashboard",
172
+ description="Helper to monitor tiles progress",
173
+ )
174
+ parser.add_argument(
175
+ "-out",
176
+ type=str,
177
+ help="CARS output folder to monitor",
178
+ required=True,
179
+ )
180
+
181
+ args = parser.parse_args()
182
+ cars_output = os.path.abspath(args.out)
183
+
184
+ try:
185
+ import plotly.graph_objects as go # pylint: disable=import-error,C0415
186
+ from dash import ( # pylint: disable=import-error, C0415
187
+ Dash,
188
+ Input,
189
+ Output,
190
+ callback,
191
+ dcc,
192
+ html,
193
+ )
194
+
195
+ except ModuleNotFoundError as exc:
196
+ message = "dash / plotly not found, install cars with dev packages"
197
+ logging.error(message)
198
+ raise RuntimeError(message) from exc
199
+
200
+ app = Dash(__name__, title="CARS tiles progress")
201
+
202
+ app.layout = html.Div(
203
+ children=[
204
+ html.H3(
205
+ "\n CARS output to monitor: {}".format(cars_output),
206
+ style={
207
+ "marginTop": "20px",
208
+ "marginBottom": "20px",
209
+ "textAlign": "center",
210
+ "color": "#01172E",
211
+ },
212
+ ),
213
+ html.H1(
214
+ "\n \n OnGoing Tiles \n \n",
215
+ style={
216
+ "marginTop": "20px",
217
+ "marginBottom": "20px",
218
+ "textAlign": "center",
219
+ "color": "#01172E",
220
+ },
221
+ ),
222
+ html.Div(
223
+ id="tiles-output",
224
+ style={
225
+ "marginTop": "20px",
226
+ "marginBottom": "20px",
227
+ "textAlign": "center",
228
+ "color": "#01172E",
229
+ },
230
+ ),
231
+ dcc.Interval(
232
+ id="interval-component",
233
+ interval=2 * 1000, # in milliseconds
234
+ n_intervals=0,
235
+ ),
236
+ ]
237
+ )
238
+
239
+ @callback(
240
+ Output("tiles-output", "children"),
241
+ Input("interval-component", "n_intervals"),
242
+ )
243
+ def update_figures(__):
244
+ """
245
+ Update figures
246
+ """
247
+
248
+ tiles_folder = os.path.join(cars_output, "dump_dir", "tile_processing")
249
+ if not os.path.exists(tiles_folder):
250
+ return None
251
+ seen_paths = []
252
+ tiles = []
253
+
254
+ for name in os.listdir(tiles_folder):
255
+ current_path = os.path.join(tiles_folder, name)
256
+ if current_path not in seen_paths:
257
+
258
+ dataset = load_pickle(current_path)
259
+
260
+ tiles.append(html.H3(name))
261
+ fig = go.Figure(
262
+ data=go.Image(
263
+ x0=dataset.attrs["x0"] + dataset.attrs["dx"] / 2,
264
+ y0=dataset.attrs["y0"] + dataset.attrs["dy"] / 2,
265
+ dx=dataset.attrs["dx"],
266
+ dy=dataset.attrs["dy"],
267
+ z=dataset["color"].values,
268
+ )
269
+ )
270
+
271
+ tiles.append(dcc.Graph(figure=fig))
272
+
273
+ return html.Div(tiles)
274
+
275
+ app.run(debug=True)
276
+
277
+
278
+ if __name__ == "__main__":
279
+ main()
@@ -0,0 +1,26 @@
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 pipelines module init file
23
+ """
24
+
25
+ # Imports needed in order to register pipeline for Pipeline factory
26
+ from . import default # noqa: F401
@@ -0,0 +1,5 @@
1
+ ---
2
+ applications:
3
+ dense_matching:
4
+ confidence_filtering:
5
+ activated: false
@@ -0,0 +1,4 @@
1
+ ---
2
+ applications:
3
+ sparse_matching:
4
+ decimation_factor: 100
@@ -0,0 +1,26 @@
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 default pipeline module init file
23
+ """
24
+
25
+ # Cars imports
26
+ from cars.pipelines.default import default_pipeline # noqa: F401