遥感卫星数据读取

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

相关推荐
我qq不是451516521 小时前
WorkBuddy下载体验
人工智能·经验分享·ai·workbuddy
IT_陈寒2 小时前
Redis雪崩把我坑惨了,这是5年经验的教训
前端·人工智能·后端
心祭丫丫2 小时前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习
海螺_AIHCC2 小时前
LLM 返回的 JSON 十次坏三次,别急着骂模型——60 行容错解析器先兜住(附可运行代码)
人工智能
露天赏雪2 小时前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel
lisw052 小时前
理解推理大语言模型的可监控性!
人工智能·语言模型·自然语言处理
天天被压力2 小时前
【A股分钟级高频数据完全手册 #06】北交所分钟级数据接口:京市股票Pro版最新分时
java·人工智能·python
在所不辞兄3 小时前
为什么学习率预热(warmup)能显著改善Transformer等大模型的训练稳定性?
人工智能·深度学习·神经网络·机器学习·智能仿真
天天被压力3 小时前
【A股分钟级高频数据完全手册 #05】指数历史分钟数据接口:Pro版沪深指数分时回放
java·人工智能·python