@@ -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
3535pub 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