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

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

我们希望实现的,就是基于这个文件夹内每一景遥感影像,将其左上角100 * 100像元的这一部分给裁剪下来(如下图所示),并分别保存为新的遥感影像文件(其中,新的文件名称就在原有文件名称后加一个_C后缀即可...其次,我们通过CPLStringList fileList;定义一个字符串列表,用于存储文件夹中的文件列表;并使用VSIReadDir函数读取输入文件夹中的所有文件,并将结果存储在fileList中。...接下来,对于文件的扩展名是tiff的,我们构建完整的输入文件路径,并使用GDALOpen函数打开输入文件,返回一个GDALDataset对象,存储在poDataset中。   ...首先,创建一个大小为xSize * ySize的浮点型缓冲区,并使用poBand->RasterIO从输入文件中读取对应波段的像元数据到缓冲区;接下来,使用poOutputBand->RasterIO将缓冲区中的数据写入到输出文件对应波段中...随后,即可释放缓冲区内存,并关闭输出文件和输入文件。   运行上述代码,我们即可在结果文件夹中看到已经裁剪好的遥感影像文件,且新的文件的文件名称也符合我们的要求;如下图所示。

13510

使用 EarthPy 堆叠和裁剪tif栅格数据

堆叠多波段影像 一些遥感数据集与每个波段一起存储在单独的文件中。然而 通常,您希望在分析中同时使用所有波段。例如 您需要将所有条带放在同一个文件或“堆栈”中才能绘制颜色 RGB图像。...合并多个文件 stack函数具有可选的输出参数,您可以在其中编写栅格 添加到文件夹中的 TIFF 文件。如果要使用此功能,请确保有 是要将 TIFF 文件写入的文件夹。...然后,循环浏览您要裁剪的每个文件并裁剪图像,然后 将其写出到文件中。获取创建的栅格并将它们堆叠起来,就像 您在前面的示例中堆叠了条带。...''es.crop_all()'' 是一种快速裁剪图像中所有波段的有效方法。 该函数会将裁剪的栅格写入 目录并返回文件路径列表,然后可以与 ''es.stack()''。...此函数获取 Rasterio 对象并将其裁剪为提供的 空间范围。

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

    遥感影像依据分幅号的8天合成:Python实现

    同时,这些遥感影像文件的文件名顺序还不完全是时间顺序,因为其文件名开头还有一些表示其他含义的字段(如传感器名称),而这些不同字段对应的遥感影像文件同样具有多个成像时间。...我们希望实现的是,从2022年第001天开始,到第365天结束,对于每1个分幅,将其每1个8天时间范围内的所有遥感影像(无论是来自哪一个传感器)拼接在一起。...接下来,基于ListRasters("*", "tiff")获取待拼接的所有.tif格式栅格文件,并将其排序后存储在image_list列表中;image_dict是一个字典,用于存储栅格影像按日期和分幅号进行分组的结果...,从而将每1种分幅中,处于同1个8天时间间隔的遥感影像放在一起;for循环遍历image_list中的每个影像文件,并使用正则表达式re.search提取影像文件名中的日期信息——其中,需要提取年份image_year...运行上述代码,首先将看到如下图所示的界面;表示正在基于遥感影像的文件名,将其放置到不同的字典中——这个字典就是根据遥感影像成像时间与分幅号来表示的。

    13810

    多值提取至点Python实现:找到不同栅格相同位置像元

    现在有2景成像范围不完全一致、但是具有重叠部分的遥感影像,如下图所示;我们就将其称作大遥感影像(成像范围更大的、灰色系的那一景遥感影像)和小遥感影像(成像范围更小的、蓝色系的那一景遥感影像)。...这里需要注意,如果待处理的2景遥感影像一个为地理坐标系,一个为投影坐标系,那么首先需要将2景遥感影像都处理为同一种类型的坐标系(建议都处理为投影坐标系);具体处理方法,大家可以参考GDAL命令:一行代码转换坐标系这篇文章...在本文中,numpy用于处理数组数据,gdal则用于读取栅格数据文件和获取地理转换参数。   随后,我们定义了几个关键的函数。...其中,raster2array()用于将栅格数据文件读取为numpy库的数组,get_geotransform()用于获取栅格数据文件的地理转换参数,get_pixel_size()用于从地理转换参数中提取像素大小...执行上述代码后,我们来检查一下代码的运行是否符合预期。因为大遥感影像的空间分辨率低一些,所以我们就用它来验证我们的结果(空间分辨率低一些的话,验证起来反而更方便)。

    28710

    geotrellis使用(四)geotrellis数据处理部分细节

    前面写了几篇博客介绍了Geotrellis的简单使用,具体链接在文后,今天我主要介绍一下Geotrellis在数据处理的过程中需要注意的细节,或者一些简单的经验技巧以供参考。...一、直接操作本地Geotiff   如果不想将tiff数据切割成瓦片存放到集群中,也可以直接使用Geotrellis操作本地geotiff文件,可以直接使用SinglebandGeoTiff读取单波段的...tiff,使用MultibandGeoTiff读取多波段tiff。...二、Geotiff数据处理需要注意的细节        如果需要将geotiff数据切割并上传到集群首先需要处理的是geotiff的数据类型、无数据值等元数据信息,即前期处理数据的时候需要将tiff文件处理到合适的情况以方便在程序中使用...六、结束语    本文简单记录了近期使用Geotrellis过程中遇到的一些问题,及其解决方案,目前项目只用到了栅格数据,所以只是针对Raster模块,后续会探索其他模块功能,并随时将心得发布到博客园中

    1.2K50

    大栅格数据如何更快运算

    背景介绍 这两周我在使用python进行大量的栅格数据的运算,在运算过程中遇到了数据量超级大但算力不足的问题。通过这两周的探索,也慢慢找到了一些加快栅格数据计算的方法,和读者分享。...(2)分块运算还是超过内存,使用mmap_array数组的运算 如果分块运行还是超过内存大小,这个时候就需要考虑将分块数据的中间数据存在硬盘中,等需要的时候再去读取。..._mmap.close() (3)数据读取写入速度慢,在固态硬盘中运行 刚开始我使用了机械硬盘作为数据的运行盘和数据保存盘。...但硬盘的写入速度和读取速度经常爆100%,这个时候就知道了mmap_array数组需要和内存进行快速的读取和写入,由于mmap_array数组默认是保存到python脚本的同级目录之下,所以为了突破硬盘的限制...但是转为使用gdal模块后,输出数据的详细参数我可以直接控制,因此将输出的栅格数据进行DEFLATE压缩。为什么选择DEFLATE压缩?我这里考虑的是使用无损压缩、压缩率较高。

    37120

    ArcMap中构建金字塔详解

    从金字塔的底层开始每四个相邻的像素经过重采样生成一个新的像素,依此重复进行,直到金字塔的顶层。...数据库服务器会根据用户的显示比例自动选择最适合的金字塔等级。如果不使用金字塔 (pyramid),则必须从磁盘中读取整个数据集,然后将其重采样为更小的大小。...每个栅格数据集只需构建一次金字塔,之后每次查看栅格数据集时都会访问这些金字塔。栅格数据集越大,创建金字塔集所花费的时间就越长。但是,这也就意味着可以为将来节省更多的时间。...如果按照默认的设置,完整的构建出影像金字塔,耗费的时间一定会较长,所以可以根据需要进行金字塔级别设置。...所以,重建金字塔时,需要删除rrd和rde文件。为了防止重建金字塔失败,可以先把数据备份一下。

    89310

    ApacheHudi使用问题汇总(二)

    如何压缩(compaction)MOR数据集 在MOR数据集上进行压缩的最简单方法是运行内联压缩(compaction inline),但需要花费更多时间。...对于增量视图( Incremental views),相对于全表扫描所花费的时间,速度更快。...如何避免创建大量小文件 Hudi的一项关键设计是避免创建小文件,并且始终写入适当大小的文件,其会在摄取/写入上花费更多时间以保持查询的高效。...例如,对于 compactionSmallFileSize=100MB和 limitFileSize=120MB,Hudi将选择所有小于100MB的文件,并尝试将其增加到120MB。...这将过滤出重复的条目并显示每个记录的最新条目。 9. 已有数据集,如何使用部分数据来评估Hudi 可以将该数据的一部分批量导入到新的hudi表中。

    1.8K40

    ArcGIS处理nc数据

    降水温度蒸散发等气象数据通常以NC格式存储,可以用Matlab和ArcGIS读取数据。常为逐年逐月逐日数据。在用GIS进行数据分析时,需要将其转换为栅格数据。 (1)打开nc数据。...(2)右键导入的nc数据生成的raster图层,选择properties-NetCDF-Band Dimension选择时间。...(3)如果处理的数据没有定义坐标系,则需要自己定义栅格文件的坐标系注意这里是定义整个数据框的坐标系而不是栅格图层的右键Layers-Properties-Coordinate System-new Project...System (4)输出NC转换成的栅格数据,右键栅格图层选择Data-Export Data, Spatial reference 选择Data Frame, 数据格式Format可以选择TIFF...之后就可以作为栅格数据在GIS中进行后续分析了。

    2K40

    python与地理空间分析(一)

    本文将讨论一些常用的地理空间数据,对地理空间分析的对象做一个大概的了解。...常用的栅格数据格式包括: TIFF文件 标记化图片文件格式(TIFF)是地理空间最常用的栅格格式。TIFF文件可以包含多波段,整型高程数据,基本元数据,内部压缩以及其他常用的存储辅助信息的文件格式。...通常这些格式依赖于相关的地理参考信息的辅助文本文件才能够在GIS软件中使用,例如WKT,prj等文件。 压缩格式 地理空间栅格数据往往占用的空间比较大,需要采用高级的压缩算法进行存储。...TIFF格式支持的压缩算法包括Lempel-Ziv-Welch算法。压缩算法节省了数据的存储空间,但数据本身会被修改,丢弃了部分原始数据信息,因此在做分析中需要注意。...ASCII格式 ASCII网格文件就是将栅格数据存放在一个文本文件中,包含数据本身和数据的信息,通过文件头,读取数据。

    8.1K52

    GeoTrellis整体介绍

    简介 GeoTrellis是一个基于Apache spark 的用于处理栅格数据的scala库和框架 1.可以高效的读/写和操作栅格,实现了地图运算和矢栅转换工具 2.可以将栅格数据渲染成PNG图片...GeoTrellis是针对大数据量栅格数据进行分布式空间计算的框架,所以无论采取何种操作,都是先将大块的数据切割成一定大小的小数据(瓦片),这是分治的思想,也是分布式计算的精髓。...service类需要继承Actor方法,并覆盖父类的receive方法。...普通tiff数据导入的时候条用ETL类的方式: Etl.ingestProjectedExtent, SpatialKey, Tile 时间序列数据导入时: Etl.ingestTemporalProjectedExtent...,tileReader为AccumuloValueReader实例 这样就能将用户请求的时间以及x、y、z瓦片数据渲染之后发送到前台,这里还需要强调的是Geotrellis中时间处理采用joda开源框架

    42710

    geotrellis使用(十四)导出定制的GeoTiff

    ,没能继续推进Geotrellis项目开发,周末和这两天抽空又实现了一个功能——导出自定义的Tiff文件。...二、需求说明        很多时候我们需要从一块(或者很多块)大的Tiff中根据需要截取一部分数据,并且需要采用某种采样方式转成特定的投影,并转成需要的数据类型。...2.数据导入        要想处理大数据或者处理多块栅格数据就不能直接处理栅格数据,可以先将栅格数据导入到Accumulo中,当然导入之后是一块块的瓦片,这部分在geotrellis使用(三)geotrellis...3.读取数据        Accumulo中已经存储了需要的数据,并且后台接收到了前台用户选择的区域范围以及投影方式、数据类型、采样方式,这样我们就可以开始实现读取需要的数据,简单的说就是从Accumulo...四、总结        以上就是使用Geotrellis实现导出定制的GeoTiff的方法,由于时间紧,可能还有很多没有注意的细节,会在后续中进一步研究,并更新该文或者另设新篇。

    98960

    geotrellis使用(三十一)使用geotrellis直接将GeoTiff发布为TMS服务

    前言 传统上我们需要先将Tiff中存储的影像等数据先切割成瓦片,而后再对外提供服务。这样的好处是服务器响应快,典型的用空间来换时间的操作。...而且这样不仅仅是节省了存储空间的问题,何况我们有时可能只是为了查看数据情况(大量的Tiff文件,无法或者不方便逐一打开),这时不需要事先切割,就能查看大量Tiff文件的数据情况,并且可以逐级缩放。...主要是读取Tiff文件,并将其根据瓦片编号切割成256*256的小块并附带key(row,col)信息,这样我们就能根据前台发送的key值信息查找后返回相应的瓦片。...2.1 读取Geotiff文件 使用Spark读取Geotiff文件,并将其转成RDD。...文件的存放位置,最好是将tiff文件存储于HDFS中,第二行便得到了需要的rdd,其类型为RDD[(ProjectedExtent, MultibandTile)],其实此处已经完成了Geotiff的读取和瓦片的切割两步功能

    1.3K90

    Python | GDAL处理影像

    GDAL栅格数据处理 栅格数据介绍 栅格数据读取 读取部分数据集 坐标变换 重采样 什么是栅格数据 基本上是一个大的二维或三维数组 没有独立的几何对象,只有像素的集合 二维:黑白图片 三维:彩色/假彩色...'nat_color.tif', in_band.XSize, in_band.YSize, 3, in_band.DataType) # 重要:获取空间信息 # 第一句:得到投影(SRS)并复制到新的数据集...# 第二句:得到geotransform信息并复制到新的数据集 # 两者的信息都很重要。...如果需要,数据将会重采样以适应这个数组,值将会转换为这种数组的类型。 读取部分数据集举例: 从第1400列,6000行开始,读取6列3行,不做重采样 注意读取数据的数组下标不要越界!...,只考虑了像素偏移,没有考虑真实世界的坐标 坐标的转换并不困难,需要用到: 栅格数据的SRS(空间参考)信息 geotransform也就是栅格数据的地理变换信息 需要使用GDAL提供的函数 ApplyGeoTransform

    4.5K31

    Python中arcpy栅格创建与多景遥感影像批量拼接

    、时间等分为很多不同的部分,每一部分拼接在一起),可以参考Python中gdal栅格影像读取计算与写入及质量评估QA波段筛选掩膜,利用其中的循环方式实现需求。   ...如果大家的需求不是批量拼接栅格数据,而是单纯想利用arcpy进行新栅格的创建,那就只看这一部分的代码即可。   ...在这里需要注意:尽可能在将要拼接时选择新栅格为"16_BIT_SIGNED"及以下的数据格式(具体数据格式类别如下图),且将file_path路径下待拼接的栅格数据的数据格式也全部修改为这一格式;否则可能会由于数据量大而导致拼接过程极慢...我之前就是由于选用了32 bit float格式的栅格数据进行拼接,导致全球范围的MODIS一个植被产品数据拼接花了将近一天的时间。...代码最后的一个for循环,就是遍历file_name_list中的各个栅格数据,并通过arcpy.Mosaic_management()函数加以拼接即可。   以上,便完成了本次批量拼接的操作。

    38530

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

    另,最近Github貌似被墙了,所以你懂的。推荐使用Lantern,请自行百度之。 三、优雅切割        为什么叫优雅的切割,其实我这里倒不是卖弄文字,主要是为了与Gdal的方式相区别。...所以我这里称其为优雅的方式。        我们大致需要经历读取影像、投影转换、读取shp、切割、显示等几个步骤。下面逐一介绍。 3.1 读取影像        采用rasterio进行影像读取。...dst = rio.open(newtiffname, 'w', **kwargs)打开一个新的影像其模式w表示写入。        最后循环原始影像的所有波段,逐一进行投影变换并写入新的影像。...3.3 读取shp        这在上一篇文章中也已经做了详细描述,不再赘述,需要强调的时此处也需要将shp进行投影转换,使其与我们要处理的影像一致,所以简单的方式就是直接读取影像的投影信息,将shp...当然本文没有介绍如何对遥感影像进行处理,其实非常简单,当我们读出影像数据之后,其就是一个numpy的array对象,已经变成了纯数学问题,处理完之后只需要附加投影等信息写入新的tiff文件即可。

    5.4K110

    geotrellis使用(三十三)关于Geotrellis读取Geotiff的两个细节

    一、问题描述 无论在将Tiff文件使用Geotrellis导入Accumulo中还是直接将其发布为TMS服务,其实这中间都存在一个问题:当多个Tiff文件存在重叠部分的时候如何接边、去重叠以及在边界处的瓦片如何取出各...但是这样又出现了另一个问题,如果一次读入所有文件势必会造成处理速度很慢,那么我们为什么不能只取出当前瓦片涉及到的文件呢,如果只涉及一个Tiff就取一个,如果涉及到多个Tiff就取多个。...三、实现方案 整体实现方案如下: 判断并取出与请求的瓦片有交集的Tiff文件 将这些Tiff文件作为整体读取rdd并发布TMS 3.1 判断并取出与请求的瓦片有交集的Tiff文件 上一篇文章中已经大致介绍了此块内容...读取每一幅tiff文件然后手动union 两种方案各有利弊,第一种需要自己写读取多个Tiff文件的方案,第二种需要我们手动union,在这里我都介绍一下。...只需要重写上面的读取Tiff的apply方法,将其中的configuration换成此函数即可。

    990110

    在 Node.js 中转换 SVG 图像格式

    介绍 你需要将SVG文件转换为PNG、JPEG、TIFF、WEBP 和 HEIF 格式吗?本文将指导你如何转换为所有这些类型的格式。...目录 安装 Sharp Npm 包 SVG 转 PNG SVG 转 JPEG SVG 转 TIFF SVG 转 WEBP SVG 转 HEIF 安装Sharp Npm Package 首先你需要安装 npm...然后,我们用 sharp 包来读取我们的 file.svg 文件,将其转换为 PNG 并使用 .toFile() 函数将新的 PNG文件写入你的目录。...sharp 方法是一个 promise,我们用它来获取文件的 info。 最后,我们用 .catch() 方法来捕获并 console.log() 所有错误。...SVG 转 TIFF 接下来,让我们将SVG文件转换为标记图像文件格式(TIFF)文件。确保你在项目目录的根目录中有一个我们可以使用的SVG文件。

    5.6K40

    原创丨利用ArcGIS制作多年栅格渐变

    这次的批量出图可是格式不一样了噢,是利用某个单独的范围去批量出这个范围内多年的栅格数据。注意每一步的阅读噢! Ps:演示用的是NPP净初级生产力数据,时间跨度为2006-2015年的逐月数据。...正文部分 小编为什么会想出这种方法呢,起源是因为我的一个朋友——人见人爱的宝儿姐需要做多年土地利用变化图,简单介绍一下,她是风景园林专业的博士噢!(啊,一写到这里,瞬间想当她的小跟班!)。...● 非托管方式:非托管栅格目录呢,它将仅包含一些链接或指针,用于连接栅格目录中的行和存储在地理数据库外部的栅格数据集,这些栅格数据集将存储在地理数据库外部,但是啊,这个加载到非托管栅格目录中的所有栅格数据集必须为磁盘上的文件...STEP 04 加载输出完毕的栅格目录进ArcMAP,并插入新的数据框,设置数据驱动工具 看下图,刚刚添加进来的数据是这样的,是一个矩形面,并没有我们想用的栅格数据显示在工作界面中,出现这种问题的原因呢...右击我们原始图框,点击“激活”; 找到我们的数据驱动页面设置工具,依然是启用数据驱动,索引的数据框呢,选择我们新插入的那个数据框,索引图层选择我们粘贴的栅格目录,后面的一些设置就根据自己的具体情况去设置了

    2K20
    领券