fix 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 expr
get_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_offset
Authors@R
GDALRaster
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 GDALRaster
translate()
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-class
gdal_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_y
add 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