Do not cap GSD for 2.5D mesh DEM

pull/1610/head
Piero Toffanin 2023-02-20 15:28:35 -05:00
rodzic 4f660ffd44
commit 5259fd7007
2 zmienionych plików z 8 dodań i 8 usunięć

Wyświetl plik

@ -376,6 +376,6 @@ def window_filter_2d(arr, nodata, window, kernel_size, filter):
def get_dem_radius_steps(stats_file, steps, resolution, multiplier = 1.0):
radius_steps = [point_cloud.get_spacing(stats_file, resolution) * multiplier]
for _ in range(steps - 1):
radius_steps.append(radius_steps[-1] * math.sqrt(2)) # sqrt(2) is arbitrary, maybe there's a better value?
radius_steps.append(radius_steps[-1] * math.sqrt(2))
return radius_steps

Wyświetl plik

@ -41,18 +41,18 @@ class ODMeshingStage(types.ODM_Stage):
if not io.file_exists(tree.odm_25dmesh) or self.rerun():
log.ODM_INFO('Writing ODM 2.5D Mesh file in: %s' % tree.odm_25dmesh)
dsm_resolution = gsd.cap_resolution(args.orthophoto_resolution, tree.opensfm_reconstruction,
ignore_gsd=args.ignore_gsd,
ignore_resolution=(not reconstruction.is_georeferenced()) and args.ignore_gsd,
has_gcp=reconstruction.has_gcp()) / 100.0
multiplier = math.pi / 2.0
radius_steps = commands.get_dem_radius_steps(tree.filtered_point_cloud_stats, 3, args.orthophoto_resolution, multiplier=multiplier)
dsm_resolution = radius_steps[0] / multiplier
log.ODM_INFO('ODM 2.5D DSM resolution: %s' % dsm_resolution)
if args.fast_orthophoto:
dsm_resolution *= 8.0
log.ODM_INFO('ODM 2.5D DSM resolution: %s' % dsm_resolution)
mesh.create_25dmesh(tree.filtered_point_cloud, tree.odm_25dmesh,
commands.get_dem_radius_steps(tree.filtered_point_cloud_stats, 3, dsm_resolution, multiplier=math.sqrt(2)),
radius_steps,
dsm_resolution=dsm_resolution,
depth=self.params.get('oct_tree'),
maxVertexCount=self.params.get('max_vertex'),