add g_point_on_surface(): wrapper of OGR_G_PointOnSurface() in the GDAL API (2026-05-13)
add GDALVector$writeArrowBatch(): write a batch of rows from a data frame using GDAL Arrow C stream interface (#976) (2026-05-11)
(internal) replace ARE_REAL_EQUAL() with equal_within_ulps_() (#974) (2026-05-08)
RunningStats class: support optionally returning count as bit64::integer64 (#975) (2026-05-07)
get_pixel_line(): treat points "exactly" on the right or bottom raster edge as inside (#973) (2026-05-06)
[-Wdangling-assignment-gsl] in srs_get_axes()ogr_reproject() to avoid the potential GDAL issue 12934ogr_reproject() on GDAL 3.11.4 and add the OGR_GPKG_STREAM_BASE_IMPL=YES configuration optionSuggestsvector_to_MEM() as rvector_to_MEM() but keep an alias to the deprecated name for now (#958)gdal_run_piped(): a variation of gdal_run() suitable for use with the R native pipe operator (#956)gdal_run(): add arguments close and quiet (#941)gdal_usage(): replace [may be repeated] with whether packed values / repeated arg allowed or not (#953)GDALRaster$addBand(): accept an R vector to add a MEM band from data pointer without copying (#960)GDALRaster$getInterBandCovMatrix(): class method to fetch or compute the covariance matrix between bands of a dataset using GDALDatasetGetInterBandCovarianceMatrix() in GDAL 3.13 (#959)northness() and eastness(): convenience functions for transforming aspect degreesg_invalid_reason(): interface to OGR_G_GetInvalidityReason() in GDAL >= 3.13 (#957)g_segmentize(): interface to OGR_G_Segmentize() (#966)/vsistdout/ to the compliant output stream to allow using GDAL standard output streaming in the R terminal (#963)lib_versions(): return a named list of library version information for GDAL and its major dependencies in a consistent format, as alternative to the separate version info functions (#965)show() method for GDALRaster and GDALVector (e.g., if no spatial reference is defined)progress_bar_clear(): terminate/reset any active cli progress bars (#939)CLI_SHOULD_TICK macro in the C++ progress bar to avoid unnecessary updates on screen for small performance improvement in certain cases (#939)GDALAlg::setArg(): more robust handling of algorithm arguments with object inputGDALVector: lint/cleanup class constructors also addressing Rcpp 1471 issue commentgdal_run_piped() in web article Using gdal CLI algorithms from R"UInt8" pixel data type in GDAL >= 3.13 (#933)g_make_valid(): update documentation to describe the new behavior of MakeValid() in GDAL 3.13 (#934)g_make_valid(): condition tests for changes to MakeValid() in GDAL 3.13calc(): use a unique temp name when the output dataset is MEM and a specific name is not given (#954).rasterize_polygon() for internal use, currently only for FIESTA support (#955)has_space_char_(): use std::any_of to avoid cppcheck style warningImports and LinkingToSuggestsgt_from_dim_bbox() and bbox_from_dim_gt(): standalone functions for converting between geotransform coefficients and bounding boxes (#878, thanks to @mdsumner)GDALRaster$setBbox(): convenience wrapper for setting the geotransform from a bounding box (#878, thanks to @mdsumner)read_to_nativeRaster(): read raster data directly as an R object of class nativeRaster for fast rendering, also added as the class method GDALRaster$readToNativeRaster() (#875, thanks to @mdsumner)is_los_visible(): check line of sight between pairs of point locations using GDALIsLineOfSightVisible() (#869)vector_to_MEM(): use pixel data in an existing R vector to create a GDAL in-memory raster with zero copy (#910)vsi_glob(): get file and directory names matching a pattern that may contain wildcards, wrapper of VSIGlob() in GDAL >= 3.11 (#864)vsi_uri_to_vsi_path(): return VSI compatible paths from URIs / URLs, wrapper of VSIURIToVSIPath() in GDAL >= 3.12 (#865)VSIFile: add a writable field reportVSIFErrorAsEof, and check the VSI error indicator in the read() and eof() methods if GDAL >= 3.10 (#901)g_build_polygon_from_edges(): build a polygon from a set of arcs, wrapper of OGRBuildPolygonFromEdges() (#863)g_build_collection(): build a collection-type geometry from a set of input geometries given as a list of WKB raw vectors or a character vector of WKT strings (#867)g_intersects(): performance improvements and use prepared geometry in 1:many batch modeGDALVector: add method isReadOnly()GFT_Boolean, GFT_DateTime and GFT_WKBGeometry with GDAL >= 3.12 (#860)GDALRaster: recognize the new color interpretation (GCI_xxxx) items added to the GDALColorInterp enumeration in GDAL 3.10 (#900)calc(): add support for input and output rasters as dataset objects, instead of only as file names (#870)set_config_option(): if the CPL_LOG_ERRORS option is set, then set the global error handler appropriately for that case (addresses #905)VSIFile: fix crash when passing open options in the constructor (#883, thanks to @pepijn-devries)read_ds(): the argument as_wkb and raster dataset property readByteAsRaw were not synchronized (#873, thanks to @mdsumner)GDALVector::open(): remove warning if Spatialite is not available when opening with a SQL statement and the SQLite dialect is specified (fixes #908)GDALVector: honor the quiet object setting in several places it was not checked before printing a console messageMEM vector dataset format instead of Memory if GDAL >= 3.11identifyDriver(): make conditional on PostGISRaster / PostgreSQL driver presence (#880)CSLConstList with GDALGetMetadata() and GDALSetMetadata() for as per https://gdal.org/en/latest/user/migration_guide.html (#868, thanks to @mdsumner).cpl_get_path(), .cpl_get_dirname() and .cpl_launder_for_filename()VSIFile::read(): avoid a copy from temporary buffer most of the time (#888)GDALAlg: use GDALAlgorithmRegistryInstantiateAlgFromPath() if GDAL >= 3.12 (#859)GDALAlg::parseCommandLineArgs(): look up argument aliases in a couple of places they were hard coded, and refactor"aut", previously "ctb")"ctb")firelab organization at https://github.com/firelab/gdalrastersrs_info_from_db(): obtain information about coordinate reference systems in the PROJ database (#832)srs_get_axes(): return a list of the axis names and orientations for a spatial coordinate reference system (#837)srs_get_area_of_use(), srs_get_axes_count(), srs_epsg_treats_as_lat_long(), srs_epsg_treats_as_northing_easting() and srs_get_celestial_body_name() (#831, #839)gdal_formats(): add Update ("u") to rw_flags when GDAL >= 3.11, and add several new columns to the output data frame containing various driver metadata (#833)vsi_read_dir(): fix slow string processing of the file list for return, especially for large listings e.g. recursive (#841, thanks to @mdsumner)plot_raster(): accept a color palette for the argument col_map_fn, to support an implied ramp function (#830, thanks to @wiesehahn)buildRAT() and combine() (#844)GDALRaster::getSpatialRef(): class method on a GDALRaster object synonymous with GDALRaster::getProjection() and GDALRaster::getProjectionRef(), for consistency with class GDALVector and with the osgeo.gdal bindings (#845)gdal_usage(): include the list of potential step algorithms for "raster pipeline" and "vector pipeline" (#789)gdal_run(): add argument setVectorArgsFromObject (#790)GDALAlg::getExplicitlySetArgs(): exposed class method to return a named list of arguments that have been set explicitly along with their values (#807)GDALAlg::setArg(): exposed class method to set algorithm argument values individually by API (#822)GDALRaster: add helper methods for iterating I/O on raster blocks, or on multi-block chunks of user-defined size, readBlock() / writeBlock(), make_chunk_index() and readChunk() / writeChunk() (#819)make_chunk_index() stand-alone function for use without a dataset objectGDALRaster::getMinMaxLocation(): compute the min/max values for a raster band and their locations, using GDALComputeRasterMinMaxLocation() in GDAL >= 3.11 (#820)rasterToVRT(): add argument krnl_fn supporting a Function element in KernelFilteredSource with GDAL >= 3.12, one of "min", "max", "stddev", "median" or "mode" (#821)GDALRaster: add a constructor with allowed_drivers argument (#793)mdim_as_classic(): return a view of an MDArray as a "classic" GDALDataset (i.e., 2D), and add column multidim_raster (TRUE|FALSE) in the data frame output of gdal_formats() (#799)mdim_info(): report structure and content of a multidimensional dataset, interface to gdalmdiminfo utilitymdim_translate(): convert multidimensional data between different formats, and subset, interface to gdalmdimtranslate utility (#803)g_geom_count(): return the number of elements in a geometry or number of geometries in containerg_get_geom(): fetch a geometry from a geometry containerg_unary_union(): wrapper for OGR_G_UnaryUnion()g_concave_hull(): wrapper for OGR_G_ConcaveHull()g_normalize(): wrapper for OGR_G_Normalize()g_delaunay_triangulation(): add argument constrained, wrapper for OGR_G_ConstrainedDelaunayTriangulation()plot_geom(): plot WKT or WKB geometriesgdal_get_driver_md(): retrieve driver metadata (#795)vsi_stat_exists(), vsi_stat_type() and vsi_stat_size(): specializations of vsi_stat() operating on a vector of potentially multiple file system object names (#825)ogr_ds_delete_field_domain(), and condition tests on GDAL 3.12 (#823)GDALAlg, experimental bindings to the new GDAL CLI API (#782)
Rcpp::CharacterVector are always passed explicitly as const char * in C API calls-Wunused-const-variablegdal_global_reg_names(): return a character vector containing the names of the algorithms in the GDAL global algorithm registry (#782)plot_raster(): use on.exit() for par() reset (#780)on.exit() cleanup code (#783)pixel_extract(): add checks for potential ctrl-c user interrupt during extract for a large number of pointsogr_reproject() following GDAL ERROR 1: Reprojection failed on certain CRAN platforms with alternative BLAS/LAPACK implementations
ogr_reproject() (cf. https://gdal.org/en/stable/programs/ogr2ogr.html#known-issues)ogr_reproject() across all GDAL versions but skip more complex tests if GDAL < 3.11.3 ("stable" version as of July 2025)-Wimplicit-const-int-float-conversion in src/vsifile.cppsetGDALDatasetH_() in classes GDALRaster and GDALVector: check shared flag of the incoming GDALDatasetH and set the m_shared member variableGDALRaster: call GDALReleaseDataset() instead of GDALClose() in the close() method and destructor when the dataset is non-sharedpixel_extract(): support optional point IDs in the first column of an input data frame and add argument as_data_frame (#751)plot_raster() via col_tbl (#735 thanks @mdsumner)GDALVector$getFieldDomain(): a coded values domain is now returned as a two-column data frame of (codes, values) instead of character vector of "CODE=VALUE", a breaking change but the return value was not previously documented. The returned field domain definition now aligns with the specification added under the ogr_define help topic in #738g_boundary(): compute the boundary of input geometry, wrapper of OGR_G_Boundary() (#727)g_convex_hull(): compute convex hull for input geometries, wrapper of OGR_G_ConvexHull() (#726)g_delaunay_triangulation(): return a Delaunay triangulation of the vertices of the input geometry, wrapper of OGR_G_DelaunayTriangulation() (#729)g_set_3D()/g_set_measured(): add/remove the explicit Z/M coordinate dimension on the input geometries, wrappers of OGR_G_Set3D()/OGR_G_SetMeasured() (#743)g_is_ring(): tests whether a geometry is a ring, TRUE if the coordinates of the geometry form a ring by checking length and closure (self-intersection is not checked), otherwise FALSE (OGR_G_IsRing())g_distance() (#728)g_transform(): performance improvement when multiple input geometries (#745)g_envelope(): add argument as_3d, wrapper of OGR_G_GetEnvelope3D() in the GDAL Geometry API (#724)srs_to_projjson(), wrapper for OSRExportToPROJJSON() in the GDAL Spatial Reference System API (#721)srs_to_wkt(): add argument gcs_only, wrapper for OSRCloneGeogCS() in the GDAL SRS APItransform_bounds(): support multiple input bounding boxes given as rows of a matrix or data frame (#744)g_envelope(): fix the order of xy coordinates in the returned envelope(s), fixes #725 a breaking changepixel_extract(): fix input validation for xy_srsogr_manage functions (#749)tests/testthat/test-gdal_create.R for the the create() and createCopy() R public interfaces, and improve input validation (#748)GDALVector with a few minor code improvements (#747)GDALVector: improve error handling in setIgnoredFields()/setSelectedFields() and add several new tests (#731)constexpr or const in several placesGDALVector along with several additions and enhancements to ogr_*() stand-alone functions?data_type_helpers)show() method for all Rcpp exposed classesGDALVector: encapsulates an OGRLayer object and the GDALDataset that contains it, exposing 48 class methods for obtaining vector layer information, attribute and spatial filtering, and reading/writing feature datananoarrow_array_stream object (GDAL >= 3.6) (#591)ogr_reproject(): reproject a vector layer (purpose-built wrapper of GDALVectorTranslate())ogr_proc(): interface to GDAL OGR facilities for vector geoprocessingogr_layer_rename(): rename an existing layer in a vector dataset (GDAL >= 3.5)ogr_execute_sql() now returns an object of class GDALVector for SQL SELECT statementsreturn_obj in ogr_ds_create() and ogr_layer_create(), TRUE to return a GDALVector object for write access on the created layerlayer argument in certain ogr_manage functions now supports NULL or empty string, which will default to the first layer by index (mainly as a convenience for single-layer formats)$is_ignored from the list object for a feature class definition (affects certain ogr_define and ogr_manage functions): potentially breaking change but assumed to be unused in layer / field creation (#513)g_wk2wk() (WKB <--> WKT conversion), g_create() (create geometries from input points), g_add_geom() (build container geometry types from sub-geometries) (#572)wkt to geom, and by returning raw vectors of WKB by default from functions that return geometries (as_wkb = TRUE by default)g_is_valid(), g_is_empty(), g_name() and g_buffer() to the new style Geometry APIg_make_valid(): attempt to make invalid geometries validg_summary(): obtain text summaries of WKB/WKT geometries (GDAL >= 3.7)g_simplify(): simplify WKB/WKT geometries, optionally preserving topologyg_swap_xy(): swap x and y coordinates of the input geometryg_geodesic_area() and g_geodesic_length() (#671)g_is_3D() and g_is_measured() (#650)g_envelope(): computes and returns the bounding envelope(s) for input geometriesg_coords(): extract coordinate values from geometriesg_transform(): add argument traditional_gis_order with default TRUE, to support authority compliant order for geometries using geographic coordinatesbbox_transform(): add argument use_transform_bounds (TRUE by default but requires GDAL >= 3.4)srs_is_same(): argument srs1 is renamed to srs and argument srs2 to srs_othersrs_to_wkt() (wrapper of OSRSetFromUserInput())?srs_convert and ?srs_query, and now includes the following:
srs_convert functions: epsg_to_wkt(), srs_to_wkt()srs_query functions: srs_find_epsg(), srs_get_name(), srs_is_geographic(), srs_is_derived_gcs(), srs_is_local(), srs_is_projected(), srs_is_compound(), srs_is_geocentric(), srs_is_vertical(), srs_is_dynamic(), srs_is_same(), srs_get_angular_units(), srs_get_linear_units(), srs_get_coord_epoch(), srs_get_utm_zone(), srs_get_axis_mapping_strategy()$get_block_indexing(): helper to get indexing values for the block layout of a raster band (#667)$addBand(): add a band to a dataset if the underlying format supports this action, e.g., MEM and VRT$clearColorTable(): clear the color table associated with a raster band$getMaskBand(): return the mask filename and band number associated with a given band of the dataset$getMaskFlags(): return the status flags of the mask band associated with a given band of the dataset$setMetadata(): set dataset or band-level metadata from a character vector of NAME=VALUE pairs (instead of per metadata item with the existing method $setMetadataItem())band = 0 in the existing method $setDescription() to set the dataset-level description$bbox() and $res() to handle south-up / rotated raster (with related fixes in read_ds() and plot_raster()) (#569)vsi_get_actual_url(): return the actual URL of a supplied VSI filename, wrapper of VSIGetActualURL() in the GDAL APIvsi_get_signed_url(): return a signed URL for a supplied VSI filename, wrapper of VSIGetSignedURL() in the GDAL APIvsi_is_local(): returns whether the file/filesystem is "local", wrapper of VSIIsLocal() in the GDAL APIget_cache_max() and set_cache_max(): get/set maximum memory size available for the GDAL block cacheget_cache_used(): change the return value to R numeric type carrying the integer64 class attribute, and add argument units defaulting to "MB"gdal_version_num() (previously internal/undocumented): return the full version number as an integer value (convenience for as.integer(gdal_version()[2]))gdal_compute_version(): compute the integer version number (GDAL_VERSION_NUM) from the individual components (major, minor, revision)pixel_extract(): extract pixel values at geospatial point locations, with options for multiple interpolation methods and returning the individual pixel values from a N x N kernel (#570)transform_bounds(): transform a bounding box, densifying the edges to account for nonlinear transformations along these edges and extracting the outermost bounds (wrapper of OCTTransformBounds() in the GDAL Spatial Reference System API, requires GDAL >= 3.4)autoCreateWarpedVRT(): create a warped virtual dataset representing the input raster warped into the target coordinate system (wrapper of GDALAutoCreateWarpedVRT())validateCreationOptions(): validate the list of creation options that are handled by a driver (#663)getCreationOptions(): change the return value to a named list of options with their information (#662)getCreationOptions(): include $min and $max attributes in the returned list if GDAL >= 3.11create(): add argument return_obj, TRUE to return an object of class GDALRaster with update access on the created datasetcreateCopy(): add argument return_obj, TRUE to return an object of class GDALRaster with update access on the created datasetcreateCopy(): an object of class GDALRaster can be given for argument src_filename to specify the source datasetwarp(): source and destination rasters may be given as objects of class GDALRastertranslate(): source raster can be given as a GDALRaster objectinspectDataset(): handle the case if separate raster and vector drivers are identified but a specific flag for the dataset type was not given (#693)rasterize(): support passing a GDALRaster object for in-place updating (#660)transform_xy(), inverse_proj(), apply_geotransform(), get_pixel_line())transform_xy() / inv_project(): support input points with z vertices (three column xyz) or time values (four column xyzt), and optionally accept input of point geometries as character vector of WKT strings, WKB raw vector, or list of WKB raw vectorstransform_xy() / inv_project(): account for behavior change in the GDAL Transform() methods of OGRCoordinateTransformation at GDAL 3.11 (#631)plot_raster(): add argument pixel_fn to specify a function that will be applied to the input data for plotting, and handle input raster with complex data type (#582)inspectDataset() and warp(): set a quiet error handler around code checks that are based on a try() statement that attempts to open a raster dataset (#709)NA in the input coordinates to transform_xy(), inv_project(), transform_bounds(), apply_geotransform() and get_pixel_line() (#592)plot_raster() to avoid integer overflow (#613 thanks to @mdsumner)as.numeric() (#620 thanks to @mdsumner)VSIFile$read(): the nbytes argument should accept values carrying the integer64 class attribute (fixes #677 thanks to @mdsumner)create(), createCopy() and autoCreateWarpedVRT() as GDALRaster object factories (#606)ogr_ds_create() and ogr_layer_create() as GDALVector object factories (#609)cppcheck style in src/geom_api.cpp and src/srs_api.cpp (#658)src/gdal_vsi.h, and minor code cleanups in src/gdal_vsi.cppsrc/wkt_conv.cpp -> src/srs_api.cpp, src/wkt_conv.h -> src/srs_api.h, tests/testthat/test-wkt_conv.R -> tests/testthat/test-srs_api.Rconst reference in some srs and geom functionsstd::vector (#485)CPLIsNan() with std::isnan() (#485)read_ds(): pre-allocate the output vector based on the bit size of the unioned data type across all bandsreturn_obj with create() and createCopy()-srcband and -dstband command-line options in the documentation for warp()ogr2ogr() for dissolving features based on an attribute valueg_transform()?ogr_defineinspectDataset() and vsi_get_file_metadata() to use the new sample data file inst/extdata/ynp_features.zip (#691)\dontshow{}inspectDataset(): obtain information about a GDAL raster or vector dataset (#552)identifyDriver(): identify the driver that can open a given filename, connection string, etc. (#553)transform_xy() and inv_project(): accept the SRS arguments in any format supported by srs_to_wkt()vsi_read_dir(): add the recursive argument (#426); omit "." and ".." from the output directory listing; add the all_files argument, TRUE to include hidden files; sort the directory listing alphabetically"color-relief" in DEFAULT_DEM_PROC (#430)VSIFile: create file with "w+" access for read/write (#546)ogr_def_geom_field(): fix input validation for the srs argument (#507)createCopy(): check the driver for GDAL_DCAP_CREATE capability as well as GDAL_DCAP_CREATECOPY (#479)plot_raster(): default to no stretch when the input is an RGB Byte raster (#435)VSIFile that needs "w+" access instead of "w"transform_xy() examplesfillRaster() method in class GDALRasterfix test in test-ogr_manage.R: the test for GeoJSON layer did not need to check existence using with_update = TRUE on a file in extdata (#410)
add apply_geotransform(): convert raster column/row to geospatial x/y coordinates, wrapper of GDALApplyGeoTransform() in the GDAL API, operating on a matrix of input col/row coordinates (the internal wrapper .apply_geotransform() is unchanged)
add GDALRaster$apply_geotransform(): class method alternative to calling the stand-alone function apply_geotransform() on an object of class GDALRaster
vsi_curl_clear_cache(): add parameter quiet to wrap the API call in a quiet error handler, TRUE by default
Documentation: document the w+ access flag for class VSIFile; add CPL_VSIL_USE_TEMP_FILE_FOR_RANDOM_WRITE configuration option in vignette GDAL Config Quick Reference; replace paste0() with file.path() in the examples throughout
code linting
bit64 has been added to ImportsRcppInt64 has been added in LinkingToogr_ds_exists(), ogr_ds_format(), ogr_ds_test_cap(), ogr_ds_create(), ogr_ds_layer_count(), ogr_ds_layer_names(), ogr_layer_exists(), ogr_layer_test_cap(), ogr_layer_create(), ogr_layer_field_names(), ogr_layer_delete(), ogr_field_index(), ogr_field_create(), ogr_geom_field_create(), ogr_field_rename(), ogr_field_delete(), ogr_execute_sql()ogr_def_field(), ogr_def_geom_field(), ogr_def_layer()VSIFile wraps VSIVirtualHandle for Standard C binary file I/O on regular file systems, URLs, cloud storage services, Zip/GZip/7z/RAR, and in-memory filesvsi_mkdir(): the file mode was set incorrectly because mode was not passed correctly as octal literal. mode is now passed as a character string containing the file mode as octal.vsi_get_file_metadata(): returns metadata for network filesystem objects (/vsicurl/, /vsis3/, /vsiaz/, etc.), and with GDAL >= 3.7, /vsizip/ SOZip metadatavsi_set_path_option(): set a path specific option for a given path prefix, e.g., credential setting for a virtual file system (GDAL >= 3.6)vsi_clear_path_options(): clear path specific configuration options previously set with vsi_set_path_option() (GDAL >= 3.6)vsi_rmdir(): add argument recursive, TRUE to delete the directory and its contentvsi_mkdir(): add argument recursive, TRUE to create the directory and its ancestors0 or -1 invisibly indicating success/failure, consistent with GDAL return values. Those return values are now visible to be consistent with return values from VSIFile class methods.vsi_stat() with info = "size", and vsi_get_disk_free_space() now return bit64::integer64 type$info() and $infoAsJSON() now use the default command-line arguments for the underlying gdalinfo utility. Arguments are configurable in the new read/write $infoOptions field, which is an empty vector by default (character(0)).raw type, and add the setting $readByteAsRaw as a class field (#314, thanks to @mdsumner)$infoOptions and $quiet for applying per-object settingsTRUE by default$getActualBlockSize(): retrieve the actual block size for a given block offset$get_pixel_line(): class method alternative to calling the stand-alone function get_pixel_line() on an object of class GDALRaster(#339)$getProjection(): equivalent to $getProjectionRef() (consistent with osgeo.gdal.Dataset.getProjection() / osgeo.gdal.Dataset.getProjectionRef() in the GDAL Python API)$getDefaultRAT(): add progress bar since retrieving large raster attribute tables could take >30 seccalc(): add support for multiband output (#319)calc(): add input validation for var.names, must be in exprget_pixel_line(): an object of class GDALRaster can now be passed for the gt parameter, in which case the geotransform will be obtained from the object and bounds checking on the raster extent will be done (original behavior for gt as numeric vector is unchanged) (#339)ogr2ogr(): add parameter open_options to support options on the source datasetread_ds(): add parameter as_raw to read a Byte raster as R raw type (#314, thanks to @mdsumner)dump_open_datasets(): dump a list of all open datasets (shared or not) to the consoleget_num_cpus(): get the number of processors detected by GDALget_usable_physical_ram(): get usable physical RAM reported by GDALhas_spatialite(): returns TRUE if GDAL was built with SpatiaLite supporthttp_enabled(): returns TRUE if GDAL was built with libcurl support.cpl_http_cleanup(): wrapper of CPLHTTPCleanup() for internal use (2024-05-29)g_is_empty(), g_is_valid(), g_name(), g_intersects(), g_equals(), g_disjoint(), g_touches(), g_contains(), g_within(), g_crosses(),g_overlaps(), g_intersection(), g_union(), g_difference(), g_sym_difference(), g_distance(), g_length(), g_area(), g_centroid()bbox_transform(): transform a bounding box to a different projectiong_transform(): now uses OGR_GeomTransformer_Create() and OGR_GeomTransformer_Transform() in the GDAL API, enhanced version of OGR_G_Transform(); add arguments wrap_date_line and date_line_offsetAuthors@RGDALRaster class methods $info(), $infoAsJSON() and $getDefaultRAT()CPLHTTPCleanup() upon R session exitGDALRaster class method $setFilename(): set the filename of an uninitialized GDALRaster object, currently undocumented / for internal useGDALRaster class method _getGDALDatasetH(): get the GDAL dataset handle for internal usebuildRAT(): if the input raster is an object of class GDALRaster, use it by reference rather than instantiating another GDALRaster object internallycalc(): close input raster dataset before exit when a differing extent is detected"-json" as a cl_arg to ogrinfo()vsi_get_fs_prefixes(): get the list of prefixes for virtual file system handlers currently registeredvsi_get_fs_options(): get the list of options associated with a virtual file system handler (for setting with set_config_option())vsi_supports_rnd_write() and vsi_supports_seq_write(): test whether the filesystem supports random write or sequential write, conditional on whether a local temp file is allowed before uploading to the target locationvsi_get_disk_free_space(): return the free disk space available on the filesystemvsi_copy_file() and vsi_sync() (#233)ogrinfo(): wrapper of the ogrinfo command-line utility, retrieve information about a vector data source and potentially edit data with SQL statements (GDAL >= 3.7)ogr2ogr(): wrapper of the ogr2ogr command-line utility, convert vector data between different formatsg_transform(): apply a coordinate transformation to a WKT geometrygeos_version(): get version information for the GEOS library in use by GDALpush_error_handler(): wrapper for CPLPushErrorHandler() in the GDAL Common Portability Librarypop_error_handler(): wrapper for CPLPopErrorHandler() in the GDAL Common Portability Librarycalc(): the argument usePixelLonLat is deprecated as unnecessary, variables pixelLon / pixelLat are now auto-detected if used in the calc expression; small performance improvement from computing pixelY only when neededquiet in several functions to configure progress reporting (#237)gdal_formats() now returns a data frame with the supported raster and vector formats, and information about the capabilities of each format drivernew(): assign default variable names in the constructor if names are not givensrc/geos_wkt.cpp, src/transform.cpp, src/wkt_conv.cpp: deallocate some OGR geometry and OSR spatial ref objects to fix memory leaksGDALRaster::getMetadataDomainList(): deallocate the returned string list to avoid memory leakGDALRaster::close(): clear cache if needed, and check the return values of GDALClose() and GDALFlushCache() if GDAL >= 3.7configure.ac: add back proj-include and proj-lib, the latter needed in some cases for source install on macOS; rework for the system requirement of GDAL built against GEOShas_geos() checks and update the documentation, since GDAL with GEOS is now required.editorconfig file and bulk reformat code stylelintr and add .lintr fileNULL -> nullptr in C++ codeOSR_DEFAULT_AXIS_MAPPING_STRATEGY=TRADITIONAL_GIS_ORDER from _gdal_init() (#209), since this could give a different SRS comparison result depending on GDAL version in cases where axis mapping matters and the default options in OSRIsSameEx() are usedvsi_copy_file(): wrapper for VSICopyFile()vsi_curl_clear_cache(): wrapper for VSICurlClearCache() and VSICurlPartialClearCache()vsi_mkdir(): wrapper for VSIMkdir()vsi_read_dir(): wrapper for VSIReadDirEx()vsi_rename(): wrapper for VSIRename()vsi_rmdir(): wrapper for VSIRmdir()vsi_stat(): wrapper for VSIStatExL()vsi_sync(): wrapper for VSISync()vsi_unlink(): wrapper for VSIUnlink()vsi_unlink_batch(): wrapper for VSIUnlinkBatch()GDALRaster$new(): add a constructor for passing dataset open optionsfootprint(): wrapper of the gdal_footprint command-line utility, compute footprint of a raster (GDAL >= 3.8)read_ds(): add as_list argument for option to return multi-band output in list form; attach attribute gis to the output, a list containing bbox, dimension and spatial reference (thanks to input from @mdsumner #185)plot_raster(): accept pixel data in list form (band vectors as list elements), and make use of gis attribute if present (thanks to input from @mdsumner #185)srs_is_same(): add arguments for criterion, ignore_axis_mapping and ignore_coord_epoch_check_gdal_filename(): minimal filename check and UTF-8_get_physical_RAM(): wrapper for CPLGetUsablePhysicalRAM() for internal useSystemRequirements since it is required by the imported package xml2read_only=TRUE is now an optional default in the class constructorclearStatistics(): clear statistics on PAM supported datasets (GDAL >= 3.2)addFilesInZip(): create/append to Seek-Optimized ZIP files (GDAL >= 3.7)plot_raster(): now uses georeferenced coordinates by default instead of pixel/line (#184 thanks to @mdsumner)calc() using Landsat bands should have applied scale/offset as given in the .json metadata - this has been correctedAWS_REGION, and a section for SOZip to GDAL Config Quick Refread_only=TRUE in the constructor for GDALRastertranslate() and warp() in Raster API Tutorialautoconf macros for compiler invocations; get the PROJ data directory from pkg-config if possible; add action-if-cross-compiling argument (#190 and #197; thanks to Simon Urbanek for debugging an initial issue and providing helpful feedback)pkg-config on Windows when possible (#125 thanks to @kalibera)translate() and warp(): close the output dataset before closing source dataset(s) in case the output is VRTpolygonize(): create a polygon feature layer from raster data, wrapper for GDALPolygonize in the GDAL Algorithms API.rasterize(): burn vector geometries (points, lines, or polygons) into a raster, wrapper for the gdal_rasterize command-line utilitybuildVRT(): build a GDAL virtual raster mosaic from a list of datasets, wrapper for the gdalbuildvrt command-line utilitytranslate(): convert raster data between different formats, wrapper for the gdal_translate command-line utilityt_srs optional in warp()TRADITIONAL_GIS_ORDER=OSR_DEFAULT_AXIS_MAPPING_STRATEGY is now set on package loadwarp() has additional documentation covering several processing optionsCOMPRESS_OVERVIEW configuration option to the documentation for GDALRaster::buildOverviews()str() of the GDALRaster object in the Raster API TutorialdisplayRAT())getDefaultRAT(), setDefaultRAT()getDefaultHistogram(): fetch default raster histogram for a bandgetHistogram(): compute raster histogram for a bandgetMinMax(): compute min/max for a raster bandgetMetadataDomainList(): get a list of metadata domains for a dataset or raster bandgetMetadataItem() for a specific domain at dataset level (#109)buildRAT(): compute for a raster band the set of unique pixel values and their counts, and build a GDAL Raster Attribute Table as data framedisplayRAT(): generate a presentation Raster Attribute Table, showing colors if the table contains RGB columnsgdal_formats(): report the supported raster formatsgetCreationOptions(): get the list of creation options of a raster formatcopyDatasetFiles(): copy all the files associated with a datasetdeleteDataset(): delete a dataset in a format-specific wayrenameDataset(): rename a dataset in a format-specific wayincr for the count increment in CmbTable::update() can be zerouint64_t for the count accumulator (previously long long) and make explicit the return cast in get_count() (no user-visible changes)plot_raster(): normalize legend correctly for minmax_def and minmax_pct_cut (#131)RunningStats-classgdal_formats() and getCreationOptions()getColorTable(), getPaletteInterp(), setColorTable()getRasterColorInterp(), setRasterColorInterp(): get/set color interpretation for raster bandsgetDescription(), setDescription(): get/set description for raster band objectsflushCache(): flush all write cached data to diskgetFileList(): returns a list of files forming the datasetinfoAsJSON(): returns output of the gdalinfo command-line utility as a JSON-formatted stringnew(): add a warning in the class constructor if the raster has an int64 data type (would be handled as double for now)bandCopyWholeRaster(): wrapper for GDALRasterBandCopyWholeRaster(), efficiently copy a whole raster bandcreateColorRamp(): wrapper for GDALCreateColorRamp(), automatically create a ramp from one color to anothersieveFilter(): wrapper for GDALSieveFilter() in the Algorithms API, remove small raster polygonsproj_version(), proj_search_paths(), proj_networking() (via GDAL headers)g_buffer(): compute buffer of a WKT geometry (GEOS convenience function via GDAL headers)updateFromMatrixByRow(): update the hash table from a matrix having integer combinations arranged in rowsasMatrix(): return the combinations table as a numeric matrix (alternative to asDataFrame())warp() caused segfault if proj.db could not be found (#96)plot_raster(): default value of the legend argument has been changed to FALSE; legend can now use a color table for continuous data; add argument maxColorValue (e.g., to use RGB 0:255 instead of 0:1 in col_tbl)bbox_from_wkt(), bbox_to_wkt(): add arguments extend_x, extend_yadd dem_proc(): wrapper for the gdaldem command-line utility to generate DEM derivatives
add the following set methods in class GDALRaster: setMetadataItem(), setUnitType(), setScale(), setOffset()
add GDALRaster$buildOverviews(): build raster overviews
add GDALRaster$dim(): returns a vector of xsize, ysize, nbands
transform_xy() and inv_project(): pts can be a data frame or matrix
plot_raster() now accepts a GDALRaster object for the data argument
plot_raster(): make the legend narrower and add argument digits to format legend labels when raster data are floating point
add test suite and code coverage report
GDALRaster::read(): data are now read as R integer type when possible for the raster data type (#23)
add fillNodata(): wrapper for GDALFillNodata() in the GDAL Algorithms API
add read_ds(): convenience wrapper for GDALRaster$read()
add plot_raster(): display raster data using base R graphics
add get_cache_used(): wrapper for GDALGetCacheUsed64() with return value in MB
add GDALRaster$getOverviewCount(): return the number of overview layers available
GDALRaster$info(): drop -nomd argument from the internal call
bbox_from_wkt(): return NA if creation of the geometry object fails (#27)
fix GDALRaster$getMetadata(): requesting band-level metadata for a domain other than the default metadata domain was returning dataset-level metadata instead
add vignette containing an R port of the GDAL Raster API tutorial
add description of the GDAL_RASTERIO_RESAMPLING configuration option in the documentation for GDALRaster$read()
add web article on the GDAL block cache and configuration of GDAL_CACHEMAX
starting at v. 1.2.0, {gdalraster} will require R >= 4.2.0
fix: check for GEOS availability in bbox geometry functions
fix: wrong array dimensions in read() (#5). Starting at v. 1.2.0, read() will return vector instead of matrix which better matches the concept of a native GDAL-like interface (thanks to Michael Sumner).
add: has_geos() exported to R
add: srs_is_same() - wrapper for OSRIsSame() in the GDAL Spatial Reference System C API
documentation - minor edits throughout to improve clarity