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

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

在这里写一个例子:裁剪lena图像的某部分内容,将其放入到新创建的.tif文。以此来说明GDAL读写影像的具体实现。 1.打开图像 用GDAL打开lena.bmp,实现如下。...3.图像读写 GDAL读写图像是通过RasterIO()这个函数实现的,这个函数提供了非常强大的功能,目前笔者也只总结了这以下方面的内容。...3.5.重采样读写 RasterIO()另外一个用法是可以自动缩放,重采样读写影像,例如这里将512X512大小的lena图像重采样成256X256大小: //申请buf size_t imgBufNum...nullptr, bandNum*depth, -bufWidth*bandNum*depth, depth); //释放 delete[] imgBuf; imgBuf = nullptr; 可以看到重采样读写只需要修改参数...查阅网上资料得知,RasterIO()重采样方式默认是最临近的方法,只有建立金字塔时可以设置重采样方式,但也仅限于缩小。

1.1K10

使用Rasterio做投影变换

思路分析 在之前GDAL系列文章中的《栅格数据投影转换》提到过,做投影转换最重要的是计算数据在目标空间参考系统中的放射变换参数(GeoTransform)和图像的尺寸(行数和列数)。...而且我们使用GDAL基本库自己写代码进行了计算。 在rasterio中提供了calculate_default_transform,可以直接计算目标系统中的放射变换参数和图像尺寸。...代码实现 import numpy as np import rasterio from rasterio.warp import calculate_default_transform, reproject...# 计算在新空间参考系下的仿射变换参数,图像尺寸 dst_transform, dst_width, dst_height = calculate_default_transform...dst_transform, 'width': dst_width, 'height': dst_height, 'nodata': 0 }) # 重投影并写入数据

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

    ArcPy批量掩膜、批量重采样栅格图像

    本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件进行批量掩膜与批量重采样的操作。   首先,我们来明确一下本文的具体需求。...我们希望,依据一个已知的面要素矢量图层文件,对上述文件夹中的全部.tif格式遥感影像进行掩膜,并对掩膜后的遥感影像文件再分别加以批量重采样,使得其空间分辨率为1000 m。   ...对全部图像文件完成掩膜操作后,我们继续进行重采样操作。...和前述代码思路类似,我们依然还是先遍历文件,并在其原有文件名后添加"_Re.tif"后缀,作为新文件的文件名;随后,利用Resample_management()函数进行重采样。...其中,1000表示重采样的空间分辨率,在这里单位为米;"BILINEAR"表示用双线性插值的方法完成重采样。

    28510

    C++将h5转tif:支持高分数据等szip压缩的图像

    本文介绍基于C++ 语言的hdf5库与gdal库,将.h5格式的多波段HDF5图像批量转换为.tif格式的方法;其中,本方法支持对szip压缩的HDF5图像(例如高分一号卫星遥感影像)加以转换。   ...将HDF5图像批量转换为.tif格式,在部分场景下操作并不难——在我们之前的文章ArcPy将HDF格式栅格文件批量转为TIFF格式中,就介绍过基于Python中的arcpy模块实现这一需求的方法。...文件,就没办法在Windows中通过Python的h5py、gdal等库直接打开了。   ...随后,记得关闭HDF5图像以释放资源。 status = H5Fclose(file_id);   接下来,就该gdal库登场了。...使用gdal库创建一个新的TIFF文件,并使用RasterIO方法将每个波段的数据写入到TIFF文件中。

    11310

    使用Rasterio读取栅格数据

    Rasterio简介 有没有觉得用GDAL的Python绑定书写的代码很不Pythonic,强迫症的你可能有些忍受不了。不过,没关系,MapBox旗下的开源库Rasterio帮我们解决了这个痛点。...Rasterio是基于GDAL库二次封装的更加符合Python风格的主要用于空间栅格数据处理的Python库。...Rasterio中栅格数据模型基本和GDAL类似,需要注意的是: 在Rasterio 1.0以后,对于GeoTransform的表示弃用了GDAL风格的放射变换,而使用了Python放射变换的第三方库affine...对于放射变换 affine.Affine(a, b, c, d, e, f) GDAL中对应的参数顺序是:(c, a, b, f, d, e) 采用新的放射变换模型的好处是,...栅格数据读取代码示例 下面的示例程序中演示了如何读取一个GeoTIFF文件并获取相关信息,需要注意的是: rasterio使用rasterio.open()函数打开一个栅格文件 rasterio使用read

    2.1K20

    rasterio的安装和使用

    学习数学的同时了,还在学习遥感数据处理(感觉遥感比较好水论文),一般处理遥感数据我们会使用ENVI,但是毕竟我会Python,所以我就上网查了一些内容,就发现了rasterio这个第三方库。...大家可能听过GDAL库,其实rasterio是基于GDAL库二次封装的,更加符合Python风格的主要用于空间栅格数据处理的Python库。所以本文就简单介绍下rasterio的安装和使用。...pyproj Shapely GDAL Fiona geopandas rasterio 通过这个网址下载第三方库https://www.lfd.uci.edu/~gohlke/pythonlibs/#...(1)一定要选择对应Python版本最高版本的第三库。以pyproj为例,我本地的Python为3.8版本,所以我要选择下载如下的版本。 (2)最后还需要更新下numpy库,不然也导入不了。...rasterio使用 其实我用Python来操作影像就两个要求,一是能读取到各个影像波段的数据,二是经过一些处理后,能再将数据存为影像。

    1.7K40

    Python 批量重采样、掩膜、坡度提取

    今日分享: 后台回复“批量”可以获取批量重采样、批量掩膜、批量坡度提取和批量分区统计的代码,不过你们懂得。 01 主要内容 ?...1.以30m空间分辨率的DEM数据为基础数据,重采样为40、50、60、70、80、90、100、110、120 m共10组不同分辨率的DEM。 2....1.2 将重采样得到10组不同分辨率的DEM,利用行政区的矢量边界,编写Python代码进行批量剪裁,具体代码如下所示: import arcpy,os,glob from arcpy import env...(n) + ".tif"这一句代码出现了错误,我们对DEM数据进行重采样,从30米到120米一共有10景DEM数据,输出的每个DEM的名称肯定是不一样的,都是根据DEM数据的分辨率来进行命名,采用的Python...后台回复“批量”可以获取批量重采样、批量掩膜、坡度批量提取和批量分区统计的代码,emmmmmm,不过你们懂得== 作者|不许人间见白头 排版|Moon 校阅|数读菌、不许人间见白头

    1.9K10

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

    研究流程图 三、案例内容 步骤一 预处理 DEM 数据重投影 地貌分类数据重投影 山体阴影 1.1 DEM 数据重投影 Reproject 将获取得到的 DEM 栅格投影至 CGCS2000 高斯投影...output, input=[]): os.environ['PROJ_LIB'] = "/opt/conda/share/proj" abs_path = "/opt/conda/lib/python3.9...letter = next(letters_iter) in_str = in_str + " -" + letter +" " + input[i] command = "python...Difference") plt.show() del diff_image plt.clf() 3.3 划分正负地形 Raster Calculator 提取地形差值栅格中的负地形,结果为二值化图像...参数说明: reclass_vals:重分类表达式,每三个一组,分别代表新赋值,重分类范围最小值和范围最大值,如 1;0;200;代表将 0-200 的值赋值为 1 outVec2ras = temp_dir

    1K30

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

    一、前言        前面一篇文章(使用Python实现子区域数据分类统计)讲述了通过geopandas库实现对子区域数据的分类统计,说白了也就是如何根据一个shp数据对另一个shp数据进行切割。...三、优雅切割        为什么叫优雅的切割,其实我这里倒不是卖弄文字,主要是为了与Gdal的方式相区别。...传统的方式可以采用Gdal命令行进行一点点的手动处理,稍微智能化一点可以在python程序中发送控制台语句的方式调用gdal命令。作为程序员我们都是想采用最简单、最不需要手工操作、看上去最舒服的方式。...3.1 读取影像        采用rasterio进行影像读取。...这在上一篇文章中也已经做了详细描述,不再赘述,需要强调的时此处也需要将shp进行投影转换,使其与我们要处理的影像一致,所以简单的方式就是直接读取影像的投影信息,将shp数据转换到此投影,详情请参考使用Python

    5.4K110

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

    本文介绍基于C++语言GDAL库,为CreateCopy()函数创建的栅格图像添加更多波段的方法。   ...在C++语言的GDAL库中,我们可以基于CreateCopy()函数与Create()函数创建新的栅格图像文件。...首先,GDAL库提供了AddBand()函数,可以为GDALDataset*类型的数据添加波段;但是,AddBand()函数对于大部分格式的栅格图像而言都不起作用——例如,最常见的.tif格式的栅格图像文件...vrt格式文件是GDAL库中提供的一种虚拟数据格式,这一数据格式的详细介绍大家可以参考GDAL库的帮助文档,这里我们就不再详细说明了;目前只需要知道,.vrt格式文件是支持利用AddBand()函数增添自身的波段数量的...0); GDALRasterBand* poOutBand_2; poOutBand_2 = poDstDS->GetRasterBand(2); poOutBand_2->RasterIO

    18820

    基于C++ GDAL依据像元个数批量裁剪栅格图像

    在之前的文章中,我们多次介绍了在不同平台,或基于不同代码语言,对栅格遥感影像加以裁剪、批量裁剪的方法,主要包括ArcPy依据矢量要素裁剪多张栅格图像,以及ArcPy栅格裁剪:对齐多个栅格图像的范围、统一行数与列数...#include #include #include gdal/gdal.h> #include gdal/gdal_priv.h> using namespace...GDALRasterBand *poOutputBand = poOutputDataset->GetRasterBand(bandIndex); poBand->RasterIO...首先,我们需要通过GDALAllRegister();,来注册所有的GDAL驱动器。...首先,创建一个大小为xSize * ySize的浮点型缓冲区,并使用poBand->RasterIO从输入文件中读取对应波段的像元数据到缓冲区;接下来,使用poOutputBand->RasterIO将缓冲区中的数据写入到输出文件对应波段中

    13210

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

    其中,关于C++语言配置GDAL库的方法,大家可以参考文章Visual Studio配置C++的GDAL库!。...GDALRasterBand* poBand; poBand = poDataset->GetRasterBand(1); poBand->RasterIO...随后,基于GDALAllRegister这一GDAL库的初始化函数,用于注册所有支持的数据格式驱动程序。...其中,在对缺失的栅格图像加以生成时,我们首先使用GetGDALDriverManager()->GetDriverByName函数获取GDAL驱动程序对象,然后使用CreateCopy函数创建新的栅格图像...随后,我们用0填充新创建的栅格图像,并使用RasterIO函数对栅格图像的像元进行写入操作。   最后,在上述处理完成后,使用GDALClose函数关闭数据集,并输出新创建的栅格图像的文件名。

    26130
    领券