Changelog
Source:NEWS.md
    version 0.7-0
- add - st_as_stars()methods for- CFVariableand- CFDataset, provided by package- ncdfCF; #756, #757 by @pvanlaake
- try harder to convert - CFTimetimes to- Datewhen they are dates.
- if set, - options("stars.regular")controls the threshold below which dimension coordinates are considered regular, with default 1.0e-4
- removed dependency on PCICt, added dependency on CFtime; #754 by @pvanlaake 
- handling of dimensions with a single value is now more consistent; #754 
- slice.stars_proxy()works (again) for single-file proxy objects; #751, #527
- [.stars()with a- characterselector selects on names of a dimension if it has names; #747
- handle “intervals” dimension in aggregate.stars() and - st_as_sf.stars(); #745
- fix - c.stars()for the case where some of the objects have a single slice on the- along=dimension; #743
- st_redimension()(and by that,- merge.stars()) use- abind()for numeric variables rather than- c(), reducing memory overhead.
- fix problem with reading HDF4 files; #741 by Alexys Rodriguez 
- use, by default, - normalizePath()on- filenamein- read_mdim(); #735
- st_extract()accepts empty points as target; #734
- st_sfc2xy()passes- ...on to- st_as_stars(); #733
version 0.6-7
CRAN release: 2024-11-07
- st_extract()fix if points coincide with boundary grid cell centers and bilinear interpolation is used; #720
- st_extract()if used with GDAL 3.10.0 uses InterpolateAtPoints, allowing for cubic and cubicspline interpolators (requiring sf >= 1.0-19).
- Ops.stars()(math ops) now also recycle arrays in the first argument; #718
- c.stars()verifies semantic equivalence of objects’ CRS; #703
- initial support for - read_mdim()to work with- proxy = TRUE; #659
version 0.6-6
CRAN release: 2024-07-16
- skip - cubbletests for cubble version 0.3.1; https://github.com/huizezhang-sherry/cubble/issues/30
- st_transform.starstransforms geometries in array elements
- mutate.stars(and others) handle attribute names with spaces in them; #689
- st_crop()gains an argument- normalize; when set to- TRUE- st_normalize()is called on the returned value; #685, #686
- constrain reading full GEOLOCATION arrays to the case where they are 2-D; #678 
version 0.6-5
CRAN release: 2024-04-04
- fix - st_as_stars.Spatial()for- Spatialgridded objects with non-square grid cells, see https://github.com/r-spatial/gstat/issues/123
- add - prcomp()methods for- starsand- stars_proxyobjects, working on attributes or last dimension
- st_rasterize()with- align=TRUEreturns- NAvalues where there are no data; #668
- read_mdim()reads tables with composity type, returning a- data.framein that case; #659
- st_rotate()transforms a rotated grid back to a curvilinear grid in unrotated coordinates.
- aggregate.stars()deals with functions that return more than one number, putting these in a new dimension like- st_apply()does
- st_as_stars.data.frame()and- st_as_stars.sf()better handle non-raster data cubes
- plot.stars()only resets layout when needed (more than one sub-plot, or key present)
- fixed - st_as_stars.im(); #648
- st_crs<-.stars()is less critical on existing CRS being of class- crs
- c.stars()with a single (valid) argument and- alongspecified adds a dimension; #646
- st_join.stars()keeps attributes from- xcomplete; #643
- st_as_stars.list()requires a named list, and will set names of array dimensions if not present
version 0.6-4
CRAN release: 2023-09-11
- plot.stars()has a- fillargument that shifts unused plotting space between sub-maps to the bottom or right side of the plotting area
- in - plot.stars(), the- key.widthdefault is sensitive to- par("ps"), the pointsize graphics parameter
- plot.stars()and- image.stars()are sensitive to- cex.axis, for axes and key (requires sf >= 1.0-14); #642
- move - lwgeomdependency to Suggests; using- st_transform_proj()on vector data cubes requires loading- lwgeomfirst
version 0.6-3
CRAN release: 2023-08-11
- st_downsample()has argument- offsetto pixel-shift downsampled images
- st_downsample()has argument- FUNto compute sub-tile aggregates; #604
- st_as_stars.bbox()retains- factorvalues; #640
- fix CRAN error in test script 
- st_crop()works (and warns) for the case when the crop area does not overlap with the area of the object; #638
version 0.6-2
CRAN release: 2023-07-12
- split.stars()accepts- starsobjects with multiple attributes; #635
- [.stars()supports- NAvalues in dimension ranges for vector geometry (- sfc) dimensions, resulting in empty geometries
- st_extract()supports extracting points values from curvilinear grids (when not proxy); #632
- read_mdim()reads curvilinear rasters (geolocation arrays), so far only at full extent/resolution
- st_as_stars.stars()accepts curvilinear argument with lon/lat array names present in- .x
- consistently use - OGC:CRS84instead of- EPSG:4326
- setting - values = NULLin- st_set_dimensions()removes dimension values
- more gracefully handle plotting of global coverage curvilinear grids; #632 
- image.stars()plots images (e.g. of cross sections) when x and/or y are singular or absent; #628
- st_as_stars.cubble_df()adds conversion from cubble;- cubble::as_cubble()methods converts back
- [<-.stars()accepts for- ian indicator (numeric length character) to the array to be replaced; #626
- plot.stars()gains an argument- key.labto set the legend key label (requires sf >= 1.0-13)
version 0.6-1
CRAN release: 2023-04-06
- remove - rgdaldependency
- read_stars()fixes combining bands with different block sizes; #623
- read_mdim()reads “raster” with single pixel (as a point)
- [.stars(), as in- r[x]allows- xto be a logical stars object
- [<-.stars_proxy()clones environment, so that after- r[r > 100] = NAwe don’t get infinite recursion when realizing- r
- read_stars()avoids reading a raster twice to determine how to choose- proxy;- proxycan now be set as (and defaults to) the number of cells (bands * rows * columns) above which data will not be read in memory but returned as- stars_proxyobject; #609
- fix using - RasterIOin- read_stars()when- proxy=TRUE; #608
- plot.stars()hook function can handle arguments- row,- col,- nrow,- ncol,- nr,- valueand- bbox; #600
- fix handling of categorical rasters with colors but without category labels; #595, fallout of #565 
- fix subsetting of proxy objects over a time range; #596 
version 0.6-0
CRAN release: 2022-11-21
- write_stars()writes scaled and/or shifted values when using argument- scale_offset; #589
- aggregate.stars_proxy()implements aggregation with non-spatial- byobjects (lazily)
- fix - [.stars_proxy()when selecting dimension 3 and higher; #561
- in - plot.stars(),- colcan also be a palette function
- st_res()returns spatial resolutions, and optionally all dimension resolutions; #557 thanks to Krzysztof Dyba
- read_stars()shortens band or array names that contain a common start or ending, unless names would become empty or- shorten=FALSEwas set; e.g.- shorten="B"puts a- Bbefore shortened array names
- printing - starsdimension tables omits fields with only- NULLor- NAvalues, unless- print(..., all = TRUE)is given
- improve reading categorical rasters, which now avoids calling - factor(); #565 thanks to Krzysztof Dyba
- read_mdim()will read bounds arrays for coordinates using the- boundsattribute, and accepts a- boundsargument to specify them when that attribute is missing
- time()returns time stamps of a time dimension
- st_cells()returns the cell index for a set of point coordinates, provided as- sfor- sfcobject; #558
- reading & writing vector data cubes: - read_mdim()reads CF compliant vector geometries, and reconstructs them into an- sfcdimension;- write_mdim()writes them.
- write_mdim()uses GDAL multidimensional array API;
- read_mdim()uses arguments- offset,- countand- stepto read sub-arrays or strided arrays (requires sf >= 1.0-9)
version 0.5-6
CRAN release: 2022-07-21
- export - read_mdim(), a reader using GDAL’s multidimensional array API (for sf <= 1.0-8)
- remove - tos_O1_2001-2002.ncfrom packaged datasets to keep source package size below 5 Mb
- as.POSIXct.stars()converts- PCICtdimensions to- POSIXctvalues.
- improve handling of - PCICt360 or 365 day calendars; read them in- read_mdim(requires sf >= 1.0-9)
- read_stars()reads factor levels better from attribute table; #484 thanks to @ailich
- read_stars()puts band names from- band_metaDESCRIPTION= tags into- values;
- improve handling of categorical rasters, and their exchange with - terra; #484
- plot()handles auto colors better for factor arrays
- read_ncdf()handles units more formally in setting crs; #533
- print message that dimensions of proxy objects do not reflect unevaluated operations; #530 
- passing - na.action = na.omitto- geom_stars()removes- NAvalues; #532
- read_stars()detects curvilinear grids automatically; #513
- st_warp()warps curvilinear grids (using Euclidean distances only on coordinates); #513
- Ops.stars()errors when (common) dimension are not identical; #506
- guess_raster()accepts empty rows/columns and sparse grids; #509
- speed up - rgbplotting; #503
- Added a new helper function - st_tile()to specify the block parameters (- nXOff,- nYOff,- nXsize,- nYSize) required by- RasterIOargument in- read_stars(); #492 thanks to Krzysztof Dyba
version 0.5-5
CRAN release: 2021-12-19
- st_as_stars.bbox()creates an empy raster file if- proxy = TRUE; #489
- st_rasterize()has option- align = TRUEto use a template for aligning the new raster to; #489
- adrop.stars()with missing dimensions no longer drops x/y raster dimensions; #485
- aggregate.stars()propagates units of arrays; #477
version 0.5-4
CRAN release: 2021-11-19
- c.stars()fails if it tries to merge arrays with different units; #475
- For NetCDF files, - read_stars()uses the- long_nameas array name; #475
- refresh CRS of packaged - L7_ETMs.tif; #466
- as.data.frame.stars()works for mixed regular and rectilinear dimension; #458
- plot.stars()plots curvilinear rasters with color table, or without table but- colargument passed; #456
- st_extract()accepts a matrix with points as- atargument, for when performance is important; see e.g. https://github.com/rspatial/terra/issues/341
- fix bug in - st_crop()when cropping area is larger than grid; #455
- export - st_downsample(), e.g. to be used by- tmap; https://github.com/r-tmap/tmap/issues/597
- argument - downsamplein- plot.stars()and- st_as_stars.stars_proxy()and- st_downsample()has the same effect (removed a one-offset between them).
- st_redimension()works for curvilinear grids; #441
- downsampleis propagated to subexpressions like- r[r < 50] = NA
- predict.stars()obtains an argument- drop_dimensionsthat, if- TRUE, drops dimensions from the prediction- data.frame; #362
- allow subsetting with - [by using labels, e.g. of band names.
version 0.5-3
CRAN release: 2021-06-08
- read_stars()accepts a function (or list with functions) as first argument, allowing for saving- starsobjects that read from package directories resolving platform-dependent paths at run-time
- handle categorical rasters starting at value 0 (by adding 1, and warning); #428 
- add - %in%method; #424
- read_stars()gains an argument- toleranceto control tolerance in dimension value comparisons; #414
- binary Ops (like - +,- -,- *etc.) work for- stars_proxyobjects; #390
- st_rasterize()rasterizes multiple attributes, and handles factors (when sf >= 0.9-9)
- write_stars()deals better with- stars_proxyobjects; #404
- fix regression in reading some - stars_proxyobjects; #379
- add - [<-(partially) and- is.namethods for- stars_proxyobjects; #402
- add - replace_na()methods; #402
version 0.5-2
CRAN release: 2021-03-17
- read and write factor levels as GDAL category names; write color table; #392 
- handle - normalize_pathfor choosing to- proxy; #391
- ignore units when there are different units across bands of a subdataset 
- speed up - st_rgb()using faster- st_apply()approach; #315, #390
- improve handling of crs in Spatial objects (avoid loss of wkt comments) 
- correctly write band subsets for smaller proxy objects; #291 
- write arbitrarily cropped proxy objects; #291 
- speed up - st_apply()when a function is provided that works on chunks at a time; #390
- warn when breaks = “quantile” results in a single class; #388 
- fix - [bug selecting bands in proxy objects; #388
- for - stars_proxyobjects,- write_stars()writes all objects into a multi-layer file; #385
- multi-file proxy objects can be - st_warp()ed with- use_gdal = TRUE; #385
version 0.5-1
CRAN release: 2021-01-25
- fix weird GDAL-related bug in stars2 vignette 
- read_ncdf()does not take time as mid-points of regular intervals, but as starting points; #378
version 0.5-0
CRAN release: 2021-01-19
- fix handling of rasters with color tables; #375 
- st_apply()and other methods for- stars_proxyobjects handle … ; #374
- add - st_bbox(),- st_crs()methods for terra’s- SpatVectorobjects; https://github.com/r-tmap/tmap/issues/536
- add - st_bbox(),- st_crs()and- st_as_stars()methods for terra’s- SpatRasterobjects; https://github.com/r-tmap/tmap/issues/536
- allow for multi-resolution attributes in - stars_proxyobjects (e.g., all gray scale sentinel-2 bands); see vignettes 2 and 7 for examples.
- plot()defaults to a categorical color scale when plotting a factor variable; https://github.com/r-tmap/tmap/issues/526
- st_extract()extracts space-time points if- time_columnis specified, and handles time intervals; #352
- add - [[<-.starsmethod, which is now called by- $<-.stars, so that array names can be set programmatically
- add - transmute()methods
- plot.stars()calls- droplevelsif a factor array has any- NAlevels; #339
- read_stars()reads- NaNs as- NA; #333
- improve - st_extract()method for both- starsand- stars_proxyobjects; interpolation options are reduced to bilinear; #322, #279, #290
- better handle categorical rasters that do not start at value 1; #329 
- plot layout can be controlled with - mfrow = c(nr, nc)argument
- stars_proxyobjects have a normalized path; #331
- cropping or selecting with - bboxtreats cells always as small polygons; #330
- add faster - st_extract()method for- starsobjects; #322
- added vignette: “How - rasterfunctions map to- starsfunctions”, by Sebastien Rochette; #122, #325
- fix bug in dimension - valuesfield when downsampling; #324
- write_stars()also writes out band names; #323
- add - rgdalto Suggests:
- each - call_listentry of a- stars_proxyobject carries its proper calling environment; #309
- st_as_sf.stars()copes with zero attribute (empty) stars objects
- add - st_set_bbox()generic, to set raster extent, motivated by #315
- get rid of more - proj4strings for representing coordinate reference systems; #312
- as(x, “Spatial”) correctly handles - fromdimension values different from one
- read_stars()now sets the- BANDNAMEGDAL metadata item, or else the band’s GetDescription() as the band’s dimension values
- st_as_stars.data.frame()reads simple tables (non-raster data) if- dimshas length less than 2
- band descriptions are in the band dimension values 
- dimension tables are simpler, and are shown properly in Rstudio 
- st_rgb()gains a- probsargument, to cut off and stretch based on quantiles
- as(x, "Raster")merges multiple attributes before converting to raster brick
version 0.4-3
CRAN release: 2020-07-08
- fix bug in - st_as_stars.Raster; set crs to the one assigned by raster; https://github.com/r-tmap/tmap/issues/471
- add - s2to Suggests:
- new function - st_rgb()collapses (reduces) a dimension to rgb hex value; #302
version 0.4-2
CRAN release: 2020-07-01
- aggregate.stars()handles arrays with NA values now correctly; brought up in #299 by Thorsten Simon
- aggregate.stars()gains an argument- exactwhich, if- TRUE, calls- exactextractrfor polygonal aggregation; #289
- read_stars()reads all subdatasets with dimensions equal to first, and warns when ignoring others; #296
- make copying over of dimensions somewhat easier; #295 
- st_as_stars.Raster()tries to read from file if the raster object is not an in-memory object.
- write_stars()normalizes path, as- read_starsalready did; #293
- st_as_stars.Raster()returns a proxy object if the raster layer is on disk
- add - st_extract()to extract e.g. time series from grids at point locations; #279; #290
- read_stars()chooses a value for- proxythat depends on the data dimensions; #281
- x/y range subsetting of - stars_proxyobjects now only reads that range, similar to how crop already did this.
- st_warp()preserves levels and colors; https://github.com/r-tmap/tmap/issues/429
- st_crop()works with bounding boxes larger than the downsampled bounding box; #276
- st_crop()has a non-zero default for- epsilon(bounding box shrinkage) to exclude cells touching the crop bounding box; #275
- image.stars()(and hence- plot.stars) gains an- extentargument for setting the extent of a plot; https://github.com/r-spatial/sf/issues/1193
version 0.4-1
CRAN release: 2020-04-07
- st_warp()(stars native) flips longitudes a full cycle; #256, #264, #269
- handle axis order in - st_transform(requires sf >= 0.9-1)
- depend on sf 0.9-0 
- adapt to cubelyr split-off from dplyr; add cubelyr to Suggests:; https://github.com/hadley/cubelyr/issues/2 
- add - droplevels()method
- handle color tables, category tables and raster attribute tables read through GDAL; #128, #245; https://github.com/r-spatial/mapview/issues/208 
- handle dimension - crsspecially, for proxy objects now.
- handle new-style - crsobjects from upcoming sf, moving away from proj4strings
- handle full - crsobjects as- refsyselement in a spatial dimensions, rather than proj4string only
- st_raster_type(x)reveals the raster type of- x; #248, https://github.com/r-tmap/tmap/issues/368
- add - st_as_stars.OpenStreetMap()method; #241 by @mtennekes
- add - st_flip()to flip arrays along one or more dimensions without changing dimension properties
- add - as.owin()method to convert (2D raster) stars objects to spatstat- owin; https://github.com/r-spatial/sf/issues/1233
- for temporal aggregation, - aggregate.starsnow also takes- byarguments like “week”, “month”, or “5 days”
- add - st_as_stars()method for- xtsobjects; improve- as.xtsfor- starsobjects
- skip some tests on solaris 
version 0.4-0
CRAN release: 2019-10-10
- plot()now uses all data to figure out breaks, in order to also find extremes; #216
- st_mosaic()creates mosaics from spatially disjoint rasters; #210
- #205 large refactoring of - read_ncdf, by David Blodgett and Mike Sumner, affecting #199, #89, #30, #86, #175
- allow for funny units like - m s**-1; #201
- plot uses - rasterImageby default if available; #194
- the - xand- yraster dimensions can be set and unset with- xyargument in- st_set_dimensions; #190
- retain - factorlevels with dimension values when set in- st_set_dimensions; #188
- add conversion from - stars_proxyto- Raster: #193
- make plotting of multiple curvilinear grids work 
- plot by default no cell borders in case of curvilinear, rotated or sheared grids 
- robustify handling of units 
- allow - read_ncdf()to ignore bounds
- scale was applied wrongly on multi-band images; #189, this requires sf >= 0.7-5 
- .ncis now recognized correctly by- write_starsand will write a NetCDF file; #186
- [subset now works correctly with negative or logical indices; #184, #185
- NAvalues for float32 grids are now correctly detected; #182, this requires sf >= 0.7-5
- cropping of a - stars_proxyobject now works; #179
- st_apply()can now loop over Raster layers; examples in #176
version 0.3-1
CRAN release: 2019-04-23
- st_as_stars.bboxnow has an- ncellsand- prettyargument, to better choose default raster dimensions
- geom_starsnow works with- stars_proxyobjects, but needs- downsampleto be set; #21
- NAvalues in Float32 rasters are now read correctly with- read_stars; #182
- handle bounds, when given, in - read_ncdf
- provide time parsing (POSIXct, PCICt) for - read_ncdf; #115
version 0.3-0
CRAN release: 2019-02-24
- add - st_areamethod to return raster grid cell sizes; #99
- fix - st_warpwith- use_gdal=TRUE, allowing for multi-band warps
- add - st_get_dimension_valuesto get the values of a particular dimension (if meaningful); #100
- allow for setting intervals as dimension values; see examples of - st_dimensions
- add - st_contour, and clean up- st_as_sf; #99
- experimental color table support; https://github.com/r-spatial/mapview/issues/208 
- rewrote vignettes, added vignettes; #99 
- deprecate - st_write.starsfor- write_stars; #96
- use “native” R array-factor support 
- support for - PCICt360- and 365-day calendars; #29
- remove import of - ncdf4in favor of- RNetCDF, now in line with practice in- ncmetapackage. Thanks to David Blodgett for motivation and testing (see #87, #94).
- st_as_sfuses date/time column names when appropriate
- allow missing trailing comma’s when subsetting: - a[1,,]and- a[1,]now do the same.
- move - rlangto Imports: ; rewrite- [subset using rlang.
- add conversion to and from - Spatial*classes, including the gridded ones, taking care of- factorvariables
- depend on sf 0.7-2 
- add - logzsupport for log-scale keys to- plotand- image
version 0.2-0
CRAN release: 2018-10-25
- vignettes now use an external package, - starsdata, for larger dataset examples
- support - [<-.starse.g. to mask out values; support- is.na.starsto replace NA masks
- support - cutmethods and factor arrays (plot, subset); #56
- add - st_rasterize, which uses- GDALRasterizeto rasterize an sf object; #13
- st_as_sf.starsnow uses- GDAL(F)Polygonizewhen give a regular or sheared grid grid cells are not points, and returns contour bands using- GDALContourGenerateEx(requiring GDAL 2.4.0) in case cells are points; #13
- support curvilinear grids; see #54 and the - data_modelvignette
- add vignette about how - stars_proxyobjects work
- stars_proxyobjects defer processing of- st_applyjobs until after subsampling; #50
- allow reading sections of a raster, raster at a lower resolution, selected bands; #48 
- allow reading vectors (arrays) with more than 2^31 elements; #48 
- fold all higher dimensions into the third dimension before coercing to - Raster; #40
version 0.1-0
- add - merge(merge attributes into array dimension) and- split(split dimension over attributes)
- interface to sf, raster and spacetime 
- improve plotting 
- handle - logicalarrays in plot
- add - st_apply, analogous to- apply
- add cropping/masking when used as x[buf] with buf an - sf,- sfcor- bboxobject; masking when- x[buf, crop = FALSE]
- add Ops (+,-,/ etc) and Math (sqrt, pow, sin etc) methods 
- add - dimnamesand- dimnames<-methods for stars objects
- downsample large grids to only plot pixels actually shown 
- can plot rectilinear grids (but will plot rgb images as regular grids) 
- rgbargument to- imageworks
- [array-like subsetting works; first index is attribute selector
version 0.0
- interface the 9 C++ gdal utils through gdal_utils()(now part ofsf)