Skip to content

Commit 4b478de

Browse files
committed
refactor(measure_tile_sizes): update MeasureTileSizes struct to use optional arguments for level and scale
1 parent f768f13 commit 4b478de

1 file changed

Lines changed: 12 additions & 16 deletions

File tree

versatiles/src/tools/dev_tools/measure_tile_sizes.rs

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,22 @@ pub struct MeasureTileSizes {
2424
output: PathBuf,
2525

2626
/// Zoom level to analyze
27-
#[arg(default_value = "14")]
28-
level: u8,
27+
#[arg(long)]
28+
level: Option<u8>,
2929

3030
/// Scale down factor
31-
#[arg(default_value = "4")]
32-
scale: usize,
31+
#[arg(long)]
32+
scale: Option<usize>,
3333
}
3434

3535
pub async fn run(args: &MeasureTileSizes, runtime: &TilesRuntime) -> Result<()> {
3636
let input = &args.input;
37+
let reader = runtime.get_reader_from_str(input).await?;
38+
let metadata = reader.metadata();
39+
3740
let output_file = &args.output;
38-
let level = args.level;
39-
let scale = args.scale;
41+
let level = args.level.or(metadata.bbox_pyramid.get_level_max()).unwrap_or(10);
42+
let scale = args.scale.unwrap_or(1);
4043
let width_original = 1 << level;
4144
let width_scaled = width_original / scale;
4245

@@ -50,18 +53,11 @@ pub async fn run(args: &MeasureTileSizes, runtime: &TilesRuntime) -> Result<()>
5053
output_file.extension().unwrap_or_default()
5154
);
5255

53-
let reader = runtime.get_reader_from_str(input).await?;
5456
let bbox = TileBBox::new_full(level)?;
55-
let stream = reader.get_tile_stream(bbox).await?;
5657

5758
let progress = runtime.create_progress("Scanning tile sizes", (width_original * width_original) as u64);
58-
let compression = reader.metadata().tile_compression;
59-
let vec = stream
60-
.map_parallel_try(move |_coord, mut tile| Ok(tile.as_blob(compression)?.len()))
61-
.unwrap_results()
62-
.inspect(|_, _| progress.inc(1))
63-
.to_vec()
64-
.await;
59+
let stream = reader.get_tile_size_stream(bbox).await?;
60+
let vec = stream.inspect(|_, _| progress.inc(1)).to_vec().await;
6561
progress.finish();
6662

6763
log::debug!("Saving image");
@@ -72,7 +68,7 @@ pub async fn run(args: &MeasureTileSizes, runtime: &TilesRuntime) -> Result<()>
7268
if x >= width_scaled || y >= width_scaled {
7369
continue;
7470
}
75-
result[y * width_scaled + x] += *size;
71+
result[y * width_scaled + x] += u64::from(*size);
7672
}
7773

7874
let n = (scale * scale) as f64;

0 commit comments

Comments
 (0)