判断tif文件类型,
TIF 是
-
A. 0 / 1 掩膜
-
B. 比例(0--1)
-
C. 连续值(面积 / 覆盖率)
中的哪一类
python
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文件是

python
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文件均做可视化处理,拼成子图的形式