GDAL 3.8.0 版本发布详情

GDAL 3.8.0 版本发布详情


发布日期: 2023-11-21 更新日期: 2023-11-21 编辑:xuzhiping 浏览次数: 378

标签:

摘要: GDAL/OGR 3.8.0 已于近日发布。GDAL/OGR 是一个用于栅格和矢量文件格式、数据库和 Web 服务的 C++ 地理空间数据访问库。它包括多种语言的绑定以及各种命令行工具,网址:http://gdal.org/。 3.8.0 版本是一个新的功能...

GDAL 3.8.0 版本发布详情

GDAL/OGR 3.8.0 已于近日发布。GDAL/OGR 是一个用于栅格和矢量文件格式、数据库和 Web 服务的 C++ 地理空间数据访问库。它包括多种语言的绑定以及各种命令行工具,网址:http://gdal.org/。

3.8.0 版本是一个新的功能版本,具有以下亮点

  • 为 OGC 特征和几何 JSON 添加 JSONFG 读/写矢量驱动程序
  • 为包含 MVT PBF 切片的 PMTiles v3 数据集添加 PMTiles读/写矢量驱动程序
  • 为 S-102 测深产品添加 S102 光栅只读驱动程序(取决于libhdf5)
  • 添加 gdal_footprint 实用程序:计算光栅文件的占用空间, 考虑到 nodata/mask band, 并生成与像素有效区域相对应的多边形/多边形 (#6264)
  • Python 绑定:各种增强功能可减少与对象间所有权关系相关的“陷阱”数量, 以及一些语法糖增强功能
  • 箭头接口:改进读取侧的空间和属性过滤; 使用 OGRLayer::WriteArrowBatch() 添加写入侧
  • GeoPackage:空间索引创建速度更快(大约快 3-4 倍)
  • ARG 驱动程序已弃用:将在 3.9.0 中删除
  • 共享库主要版本的碰撞

以下是有关 3.8.0 版本中的新功能和修复的更多完整信息,也可访问(https://github.com/OSGeo/gdal/blob/v3.8.0/NEWS.md):

GDAL/OGR 3.8.0 发行说明

GDAL/OGR 3.8.0 是一个功能版本。这些注释包括自 GDAL 3.8.0 以来的更改,但尚未包含在 GDAL 3.7.x 错误修复版本中。

兼容性问题

请参阅 MIGRATION_GUIDE.TXT(https://github.com/OSGeo/gdal/blob/release/3.8/MIGRATION_GUIDE.TXT)。

新的可选依赖项

libaec 在 GRIB 驱动程序中启用 CCSDS 自适应熵编码解压缩。

Build

  • 当由于 OGR_BUILD_OPTIONAL_DRIVERS=OFF 而无法启用光栅驱动程序时, 发出更好的错误消息
  • 改进 CURL 和 EXPAT 的静态链接
  • Java 绑定:更改 JNI 共享库的默认安装目录并使用 GDAL_JAVA_JNI_INSTALL_DIR 控制
  • 如果 -DOGR_ENABLE_DRIVER_GPKG=ON,则自动启用 SQLite 驱动程序
  • 如果禁用,请勿使用 libjpeg(且 libjpeg-turbo >= 3.0 可用)(#8336)
  • gdal.pc 生成:使用 CMAKE_INSTALL_INCLUDEDIR/CMAKE_INSTALL_LIBDIR 作为 includedir/libdir (#8012)
  • gdal-config:添加 --plugindir 开关 (#8012)

GDAL 3.8.0 - 变更概述

Port

  • 添加 third_party/fast_float 库以实现 CPLStrtodDelim() 的快速字符串->双重转换;
  • /vsimem/:使其在多线程场景下可以安全使用;
  • /vsimem/:创建文件时隐式创建父目录;
  • CPLParseXML():不调用 CPLErrorReset()
  • CPLJSon:为 uint64_t 添加设置器;
  • 添加具有原始类型的 CPLJSONArray::AddNull() 和 CPLJSONObject 构造函数;
  • VSIUnixStdioHandle / VSIWin32Handle:使 Close() 可多次调用,以便与
    VSIVirtualHandleUniquePtr 友好
  • /vsicurl/: 避免从并发线程同时下载同一区域 (#8041)
  • /vsicurl/ / /vsicurl_streaming/:识别 IGNORE_FILENAME_RESTRICTIONS=YES 打开选 项以跳过任何基于扩展的过滤 (#8162)
  • /vsicurl/:如果使用无效的 CPL_VSIL_CURL_CHUNK_SIZE
    CPL_VSIL_CURL_CACHE_SIZE 值, 则会发出警告 (#8499)
  • /vsicurl_streaming/:如果设置了 GDAL_HTTP_MAX_RETRY ,则实施重试策略
  • /vsis3_streaming/ 等:通过转发到非流文件系统来实现 ReadDir() (#8191);
  • IVSIS3LikeFSHandler::CopyFile():使用非流式源重试以提高稳健性;
  • /vsis3/ 和 /vsioss/:重定向/区域发现管理不易出错
  • /vsiaz/:不要为从 .gdal_marker_for_dir 特殊文件推导的目录附加尾部斜杠
  • /vsiaz/:实现从 /vsis3/、/vsigs/、/vsiadls/、/vsicurl/ 到 /vsiaz 的服务器端复制
  • /vsiaz/:修复当源和目标都是 /vsiaz/ 但位于不同存储桶时的 CopyObject()
  • /vsiaz/:GetSignedURL() 更新到版本 2020-12-06, 限制为 https 并使用 blob 资源类型;
  • /vsi 网络文件系统:通过在本地复制删除文件的初始内容, 支持 CPL_VSIL_USE_TEMP_FILE_FOR_RANDOM_WRITE=YES 下的 r+ 访问;
  • VSISync() 网络到网络:实现 SyncStrategy::TIMESTAMP;
  • 添加 VSIGetCanonicalFilename() ;
  • CPLvsnprintf():处理 '%.*f' 格式;
  • VSIFilesystemHandler:从 ReadDir() 中删除“虚拟”限定符, 现在将其转发到 ReadDirEx();修改所有实现以实现 ReadDirEx()
  • 添加/vsicached?虚拟文件系统,作为与 VSICreateCachedFile() / VSI_CACHE=YES
    相同的另一种方法;
  • VSIFilesystemHandler: CopyFile():检测源文件大小的错误目标文件大小;
  • /vsi7z/:接受 ArcGIS Pro 项目包扩展;
  • cpl_vsil_win32:检查 FlushFileBuffers() 的返回值, 仅当 access=w 或 wb 时才使用;
  • GENERIC_WRITE 打开文件;
  • cpl_vsil_win32:实现 WRITE_THROUGH=YEs 选项以传递给 VSIFOpenEx2L()

Core

  • GDALIdentifyDriverEx() 和 GDALDriver::QuietDelete():不调用
    CPLErrorReset()
  • GDALDataset::Open():考虑 OF_SHARED 模式的打开选项 (#7824)
  • PAM .aux.xml:从 Esri GeodataXform.CoeffX/CoeffY 元素读取地理变换 ( qgis/ QGIS#53125 );
  • 添加 DCAP_FLUSHCACHE_CONSISTENT_STATE 功能, 并修复 GeoJSON、JSONFG、GPKG 驱动程序来实现;
  • 概述/RasterIO 重采样:使用 Float64 作为 Float64 输入数据的工作数据类型 (#8187)
  • 添加 GDALRegisterPlugins 函数来注册所有/仅插件 (#8447);
  • GDALDriver::DefaultCreateCopy():在非严格模式下, 将(忽略的)错误视为警告,并且不将其静音;
  • 添加 GDALPamDataset::SetDerivedDatasetName() 方法,并使用它能够保存 GDALMDArray::AsClassicDataset() 返回的数据集的统计信息;
  • 添加 GDALGetSubdatasetInfo() 及相关函数 (#8155);

多维 API

  • 添加 Rename() 方法,在 MEM、netCDF、Zarr 驱动程序中实现;
  • 添加 DeleteGroup()DeleteMDArray()DeleteAttribute() 方法, 在 MEM、netCDF(用于属性)和 Zarr 驱动程序中实现;
  • GDALDatasetFromArray:修复写入/更新支持;
  • GDALMDArrayMask:在构造时考虑属性;
  • GetMask():添加 UNMASK_FLAGS 选项;
  • GDALMDArray::ComputeStatistics():添加选项以在计算统计数据时在 netCDF 和 Zarr 中 设置实际范围
  • GDALMDArray::AsClassicDataset():添加 LOAD_EXTRA_DIM_METADATA_DELAY 选项, 并将其公开在 Zarr 驱动程序中;
  • GDALMDArray::AsClassicDataset():允许使用 BAND_METADATA 选项将波段索引数组映 射为波段元数据项;
  • 添加 GDALGroup::SubsetDimensionFromSelection()

算法

  • 扭曲平均重采样:使用加权增量算法平均值来实现数值稳定性;
  • Warper:合理时自动启用 OPTIMIZE_SIZE 扭曲选项 (#7761);
  • Geoloc 转换器:如果输入数据集的宽度或高度大于 geoloc 数组,则会发出警告 (#7751);
  • GDALCreateGenImgProjTransformer2():处理反子午线周围 GCP 的不连续性
    (#8371);
  • TPS 转换器:使用迭代方法来细化逆变换 (#8572);

光栅驱动程序

AAIGRID 驱动程序

  • 写作:删除每行的前导空格(#8344

ARG 驱动程序

  • 将其标记为已弃用,计划在 GDAL 3.9 中删除(#7920

BAG 驱动程序

  • 提高从细化网格获取深度和不确定性值的效率
  • 使用低分辨率网格作为 MODE=RESAMPLED_GRID 中的最后一个概览级别
  • 添加 MODE=INTERPOLATED 模式,主要使用细化网格节点的双线性插值

COG 驱动器

  • 如果指定了 IGNORE_COG_LAYOUT_BREAK=YES 打开选项,则仅更新模式 (#7735)
  • 添加 STATISTICS=AUTO/YES/NO 创建选项并将 gdal_translate -stats 转发给它 (#8169)
  • Lerc:添加 MAX_Z_ERROR_OVERVIEW 创建选项以单独控制全分辨率图像之一的概览的错误阈 值

ENVI 驱动程序

如果将不同的节点数据值分配给不同的波段,则会发出警告 支持 Int 64和 UInt 64

ESRIC 驱动程序

  • 实现 ESRI Tile Package (.tpkx) 支持 (#7799)

GRIB 驱动程序

  • 允许打开具有无效地球形状的文件 (#7811)
  • 实施CCSDS自适应熵编码解压缩。需要 libaec (#8092)
  • 当存在尾随字节时,仅发出 CPLDebug() 而不是标准输出上的消息 (#8574)
  • GRIB2 SRS 编写:添加对旋转 LatLong 网格的支持(修复 #8536

GTiff 驱动程序

  • 性能改进:在写入整个块时避免使用块缓存(在某些情况下最多快两倍)
  • GTiff 多线程阅读器:捕获工作线程中发出的错误并在主线程中重新发出它们
  • 内部 libtiff:WebP 编解码器:创建无损文件时打开精确模式, 以避免更改 alpha=0 区域中的 R、G、B 值 (#8038)
  • Lerc:添加 MAX_Z_ERROR_OVERVIEW 创建选项以单独控制全分辨率图像之一的概览的错误阈值
  • SRS 编写器:在 .aux.xml 中编写作为伪复合构建的投影 3D
  • 内部 libtiff 和 libgeotiff:与上游重新同步

HDF5 驱动程序

  • 优化 RasterIO() 的代码路径,无需重新采样
  • multidim:加速 IRead() 非常慢的情况

ISG 驱动程序

  • 使其能够读取 > 1024 字节的标头
  • 纳入ISG格式2.0

JPEG 驱动程序

  • 允许质量降至 1
  • 将 JPEG“输出消息”重定向到 GDAL 调试消息
  • 只考虑找到的第一个 Exif 目录

MBTiles 驱动程序

  • 添加 WEBP 支持 (#8409)

MEM 驱动程序

  • 为带交错数据分配单个缓冲区

netCDF 驱动程序

  • 读取时,以按需方式设置 NETCDF_DIM_xxx 带元数据项(有助于网络访问)
  • 出于性能原因,不要为网络访问上无限维度的变量设置 NETCDF_DIM_xxxx_VALUES 数据集元数 据项
  • 无法从 /vsi 读取时出现更好的错误消息(#8398、#8378
  • 重新标准化 CRS 并将地理转换为公制,通常适用于 EUMETSAT OSI SAF 产品。添加 PRESERVE_AXIS_UNIT_IN_CRS=YES/NO 打开选项
  • 添加对 EMIT 带数据排序和地理位置数组的支持(使用 glt_x/glt_y 进行多维 API)

NITF 驱动程序

  • 添加对来自 GLAS/GFM SDE 的 CSCSDB(通用传感器协方差支持数据)DES 的支持

OpenFileGDB 栅格

  • 添加对 FileGDB v9 栅格数据集的支持
  • 添加带有 RasterDataset 名称的 RASTER_DATASET 元数据项 (#8427)

PDF 驱动程序

  • PDFium 后端:更新以支持(并要求)PDFium/5952
  • Poppler 后端:通过调整 DPI 值实现概览 (#8233)
  • PoDoFo 后端:添加对 PoDoFo >= 0.10.0 的支持 (#8356)
  • 增加阈值来检测图块大小和带数(#8236#8240
  • 各种稳健性修复

PRF 驱动器

  • 添加关联的 PRJ 文件读取

Sentinel2 驱动程序

  • 附加元数据 (#8379)

TileDB 驱动程序

  • 添加读/写多维支持(需要 libtiledb >= 2.15)
  • TileDBRasterBand::IRasterIO():使用正确的带索引
  • 读/写 Int8、Int64 和 UInt64
  • 添加读取任意(即不是由 GDAL 创建的)2D/3D 密集数组的功能(前提是它使用 uint64 维度)
  • 添加对 TileDB 2.17 的支持

VRT 驱动程序

  • 添加norm_diff(#8081) min 和 max 像素函数 (#8292)
  • 根据记录和预期,当存在外部 .vrt.ovr 时忽略
  • vrt:// 连接字符串:添加projwin, projwin_srs, tr, r, srcwin, a_gt, oo, scale, unscale, a_coord_epoch, nogcp, eco, epo
  • VRRTComplexSource(通常缩放):确保考虑 RasterIO() 中 VRTRasterBand 数据类型的约束(而不仅仅是考虑输出缓冲区数据类型)
  • IRasterIO():使用非最近重采样进行下采样时避免源边界处的边缘效应
  • VRTMDArraySourceFromArray:修复时考虑到 relativeToVRT=1
  • 允许包含 2D 多维数组的元素作为 VRTRasterBand 源, 并通过使用可以通过切片、转置、重采样、网格化等从 3D 或多维数组创建 2D 数组
  • VRTCplexSource:性能改进:仅在 Byte/UInt16/Int16 数据类型的 NODATA 时添加专门化
  • VRTSimpleSource::GetFileList():不要发出 stat(), 因为它在网络驱动器上可能会很慢
  • VRTSourcedRasterBand::GetMinimum/GetMaximum():迭代源时最大限制为 1 秒
  • VRTSourcedRasterBand::GetMinimum/GetMaximum():首先使用 STATISTICS_MINIMUM/ MAXIMUM元数据

WCS 驱动程序

从“DescribeCoverage”请求中删除非标准“FORMAT”参数 (#8381)

Zarr 驱动程序

  • 允许经典模式下的更新支持
  • Zarr V3:更新到当前规范(破坏向后兼容性)
  • 实现 GDALDriver::Rename()Delete()CopyFiles()
  • 读取图块数据文件时忽略文件名限制 (#8162)
  • 添加 MULTIBAND=YES/NO、DIM_X 和 DIM_Y 打开选项 (#8237)
  • 经典栅格 API:将多波段数据集写入 Zarr 3D 数组(可以使用 SINGLE_ARRAY=NO 创建选项将 它们写入 GDAL 3.7 中的多个 2D 数组)
  • 修复写入部分图块的问题
相关推荐

关注公众号
获取免费资源

随机推荐


Copyright © Since 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org