@@ -65,68 +65,60 @@ const useGetSingleBandInfo = (
6565 const image = await tiff . getImage ( ) ;
6666 const numberOfBands = image . getSamplesPerPixel ( ) ;
6767
68- let min = layer . parameters ?. symbologyState ?. min ;
69- let max = layer . parameters ?. symbologyState ?. max ;
70-
71- if ( min === undefined || max === undefined ) {
72- // 1. Try metadata first
73- let dataMin = image . fileDirectory . STATISTICS_MINIMUM ;
74- let dataMax = image . fileDirectory . STATISTICS_MAXIMUM ;
75-
76- if ( dataMin === undefined || dataMax === undefined ) {
77- // 2. Try smallest overview if available
78- const overviewCount = await tiff . getImageCount ( ) ;
79- const targetImage =
80- overviewCount > 1 ? await tiff . getImage ( overviewCount - 1 ) : image ;
81-
82- // 3. Read downsampled raster (fast)
83- const rasters = await targetImage . readRasters ( ) ;
84- dataMin = Infinity ;
85- dataMax = - Infinity ;
86-
87- const bandIndex = selectedBand - 1 ;
88- const bandData = rasters [ bandIndex ] as
89- | Float32Array
90- | Uint16Array
91- | Int16Array ;
92- if ( bandData ) {
93- for ( let j = 0 ; j < bandData . length ; j ++ ) {
94- const val = bandData [ j ] ;
95- if ( val < dataMin ) {
96- dataMin = val ;
97- }
98- if ( val > dataMax ) {
99- dataMax = val ;
100- }
68+ // 1. Try metadata first
69+ let dataMin = image . fileDirectory . STATISTICS_MINIMUM ;
70+ let dataMax = image . fileDirectory . STATISTICS_MAXIMUM ;
71+
72+ if ( dataMin === undefined || dataMax === undefined ) {
73+ // 2. Try smallest overview if available
74+ const overviewCount = await tiff . getImageCount ( ) ;
75+ const targetImage =
76+ overviewCount > 1 ? await tiff . getImage ( overviewCount - 1 ) : image ;
77+
78+ // 3. Read downsampled raster (fast)
79+ const rasters = await targetImage . readRasters ( ) ;
80+ dataMin = Infinity ;
81+ dataMax = - Infinity ;
82+
83+ const bandIndex = selectedBand - 1 ;
84+ const bandData = rasters [ bandIndex ] as
85+ | Float32Array
86+ | Uint16Array
87+ | Int16Array ;
88+ if ( bandData ) {
89+ for ( let j = 0 ; j < bandData . length ; j ++ ) {
90+ const val = bandData [ j ] ;
91+ if ( val < dataMin ) {
92+ dataMin = val ;
93+ }
94+ if ( val > dataMax ) {
95+ dataMax = val ;
10196 }
10297 }
10398 }
10499
105- min = dataMin ;
106- max = dataMax ;
107-
108100 model . sharedModel . updateLayer ( layerId , {
109101 ...layer ,
110102 parameters : {
111103 ...layer . parameters ,
112104 symbologyState : {
113105 ...( layer . parameters ?. symbologyState ?? { } ) ,
114- min ,
115- max ,
106+ dataMin ,
107+ dataMax ,
116108 band : selectedBand ,
117109 } ,
118110 } ,
119111 } ) ;
120112
121- console . log ( `[Symbology Init] Final Min=${ min } , Max=${ max } ` ) ;
113+ console . debug ( `[Symbology Init] Final Min=${ dataMin } , Max=${ dataMax } ` ) ;
122114 }
123115
124116 for ( let i = 0 ; i < numberOfBands ; i ++ ) {
125117 bandsArr . push ( {
126118 band : i ,
127119 stats : {
128- minimum : min ?? 0 ,
129- maximum : max ?? 100 ,
120+ minimum : dataMin ?? 0 ,
121+ maximum : dataMax ?? 100 ,
130122 } ,
131123 } ) ;
132124 }
0 commit comments