使用Rasterio创建栅格数据

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: 使用Rasterio创建并写入栅格数据比GDAL还简单一些,基本使用到两个函数:rasterio.open()和write()

使用Rasterio创建栅格数据

作者:阿振 邮箱:tanzhenyugis@163.com

博客:https://blog.csdn.net/theonegis/article/details/80089375

修改时间:2018-06-09

声明:本文为博主原创文章,转载请注明原文出处


方法描述

使用Rasterio创建并写入栅格数据比GDAL还简单一些,基本使用到两个函数:

  • rasterio.open()
  • write()

open()函数当中,我们可以像GDAL中的Create()方法一样,设置数据类型,数据尺寸,投影定义,仿射变换参数等一系列信息

另外,Rasterio中的数据集提供了一个profile属性,通过该属性可以获取这些信息的集合,这样我们读取源数据文件的时候获得该属性,然后对源数据进行处理,再创建写入文件的时候,在open()函数中传入profile即可,这样就有点像GDAL中的CreateCopy()函数。但是Rasterio比CreateCopy()更为强大的地方是:你可以修改profile以适配你的目标文件,而CreateCopy()通过提供的原型文件进行创建,无法直接对这些元信息进行修改。

代码示例

下面的代码通过读取一个三个波段的Landsat影像,计算NDVI指数,然后创建输出并保存的例子。

注意计算NDVI的时候对于除数为0的处理。

import rasterio
import numpy as np

# 读入的数据是绿,红,近红外波段的合成数据
with rasterio.open('LC08_122043_20161207.tif') as src:
    raster = src.read()  # 读取所有波段
    # 源数据的元信息集合(使用字典结构存储了数据格式,数据类型,数据尺寸,投影定义,仿射变换参数等信息)
    profile = src.profile
    # 计算NDVI指数(对除0做特殊处理)
    with np.errstate(divide='ignore', invalid='ignore'):
        ndvi = (raster[2] - raster[1]) / (raster[2] + raster[1])
        ndvi[ndvi == np.inf] = 0
        ndvi = np.nan_to_num(ndvi)
    # 写入数据
    profile.update(
        dtype=ndvi.dtype,
        count=1
    )
    '''也可以在rasterio.open()函数中依次列出所有的参数
    with rasterio.open('NDVI.tif', mode='w', driver='GTiff',
                       width=src.width, height=src.height, count=1,
                       crs=src.crs, transform=src.transform, dtype=ndvi.dtype) as dst:
    '''
    with rasterio.open('NDVI.tif', mode='w', **profile) as dst:
        dst.write(ndvi, 1)
目录
相关文章
|
1月前
|
编解码
ENVI无缝镶嵌、拼接栅格数据的方法
【8月更文挑战第10天】使用ENVI进行无缝镶嵌的方法包括:准备具有一致空间参考的栅格数据;通过“File”菜单逐个加载数据;启动“Seamless Mosaic”工具;添加待镶嵌图像;调整几何校正、颜色平衡及羽化参数以平滑过渡;设定输出路径与格式;最后执行镶嵌并检查结果质量,必要时微调参数直至满意。
|
4月前
|
存储 数据可视化 Cloud Native
用Ganos低代码实现免切片遥感影像浏览(二):动态栅格瓦片
本文介绍了Ganos全新发布了动态栅格瓦片能力,帮助用户将库内栅格数据或栅格分析结果快速可视化,无需依赖类似GeoServer等空间服务中间件,技术栈短平快,使用灵活高效。
|
存储
ArcGIS:模型构建器内变量的数据类型中栅格图层和栅格数据集的区别
ArcGIS:模型构建器内变量的数据类型中栅格图层和栅格数据集的区别
96 0
|
4月前
|
定位技术
ArcGIS中ArcMap创建镶嵌数据集、导入栅格图像文件并修改像元数值范围的方法
ArcGIS中ArcMap创建镶嵌数据集、导入栅格图像文件并修改像元数值范围的方法
|
4月前
|
Serverless 定位技术 C++
R语言raster包批量读取单一或大量栅格图像
R语言raster包批量读取单一或大量栅格图像
112 1
|
4月前
|
定位技术 C++ 数据格式
C++中GDAL为CreateCopy()创建的栅格图像增添波段数量的方法
C++中GDAL为CreateCopy()创建的栅格图像增添波段数量的方法
|
4月前
|
编解码 定位技术
ENVI对不含地理参考信息的栅格图像添加地理或投影坐标系信息
ENVI对不含地理参考信息的栅格图像添加地理或投影坐标系信息
|
4月前
|
存储 定位技术 C++
C++中GDAL批量读取大量栅格遥感影像文件并生成各像元在不同文件中数值的时间序列数组
C++中GDAL批量读取大量栅格遥感影像文件并生成各像元在不同文件中数值的时间序列数组
|
4月前
|
算法 定位技术 数据处理
C++中GDAL批量创建多个栅格图像文件并批量写入数据
C++中GDAL批量创建多个栅格图像文件并批量写入数据
|
JSON 数据格式
使用Fiona创建Shapefile矢量数据
使用Fiona写入Shapefile数据,主要是构建一个Schema,然后将空间对象转为GeoJSON的形式进行写入。 这个Schema是一个字典结构,定义了Geometry的类型,属性字段的名称及其类型。
121 0