Diviser le gradient par la résolution hors chemin partagé (pentes fausses)

This commit is contained in:
Antoine Jacquin
2026-09-18 21:06:25 +02:00
parent 476f246fe7
commit c8e3b6abd9

View File

@ -470,7 +470,8 @@ def generate_hillshade(dem_file, basename, vis_dir, resolution, shared=None):
else: else:
dem_np, transform, crs = _read_dem(dem_file) dem_np, transform, crs = _read_dem(dem_file)
dem = to_gpu(dem_np) dem = to_gpu(dem_np)
dy, dx = xp.gradient(dem) # Espacement = résolution (m/px) : sans lui la pente est fausse
dy, dx = xp.gradient(dem, float(resolution) if resolution else 1.0)
slope = xp.arctan(xp.sqrt(dx**2 + dy**2)) slope = xp.arctan(xp.sqrt(dx**2 + dy**2))
aspect = xp.arctan2(dy, dx) aspect = xp.arctan2(dy, dx)
sin_slope = xp.sin(slope) sin_slope = xp.sin(slope)
@ -532,7 +533,8 @@ def generate_slope(dem_file, basename, vis_dir, resolution, shared=None):
else: else:
dem_np, transform, crs = _read_dem(dem_file) dem_np, transform, crs = _read_dem(dem_file)
dem = to_gpu(dem_np) dem = to_gpu(dem_np)
dy, dx = xp.gradient(dem) # Espacement = résolution (m/px) : sans lui la pente est fausse
dy, dx = xp.gradient(dem, float(resolution) if resolution else 1.0)
slope = xp.arctan(xp.sqrt(dx**2 + dy**2)) * 180 / xp.pi slope = xp.arctan(xp.sqrt(dx**2 + dy**2)) * 180 / xp.pi
nan_mask = np.isnan(dem_np) nan_mask = np.isnan(dem_np)
_save_tif(output, to_cpu(slope) if _gpu_mod.HAS_GPU else slope, transform, crs, nan_mask=nan_mask) _save_tif(output, to_cpu(slope) if _gpu_mod.HAS_GPU else slope, transform, crs, nan_mask=nan_mask)
@ -567,7 +569,8 @@ def generate_aspect(dem_file, basename, vis_dir, resolution, shared=None):
else: else:
dem_np, transform, crs = _read_dem(dem_file) dem_np, transform, crs = _read_dem(dem_file)
dem = to_gpu(dem_np) dem = to_gpu(dem_np)
dy, dx = xp.gradient(dem) # Espacement = résolution (m/px) : sans lui la pente est fausse
dy, dx = xp.gradient(dem, float(resolution) if resolution else 1.0)
nan_mask = np.isnan(dem_np) nan_mask = np.isnan(dem_np)
aspect = xp.arctan2(dy, dx) * 180 / xp.pi aspect = xp.arctan2(dy, dx) * 180 / xp.pi
aspect = xp.mod(aspect, 360) aspect = xp.mod(aspect, 360)