Java是一种跨平台的编程语言,可以用于许多应用程序的开发,在进行文件处理时也有多种方法可以用来实现。其中包括文件压缩和解压缩,这在许多场合下都是非常有用的。...下面是一段Java代码,演示如何使用ZipOutputStream类来创建一个名为“compressed.zip”压缩文件,并向其中添加两个文件: import java.io.*; import java.util.zip...接着,我们将需要压缩的两个文件存储到一维数组变量files中,每次循环对其中一个文件进行处理,在ZipOutputStream建立的压缩文件compressed.zip中添加这个文件,并关闭压缩项。...下面是一段Java代码,展示如何使用GZIPOutputStream类来创建一个名为“compressed.gz”压缩文件: import java.io.*; import java.util.zip...接着,在while循环中,我们向文件系统写入读取自该输入流的文件,如果存在更多的条目,则重复进行此操作。最后,我们关闭整个解压缩过程。
题目 图像文件压缩。使用PIL库对图像进行等比例压缩,无论压缩前文件大小如何,压缩后文件大小小于10KB。...image.save(f_path) size = os.path.getsize(f_path)/1024 else: break str_info = "压缩完成
pro自带的arcpy进行数据计算,但arcpy数据生成结果是没有被压缩过,每一期的数据都会生成200G大小的栅格数据。...但是转为使用gdal模块后,输出数据的详细参数我可以直接控制,因此将输出的栅格数据进行DEFLATE压缩。为什么选择DEFLATE压缩?我这里考虑的是使用无损压缩、压缩率较高。...我画个简单的示意图: 代码示例 在这个代码中,我使用了分块技术进行栅格的运算,使用mmap_array存储中间数据映射内存文件,同时考虑到固态硬盘容量有限进行了数据转移,也使用了多线程技术达到了电脑的性能瓶颈...(3)固态硬盘用来存放中间文件mmap,固态硬盘不够大,可以像我一样,把生成文件移动到机械硬盘中去 (4)tif文件超过4G,要记得gdal导出栅格时参数设置为“BIGTIFF=YES” (5)栅格分块跑数据...(8)尽量使用gdal库跑数据,其他的地理空间第三方库比如arcpy有很多参数无法自己调整,比如指定导出的栅格压缩类型。
数据的读取,我这里使用Sentinel-2光学卫星数据给出使用GDAL工具对其进行读取的方法。...下载下来的Sentinel数据是一个ZIP压缩包,里面包含了JPEG2000格式的影像数据以及一些XML格式的元数据文件。...对于HDF或者NetCDF格式数据的读取参考我的博文:读取HDF或者NetCDF格式的栅格数据 使用GDAL命令行读取Sentinel数据的元数据信息 直接使用gdalinfo [文件名]可以查看Sentinel...文件的元信息,如下图所示: image.png 从上面的图中我们可以看到所有的Subdatasets的文件全名,这样我们可以继续使用gdalinfo [子数据集全路径]的方式查看具体的子数据集的元数据信息...[sentinel subdataset full name] [output filename]命令进行 下面的例子将包含红绿蓝近红外波段的数据子集转为GeoTIFF影像 gdal_translate
常用的栅格数据格式包括: TIFF文件 标记化图片文件格式(TIFF)是地理空间最常用的栅格格式。TIFF文件可以包含多波段,整型高程数据,基本元数据,内部压缩以及其他常用的存储辅助信息的文件格式。...通常这些格式依赖于相关的地理参考信息的辅助文本文件才能够在GIS软件中使用,例如WKT,prj等文件。 压缩格式 地理空间栅格数据往往占用的空间比较大,需要采用高级的压缩算法进行存储。...此外python中也提供了元素树(ElementTree)解析XML的工具,允许使用路径样式的语法对XML文档进行查询。...文件进行读写和编辑 Shapely Shapely在wkt操作中有了简单的演示,可以提供对矢量数据的读写,但是着重于对矢量数据的几何操作。...,如果只是轻量级处理图像,可以使用PNGCanvas库进行代替。
('HFA_USE_RRD', 'YES') dsOut.BuildOverviews(overviewlist=[2,4,8,16])#4层 补充知识:运用Python的第三方库:GDAL进行遥感数据的读写...0 背景及配置环境 0.1 背景 GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。...它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。...这个开源栅格空间数据转换库拥有许多和其他语言的接口,对于python,他有对应的第三方包GDAL,下载安装已在上篇文章中提到。...目的: 可以使用Python的第三方包:GDAL进行遥感数据的读写,方便批处理。
GDAL栅格数据处理 栅格数据介绍 栅格数据读取 读取部分数据集 坐标变换 重采样 什么是栅格数据 基本上是一个大的二维或三维数组 没有独立的几何对象,只有像素的集合 二维:黑白图片 三维:彩色/假彩色...>无符号整数 概视图:递减分辨率,用于大数据快速显示 有损压缩与无损压缩:地理科学数据应使用无损压缩 GDAL数据集的基本结构 栅格数据读取 driver.Create(filename, xsize...This will be overwritten if it exists. # 使用驱动对象来创建数据集,因为使用的是GeoTIFF驱动,无论给它任何扩展名,输出的文件都是GeoTIFF gtiff_driver...= gdal.InvGeoTransform(gt) 使用逆变换将坐标转换为数组偏移量 offsets = gdal.ApplyGeoTransform(inv_gt, 465200, 5296000...out_band.WriteArray(data) del out_ds # 打开QGIS,或者ArcGIS,看看输出文件 重采样 在数据读取的时候就可以一并进行重采样 band.ReadAsArray
已知我们对大量遥感影像进行了批量读取与数据处理操作;而随后,就需要对我们处理后的栅格数据再进行输出,即建立新的大量的栅格遥感影像,并将我们处理后的像元数据依次输入进去。 ...首先,因为是需要对大量的栅格进行批量操作,所以代码整体是在for循环中进行的,每一个循环都是对一个独立的栅格文件的创建、数据写入与文件保存操作;其中,"GTiff"表示我们将要生成的栅格文件是.tif格式的...LZW算法进行压缩等。 ...至此,我们仅仅是完成了GDAL库中栅格文件的创建,但此时还没有将数据导入进去,因此在资源管理器中也是看不到具体的新的栅格文件的。...完成以上工作后,我们就完成了对其中一景遥感影像的创建、写入,此时资源管理器中就会看到这一景图像的文件已经存在。随后,通过GDALClose()函数将刚刚指向的栅格遥感文件关闭,并进行下一次循环。
以一个简单例子说明如何打开栅格影像 下面的例子打开一副GeoTIFF影像,输出了影像的一些信息,然后遍历了所有波段,输出波段的一些信息 import gdal # 打开栅格数据集 ds = gdal.Open...Dataset转为Numpy的ndarray 当我们得到Band对象以后,如果按照GDAL的C/C++接口惯例,我们可以使用WriteRaster()方法进行数据写入(C/C++接口是WriteBlock...下面介绍几种转换的方法: 在Dataset级别进行转换,转换结果是一个三维数组,第一个维度是波段数 在Band级别进行转换,转换的结果是一个二维数据 使用gdal_array模块中的LoadFile()...函数直接进行(相当于第一种转换) import gdal # 打开栅格数据集 ds = gdal.Open('example.tif') # 在数据集层面转换 image = ds.ReadAsArray...文件打开失败!')
Geoserver支持发布Erdas Img格式的数据源,需要用GDAL的插件对Geoserver进行扩展,本文讲述如何在Geoserver中配置并支持Erdas Img格式的数据源。...geoserver默认支持的栅格数据源 配置步骤 1、相关jar文件的下载与拷贝 下载Geoserver对应版本的gdal-plugin,并将之拷贝到Geoserver的安装路径.....\webapps\geoserver\WEB-INF\lib下,如有文件重复,直接覆盖拷贝即可; ? 注意: GDAL的版本一定要一致!...为方便大家使用,我下载了比较新的版本到我的百度网盘,其中: Geoserver2.8.1 链接:http://pan.baidu.com/s/1hshOdaG 密码:yev9 geoserver-...注意: 解压的文件夹该用户一定要有访问权限。
GDAL库由OGR和GDAL项目合并而来,OGR主要用于空间要素矢量矢量数据的解析,GDAL主要用于空间栅格数据的读写。此外,空间参考及其投影转换使用开源库 PROJ.4进行。...GDAL提供了C/C++借口,并且通过SWIG提供了Python,Java,C#等的调用借口。当我们在Python中调用GDAL的API函数时,其实底层执行的是C/C++编译的二进制文件。...GDAL 1.x版本以前,对于栅格和矢量数据的读写API借口设计是相对分离的,从2.x版本开始,栅格和矢量数据的API进行了集成,对开发者更加友好。我们这里的示例都是以2.x版本为例。...栅格数据组织 GDAL中使用dataset表示一个栅格数据(使用抽象类GDALDataset表示),一个dataset包含了对于栅格数据的波段,空间参考以及元数据等信息。...) 元数据(键值对的集合,用于记录和影像相关的元数据信息) 栅格波段(使用GDALRasterBand类表示,真正用于存储影像栅格值,一个栅格数据可以有多个波段) 颜色表(Color Table用于图像显示
但是,由于后期处理的需要,我们现在希望对这些缺失日期的遥感影像文件加以填补——具体的需求是,我们新建若干个像元值全部为0的栅格文件,作为每一个缺失日期当日的遥感影像文件;这些填补的、新的遥感影像文件的各项信息...接下来,我们使用GDALOpen函数,从2018001这一天开始,通过循环打开对应名字的文件,直到找到文件夹中第一个实际存在的栅格图像文件(poDataset_actual),并获取其栅格图像的行列数(...接下来,我们遍历文件名列表all_file_path,对每个文件名进行处理。对于不存在的栅格图像文件,使用GDALDriver创建一个新的数据集(poDataset),并将其中的像元值设置为0。...其中,在对缺失的栅格图像加以生成时,我们首先使用GetGDALDriverManager()->GetDriverByName函数获取GDAL驱动程序对象,然后使用CreateCopy函数创建新的栅格图像...随后,我们用0填充新创建的栅格图像,并使用RasterIO函数对栅格图像的像元进行写入操作。 最后,在上述处理完成后,使用GDALClose函数关闭数据集,并输出新创建的栅格图像的文件名。
dataset.ReadAsArray(0,0,im_width,im_height)#获取数据 这句报错 升级numpy:pip install -U numpy 但是提示已经是最新版本 解决:卸载numpy 重新安装 2.直接从压缩包中读取...tiff图像 参考:http://gdal.org/gdal_virtual_file_systems.html#gdal_virtual_file_systems_vsizip 当前情况是2层压缩:..."掩膜失败,文件无法打开") return im_width = dataset.RasterXSize #栅格矩阵的列数 print('im_width:', im_width) im_height...= dataset.RasterYSize #栅格矩阵的行数 print('im_height:', im_height) im_bands = dataset.RasterCount #波段数...您可能感兴趣的文章: 利用python GDAL库读写geotiff格式的遥感影像方法 在python中利用GDAL对tif文件进行读写的方法 浅谈python下tiff图像的读取和保存方法 用python
上一篇博文PostGIS导入导出ESRI Shapefile数据介绍了如何导入空间矢量数据到PostgreSQL中,紧接上一篇,本文将介绍如何使用PostGIS导入导出空间栅格数据。...使用如下命令进行影像数据的插入,具体参数的含义这里不在累赘,上篇文章有说明。关于raster2pgsql的参数可以使用man命令进行查看。...可以看到有一个rid和rast的列,rid是以一个整形对插入的栅格数据进行的标示,rast列的类型是raster存储了具体数据。 ---- 如果想要导出数据,可以使用PostGIS提供的内置函数。...注意:PostGIS的默认导出GDAL支持的格式数据是关闭的,启用的话需要修改PostgreSQL的配置文件。修改的方法比较多,而且不同的PostgreSQL版本的支持情况不一样。...我使用如下命令进行修改: sudo vim /etc/postgresql/9.5/main/postgresql.conf 在该配置文件后面添加: postgis.gdal_enabled_drivers
Rasterio是基于GDAL库二次封装的更加符合Python风格的主要用于空间栅格数据处理的Python库。...Rasterio中栅格数据模型基本和GDAL类似,需要注意的是: 在Rasterio 1.0以后,对于GeoTransform的表示弃用了GDAL风格的放射变换,而使用了Python放射变换的第三方库affine...如果你需要计算某个行列号的地理坐标,直接使用行列号跟给放射变换对象相乘即可,完全符合数学上矩阵乘法的操作,更加直观和方便。...栅格数据读取代码示例 下面的示例程序中演示了如何读取一个GeoTIFF文件并获取相关信息,需要注意的是: rasterio使用rasterio.open()函数打开一个栅格文件 rasterio使用read...函数可以将数据集转为numpy.ndarray,该函数如果不带参数,将把数据的所有波段做转换(第一维是波段数),如果指定波段,则只取得指定波段对应的数据(波段索引从1开始) 数据的很多元信息都是以数据集的属性进行表示的
其中,我们首先需要遍历这一文件夹,遴选出其中所有类型为.bmp格式的栅格遥感影像文件(一共有6个),并分别读取文件(已知这些遥感影像的行数、列数都是一致的);随后,将不同遥感影像的同一个位置的像素的数值进行分别读取...\n" << endl; } 这一部分主要就是做好调用自定义函数get_need_file()的变量准备,并调用get_need_file()函数,得到指定文件夹下的栅格文件;随后,将栅格文件的筛选结果进行输出...1.3 栅格文件读取 这一部分主要是基于GDAL库,循环读取前述文件夹中的每一个栅格遥感影像文件。...这里我们通过new实现对pafScanline内存的动态分配,因为我们在获取栅格遥感影像的景数(也就是文件夹中栅格遥感影像文件的个数)之前,也不知道具体需要给pafScanline这一变量分配多少的内存...在这里,由于同样的原因,我们对pixel_paf亦进行了内存的动态分配。
前期推文Python中gdal栅格影像读取计算与写入及质量评估QA波段筛选掩膜详细介绍了基于Python语言gdal等模块实现遥感影像栅格数据的读取,以及基于质量评估(QA)波段实现栅格像元筛选与掩膜的全部操作...也就是说,本文重点不在于代码的讲解(具体代码在前述这一篇推文中已经很详细地介绍了),而是将上述代码在更为具体的一个实践中加以应用,告诉大家该如何选择波段、处理质量评估QA波段并进行筛选操作等。...格式栅格文件而言具有重要意义。 ...结合上图,我们可以对照下图这样一个实例进行理解: 结合以上基本信息,我们已经对MCD15A3H产品的基本信息有了一定了解。接下来就可以进行栅格数据的读取与处理、筛选了。 ...在这里需要注意的是,之前的两篇推文:Python中gdal栅格影像读取计算与写入及质量评估QA波段筛选掩膜以及Python中gdal读取多波段HDF栅格影像并绘制直方图中,已经对本次所要用到的大部分需求与代码加以实现并进行了详细讲解
本文介绍基于C++语言GDAL库,为CreateCopy()函数创建的栅格图像添加更多波段的方法。 ...在C++语言的GDAL库中,我们可以基于CreateCopy()函数与Create()函数创建新的栅格图像文件。...这就需要我们在调用CreateCopy()函数之后,进行一些额外的操作。 ...首先,GDAL库提供了AddBand()函数,可以为GDALDataset*类型的数据添加波段;但是,AddBand()函数对于大部分格式的栅格图像而言都不起作用——例如,最常见的.tif格式的栅格图像文件...,创建新的.tif格式的栅格图像文件,并对新的图像文件的3个波段依次赋值的全部过程。
第一个使用 QGIS,另一个使用纯 Python。 此处显示的方法使用该gdal_fillnodata工具应用反距离加权插值和平滑。...正如文档中所指出的,这适用于填充连续栅格数据(例如高程)中的缺失区域。它也适用于不同数据(例如航拍图像)中的非常小的差距。如果您希望插入点数据以创建栅格,则应改用该gdal_grid工具。...这在 QGIS 中的处理 → 工具箱 → 栅格分析 → 网格... 修复 QGIS 中的数据缺口 GDAL 带有一个工具 gdal_fillnodata,可以从 QGIS 的处理工具箱中使用。...保存带有01_等前缀的文件很重要,因为下一步将按文件名的字母顺序合并波段。 对波段 2(绿色)和波段 2(蓝色)重复该过程,为它们选择合适的文件名。您应该有 3 个没有填充数据值的单独栅格。...现在我们可以将它们合并到一个文件中。从处理工具箱中搜索并找到合并工具。 在合并工具中,选择所有 3 个单独的栅格。选中将每个输入文件放入单独的带框。输入输出的文件名,然后单击运行。
本文详细介绍基于Python语言gdal等模块实现多波段HDF栅格图像文件(即.hdf文件)的读取、处理与像元值可视化等操作。...此外,基于gdal等模块读取.tif格式栅格图层文件的方法可以查看Python中gdal实现多幅栅格影像批量绘制直方图,读取单波段.hdf格式栅格图层文件的方法可以查看Python中gdal栅格影像读取计算与写入及质量评估...本文期望实现的需求为:现有一存放.tif格式的全球LAI产品栅格数据的路径,需将这一路径下的全部LAI产品栅格数据依据另一路径下存放的全球MODIS植被覆盖类型产品栅格数据进行像元分类,并绘制全球每一种植被类型对应的...在这里,由于有前述两篇推文作为铺垫,本文对代码的讲解就着重于多波段HDF栅格图像文件的读取部分;其它内容由于前面两篇推文已经详细介绍,这里就不再赘述~ 首先将本文所需代码展示如下: # -*- coding...:首先,多波段.hdf格式文件的读取在一开始与单波段.hdf格式文件或.tif格式文件的读取一致,即通过gdal.Open()函数实现;但随后,需要额外借助len()函数获取HDF文件对应的波段数量。
领取专属 10元无门槛券
手把手带您无忧上云