首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Rasterio读取栅格数据

Rasterio是基于GDAL库二次封装的更加符合Python风格的主要用于空间栅格数据处理的Python库。...Rasterio栅格数据模型基本和GDAL类似,需要注意的是: 在Rasterio 1.0以后,对于GeoTransform的表示弃用了GDAL风格的放射变换,而使用了Python放射变换的第三方库affine...,完全符合数学上矩阵乘法的操作,更加直观和方便。...栅格数据读取代码示例 下面的示例程序中演示了如何读取一个GeoTIFF文件并获取相关信息,需要注意的是: rasterio使用rasterio.open()函数打开一个栅格文件 rasterio使用read...import rasterio with rasterio.open('example.tif') as ds: print('该栅格数据的基本数据集信息(这些信息都是以数据集属性的形式表示的

1.9K20

C++ GDAL创建大量栅格文件并分别写入数据

在GDAL库中,如果我们想用自己的数据生成栅格文件,首先需要基于CreateCopy()函数新建一个栅格文件,随后通过RasterIO()函数写入数据。...其中,poSrcDS是一个指向模板栅格文件的指针;在我们用CreateCopy()函数新建栅格文件,新的栅格文件的各项属性,比如行数、列数、像元大小、坐标信息等,都直接与这个模板栅格文件保持一致。...至此,我们仅仅是完成了GDAL库中栅格文件的创建,但此时还没有数据导入进去,因此在资源管理器中也是看不到具体的新的栅格文件的。...随后,我们基于RasterIO()函数,数据写入栅格文件即可;其中,out_pafScanline[pic_index_2 - 1]就是需要写入到每一景遥感影像中的数据。   ...完成以上工作后,我们就完成了对其中一景遥感影像的创建、写入,此时资源管理器中就会看到这一景图像的文件已经存在。随后,通过GDALClose()函数刚刚指向的栅格遥感文件关闭,并进行下一次循环。

26020
您找到你想要的搜索结果了吗?
是的
没有找到

使用Python以优雅的方式实现根据shp数据对栅格影像进行切割

3.3 读取shp        这在上一篇文章中也已经做了详细描述,不再赘述,需要强调的此处也需要将shp进行投影转换,使其与我们要处理的影像一致,所以简单的方式就是直接读取影像的投影信息,shp...首先将shp数据转换为geojson,然后使用rasterio进行切割。...3.4.1 shp数据转换为geojson        rasterio进行切割需要传入的geojson对象,而不是普通的GeoSeries对象,所以我们需要进行一步转换。...3.4.2 使用rasterio进行切割        其实有了前面的准备这一步也就变的简单了,直接调用rio.mask.mask函数,该函数返回该栅格数据与features相交部分的数组结果以及变换信息...当然本文没有介绍如何对遥感影像进行处理,其实非常简单,当我们读出影像数据之后,其就是一个numpy的array对象,已经变成了纯数学问题,处理完之后只需要附加投影等信息写入新的tiff文件即可。

5.1K110

使用PythonException异常错误堆栈信息写入日志文件

假设需要把发生异常错误的信息写入到log.txt日志文件中去: import traceback import logging logging.basicConfig(filename='log.txt...,自己把错误堆栈信息写入文件。...所以使用except需注意,不但会捕获该类型的错误,还会将其子类错误一网打尽 调用栈: 若异常没有被捕获,则会一直往上抛,最后抛给解释器,解释器打印错误的堆栈信息,然后退出。...如果要抛出错误,首先根据需要,可以定义一个错误的class,选择好继承关系,然后,用raise语句抛出一个错误的实例。...以上这篇使用PythonException异常错误堆栈信息写入日志文件就是小编分享给大家的全部内容了,希望能给大家一个参考。

5.5K30

Flink教程-使用sql流式数据写入文件系统

滚动策略 分区提交 分区提交触发器 分区时间的抽取 分区提交策略 完整示例 定义实体类 自定义source 写入file flink提供了一个file system connector,可以使用DDL创建一个...table,然后使用sql的方法写入数据,支持的写入格式包括json、csv、avro、parquet、orc。...、checkpoint间隔,这三个选项,只要有一个条件达到了,然后就会触发分区文件的滚动,结束上一个文件写入,生成新文件。.../h=10/这个分区的60个文件都写完了再更新分区,那么我们可以这个delay设置成 1h,也就是等到2020-07-06 11:00:00的时候才会触发分区提交,我们才会看到/2020-07-06/...在这个实例中,我们开启了checkpoint的时间间隔是10s,所以会每隔10s写入一个orc文件.

2.3K20

使用Rasterio创建栅格数据

方法描述 使用Rasterio创建并写入栅格数据比GDAL还简单一些,基本使用到两个函数: rasterio.open() write() 在open()函数当中,我们可以像GDAL中的Create(...)方法一样,设置数据类型,数据尺寸,投影定义,仿射变换参数等一系列信息 另外,Rasterio中的数据集提供了一个profile属性,通过该属性可以获取这些信息的集合,这样我们读取源数据文件的时候获得该属性...,然后对源数据进行处理,再创建写入文件的时候,在open()函数中传入profile即可,这样就有点像GDAL中的CreateCopy()函数。...但是Rasterio比CreateCopy()更为强大的地方是:你可以修改profile以适配你的目标文件,而CreateCopy()通过提供的原型文件进行创建,无法直接对这些元信息进行修改。...') as src: raster = src.read() # 读取所有波段 # 源数据的元信息集合(使用字典结构存储了数据格式,数据类型,数据尺寸,投影定义,仿射变换参数等信息)

1.5K20

rasterio的安装和使用

学习数学的同时了,还在学习遥感数据处理(感觉遥感比较好水论文),一般处理遥感数据我们会使用ENVI,但是毕竟我会Python,所以我就上网查了一些内容,就发现了rasterio这个第三方库。...大家可能听过GDAL库,其实rasterio是基于GDAL库二次封装的,更加符合Python风格的主要用于空间栅格数据处理的Python库。所以本文就简单介绍下rasterio的安装和使用。...rasterio使用 其实我用Python来操作影像就两个要求,一是能读取到各个影像波段的数据,二是经过一些处理后,能再将数据存为影像。...使用open函数就可以读取影像数据,count属性就是影像的波段数(landsat全色是7个波段)。...astype('float64') nir_red = data.read(5).astype('float64') ndvi = (nir_red-red)/(nir_red+red) ndvi 最后,写入到新的栅格即可

1.3K40

使用 ChatGPT 和 Python 分析 Sentinel 2 图像。

下面是一个示例 Python 代码,用于打开 Sentinel-2 光栅文件使用以下方法绘制假彩色合成图rasterio: import rasterio from rasterio.plot import...rasterio包打开 Sentinel-2 光栅文件,读取红色、绿色和蓝色波段,将它们堆叠在一起以创建假彩色合成,并使用 .plot 绘制结果rasterio.plot.show()。...然后可以使用模块show中的函数显示生成的图像rasterio.plot。 一旦我们 Sentinel 2 图像加载到 Python 中,我们就可以开始从中提取信息。...rasterio以下是使用 计算 `Sentinel-2` 栅格文件的归一化差异植被指数 (NDVI)并绘制结果的示例 Python 代码: 代码如下: import rasterio import...rasterio包打开 Sentinel-2 栅格文件,读取红色和近红外波段,使用公式 计算 NDVI (nir - red) / (nir + red),并使用 绘制结果rasterio.plot.show

30810

C++中GDAL:用像素均为0的栅格填补时序遥感数据中缺少的

首先,我们需要基于文件夹中遥感影像文件文件名称特征,遍历生成文件名列表。在这里,我们使用两个嵌套的for循环,生成所有可能的栅格图像文件名,并将这些文件名保存在all_file_path向量中。...接下来,我们使用GDALOpen函数,从2018001这一天开始,通过循环打开对应名字的文件,直到找到文件夹中第一个实际存在的栅格图像文件(poDataset_actual),并获取其栅格图像的行列数(...接下来,我们遍历文件名列表all_file_path,对每个文件名进行处理。对于不存在的栅格图像文件使用GDALDriver创建一个新的数据集(poDataset),并将其中的像元值设置为0。...其中,在对缺失的栅格图像加以生成,我们首先使用GetGDALDriverManager()->GetDriverByName函数获取GDAL驱动程序对象,然后使用CreateCopy函数创建新的栅格图像...随后,我们用0填充新创建的栅格图像,并使用RasterIO函数对栅格图像的像元进行写入操作。   最后,在上述处理完成后,使用GDALClose函数关闭数据集,并输出新创建的栅格图像的文件名。

18430

C++增加GDAL CreateCopy函数得到的栅格的波段数量

其中,CreateCopy()函数需要基于一个已有的栅格图像文件作为模板,模板文件的各项属性信息(例如空间参考信息、像元个数、像元大小、波段数量等),自动作为新创建的栅格图像文件的属性信息;而Create...整体思路其实也很简单——我们在依据.tif格式的模板栅格图像文件创建新的.tif格式的栅格图像文件前,先建立一个.vrt格式的文件。....首先,我们创建两个GDALDataset*变量,分别指向.tif格式的模板栅格图像文件与我们将要创立的.vrt格式文件;随后,先用一次CreateCopy()函数,模板文件的全部属性信息复制到.vrt...接下来,就可以开始配置我们所需要创立的新的.tif格式栅格图像文件。其中,再用一次CreateCopy()函数,.vrt格式文件的全部属性信息复制到新的.tif格式的栅格图像文件中。...,创建新的.tif格式的栅格图像文件,并对新的图像文件的3个波段依次赋值的全部过程。

14020

地科Python数据分析案例 | 绘制黄土高原局部区域的沟壑覆盖度分析图

流域分析:使用水文分析工具,基于 DEM 数据划分研究区子流域。...Raster To Vector Lines 表示线性网络的栅格转换为表示线性网络的要素,可视化效果更佳。...步骤四 沟坡沟底划分 面转栅格 提取平原 提取沟底 提取沟坡 4.1 面转栅格 Vector Polygons To Raster 区域基本地貌分类矢量数据转为栅格,以便后续分析。...参数说明: stat:统计方式,包含 Mean、Median、Max、Min 等,其中 Total 为栅格计数 out_table:是否结果导出表格。...参数说明: units:面积单位,分为"grid cells"栅格单元计数和"map units"实际地图面积单位 zero_back:是否 0 值判定为背景。

70530

xarray | 序列化及输入输出

当要在一个文件写入多个组,传入 mode = 'a' 给 to_netcdf ,从而确保每一次调用都不会删除文件。 除非执行一系列计算操作,否则 netCDF 文件中的值是不会加载到内存中的。...控制写入文件的数据类型。 _FillValue:当保存 xarray 对象到文件,xarray 变量中的 Nan 会映射为此属性包含的值。这在转换具有缺省值的浮点数为整数就显得非常重要了。...Rasterio 如果安装了 rasterio,可以使用 rasterio 打开GeoTiff以及其它栅格数据集。...使用 PyNIO 处理 xarray 可以处理 PyNIO 支持的所有格式文件,只需要在使用 open_dateset 方法指定 engine 参数为 'pynio' 即可。...利用 concat 方法可以多个文件合并为单个文件

6.1K22

GDAL关于读写图像的简明总结

关于使用GDAL读写影像,平时也在网上查了很多资料,就想结合自己的使用心得,做做简单的总结。 在这里写一个例子:裁剪lena图像的某部分内容,将其放入到新创建的.tif文。...如果已经写入完毕或者不需要这张图像的相关操作了,最后一定要注意关闭关闭打开的文件,之前只会内存泄漏,而这里还会可能创建失败。...如果为GF_Read,则是影像内容写入内存,如果为GF_Write,则是内存中内容写入文件。 参数2、3:读写开始位置。相对于图像左上角顶点(从零开始)的行列偏移量。...3.5.重采样读写 RasterIO()另外一个用法是可以自动缩放,重采样读写影像,例如这里512X512大小的lena图像重采样成256X256大小: //申请buf size_t imgBufNum...查阅网上资料得知,RasterIO()重采样方式默认是最临近的方法,只有建立金字塔可以设置重采样方式,但也仅限于缩小。

88010

Earthpy | 这样超赞的艺术地图也能轻松绘制...

「earthpy」-Python处理栅格、矢量数据利器 最近在整理Python数据可视化课程的拓展内容,发现了一个处理空间数据的超赞工具-「earthpy」,也解决了一个绘制艺术地图的问题,下面就给大家详细介绍一下这个工具...~~ earthpy简介及安装 EarthPy是一个 python 软件包,它使使用开源工具绘制和处理空间栅格和矢量数据变得更加容易。...Earthpy 依赖于侧重于矢量数据的 geopandas 和便于输入和输出光栅数据文件rasterio,你还可以使用 matplotlib 进行绘图操作。...可以使用pip进行安装,但之前需要安装rasterio, geopandas, numpy等包: pip install earthpy earthpy包可视化功能 我们重点还是放在EarthPy工具的可视化展示上面...,如下: 使用 EarthPy 绘制栅格数据图层 from glob import glob import matplotlib.pyplot as plt import earthpy as et import

11810

C++ GDAL批量读取栅格文件并生成像元的时间序列

1.2 栅格文件筛选   由于我这里几乎全部的代码都放在了主函数中,因此这一部分就先介绍代码main()函数的第一部分,亦即栅格文件的遴选部分;具体代码如下所示。...\n" << endl; }   这一部分主要就是做好调用自定义函数get_need_file()的变量准备,并调用get_need_file()函数,得到指定文件夹下的栅格文件;随后,栅格文件的筛选结果进行输出...1.3 栅格文件读取   这一部分主要是基于GDAL库,循环读取前述文件夹中的每一个栅格遥感影像文件。...,pafScanline是我们读取栅格遥感影像文件所需的变量,之后读取好的遥感影像数据就会存放在这里;由于我们有多个栅格文件需要读取,因此通过for循环来实现批量读取的操作,并通过pic_index这个变量作为每一次读取文件的计数...这里我们通过new实现对pafScanline内存的动态分配,因为我们在获取栅格遥感影像的景数(也就是文件夹中栅格遥感影像文件的个数)之前,也不知道具体需要给pafScanline这一变量分配多少的内存

24530

xarray尾声:TIFF与GRIB处理

TIFF数据处理 标记化图片文件格式(TIFF)是地理空间最常用的栅格格式。TIFF文件可以包含多波段,整型高程数据,基本元数据,内部压缩以及其他常用的存储辅助信息的文件格式。...TIFF文件可以通过添加标记数据进行扩展,GeoTIFF就是扩展定义的地理空间数据的存储,常用的后缀.tif,.tiff和.gtif。 用open_rasterio函数可以读取tif数据。...>>>import xarray as xr >>>url = 'https://github.com/mapbox/rasterio/raw/master/tests/data/RGB.byte.tif...' >>>da = xr.open_rasterio(url) >>>da >>> [1703814 values...当前有3个版本的GRIB格式,目前GRIB1和GRIB2在广泛使用。 cfgrib安装 如果想用xarray读取GRIB文件,首先要安装一下ECMWF的cfgrib库。

6.6K42

遥感数据机器学习的准备工作:python栅格数据提取至EXCEL

之后我们根据自己的研究区进行裁剪【Spatial Analyst 工具-提取分析-按掩膜提取】 下面我们裁剪好的研究区进行栅格转点【转换工具-由栅格转出-栅格转点】 转好之后的数据我们就可以拿来用了...InputRasterFolder = r'E:\CN\train' #放栅格数据的文件夹 # 设置Excel编码 file = xlwt.Workbook('encoding = utf-8')...#读取栅格 #获取注册类 #打开栅格数据 input_folder_list = os.listdir(InputRasterFolder) #读取文件夹里所有文件 tif_files = list...tif,都只认最后一个tif tif_files.append(filename) #文件夹里的tif文件加入只有tif的列表 print(tif_files) sheet1.write...value = data[0, 0] * 0.01 #乘以参数,这个根据自己的数据情况做出修改 #数据经纬度和对应栅格数值写入excel表 sheet1

1.2K20

Python辐射校正遥感图像并以一列的形式导出Excel

现在有一个栅格遥感影像文件,其为.tiff格式的文件(但其实和.tif格式文件的操作方法是一样的),且像元的数值都是真实数值乘上10000之后的。...表示我们使用flatten()方法二维数组展平为一维数组,并将结果赋值给变量data_one_column。   ...最后,将上述处理好的数据写入.csv格式文件。...其中,csv_file指定要写入的.csv格式文件的路径;with open(csv_file, 'w', newline='') as file表示我们使用open()函数打开.csv格式文件,并创建一个...csv.writer对象,同时指定文件写入模式为覆盖写入'w';writer.writerow(["Value"])意味着我们写入.csv格式文件的第一行,即表头,这里是一个标题为Value的列;最后

9210
领券