判断tif文件类型,
TIF 是
A. 0 / 1 掩膜
B. 比例(0–1)
C. 连续值(面积 / 覆盖率)
中的哪一类
import rasterio import numpy as np from rasterio.enums import Resampling tif = r"分布数据集\classified-Anhui-2024-rice-WGS84-v1.tif" with rasterio.open(tif) as ds: img = ds.read( 1, out_shape=(ds.height // 100, ds.width // 100), resampling=Resampling.nearest ) nodata = ds.nodata if nodata is not None: img = img[img != nodata] print("最小值:", np.nanmin(img)) print("最大值:", np.nanmax(img)) print("唯一值数量(近似):", len(np.unique(img))) print("前10个唯一值:", np.unique(img)[:10])通过上面的例子可以得出tif文件是
import os import glob import rasterio import numpy as np import matplotlib.pyplot as plt from rasterio.enums import Resampling tif_dir = r"E:种植分布数据集" tif_files = sorted(glob.glob(os.path.join(tif_dir, "*.tif"))) n = len(tif_files) ncols = 4 nrows = (n + ncols - 1) // ncols plt.figure(figsize=(4 * ncols, 4 * nrows)) for i, tif in enumerate(tif_files): with rasterio.open(tif) as ds: scale = 20 # ★关键参数 img = ds.read( 1, out_shape=( ds.height // scale, ds.width // scale ), resampling=Resampling.average ).astype(np.float32) if ds.nodata is not None: img[img == ds.nodata] = np.nan plt.subplot(nrows, ncols, i + 1) im = plt.imshow(img, cmap="viridis") plt.title(os.path.basename(tif), fontsize=8) plt.axis("off") plt.tight_layout() plt.savefig("plot.png",dpi=500) # plt.show()通过上面的代码,将文件夹下的所有tif文件均做可视化处理,拼成子图的形式