alex_bn_lee

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

【616】安装 GDAL(rasterio)

参考:

  Windows 电脑很容易,但是 Mac 很不好装(目前还没装上,可能是系统版本,可能是 python 版本)

Windows 版:

 

MacOS 版:

  未完待续

参考:使用Rasterio读取栅格数据

参考:rasterio 官方 Tutorial

  虽然没装上 GDAL,不过找到了替代方案 rasterio,安装超级简单,直接通过 pip install rasterio 即可

  相关功能说明:

  • 数据读取:ds = rasterio.open

  • 波段数目:ds.count

  • 影像宽度:ds.width

  • 影像高度:ds.height

  • 地理范围:ds.bounds,可以获取四个顶点的经纬度 

    • BoundingBox(left=121.5971892, bottom=31.2733359001, right=121.5989442, top=31.2750909001)
    • ds.bounds.left
  • 获取波段:band1 = ds.read(1), band2 = ds.read(2), band3 = ds.read(3), 获取第 一/二/三 个波段数据,跟GDAL一样索引从1开始,直接获得 numpy.ndarray 类型的二维数组表示,如果 read() 函数不加参数,则得到所有波段(第一个维度是波段,直接输入神经网络会有问题,一般是波段放在第三维)

  • ds.transform:返回一个 6 个值的 tuple。

    • Affine(2.7000000000043656e-06, 0.0, 121.5971892,
             0.0, -2.6999999999988997e-06, 31.2750909001)
    • # transform[0]: 影像宽度方向上的分辨率(经度范围/像素个数),经度往右/东 变大,因此是正

    • # transform[1]: 旋转,0 表示上面为北方

    • # transform[2]: 左上角像素经度

    • # transform[3]: 旋转,0 表示上面为北方

    • # transform[4]: 影像高度方向上的分辨率(纬度范围/像素个数),纬度往下/南 变小,因此是负

    • # transform[5]: 左上角像素纬度

    • 1
      2
      3
      4
      5
      6
      7
      # 从左边的经度值推导出右边的经度值
      ds.transform[2] + ds.transform[0] * ds.width == ds.bounds.right
      # True
       
      # 从上面的纬度值推导出下面的纬度值
      ds.transform[5] + ds.transform[4] * ds.height == ds.bounds.bottom
      # True
  • 通过放射计算,可以直接计算指定像素对的经纬度信息,与下面的操作正好相反

    • 1
      2
      3
      4
      5
      6
      7
      8
      9
      # 左上角的经纬度
      ds.transform * (0, 0)
       
      # (121.5971892, 31.2750909001)
       
      # 右下角的经纬度
      ds.transform * (ds.width, ds.height)
       
      # (121.5989442, 31.2733359001)
  • ds.index(121.5989442, 31.2733359001):获取输入经纬度对应的图像像素对,可以用于矢量转栅格的相应计算

  • 图像显示:

    • 1
      2
      3
      4
      5
      # 可以直接显示 uint16 的图像(很多数据点超过255,不能直接显示)
      # 其他正常的显示需要 uint8 的图像
       
      from rasterio.plot import show
      show(ds)

       

posted on   McDelfino  阅读(1220)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示