Last updated on 2023-03-27 05:52:43 CEST.
Flavor | Version | Tinstall | Tcheck | Ttotal | Status | Flags |
---|---|---|---|---|---|---|
r-devel-linux-x86_64-debian-clang | 2.1-0 | 23.47 | 226.93 | 250.40 | OK | |
r-devel-linux-x86_64-debian-gcc | 2.1-0 | 21.83 | 175.08 | 196.91 | OK | |
r-devel-linux-x86_64-fedora-clang | 2.1-0 | 252.32 | ERROR | |||
r-devel-linux-x86_64-fedora-gcc | 2.1-0 | 335.55 | OK | |||
r-patched-linux-x86_64 | 2.1-0 | 27.92 | 226.50 | 254.42 | OK | |
r-release-linux-x86_64 | 2.1-0 | 20.03 | 214.10 | 234.13 | OK | |
r-release-macos-arm64 | 2.1-0 | 85.00 | OK | |||
r-release-macos-x86_64 | 2.1-0 | 137.00 | OK | |||
r-release-windows-x86_64 | 2.1-0 | 111.00 | 346.00 | 457.00 | OK | |
r-oldrel-macos-arm64 | 2.1-0 | 123.00 | OK | |||
r-oldrel-macos-x86_64 | 2.1-0 | 144.00 | OK | |||
r-oldrel-windows-ix86+x86_64 | 2.1-0 | 65.00 | 388.00 | 453.00 | OK |
Version: 2.1-0
Check: tests
Result: ERROR
Running ‘allier.R’
Comparing ‘allier.Rout’ to ‘allier.Rout.save’ ... OK
Running ‘blockkr.R’
Comparing ‘blockkr.Rout’ to ‘blockkr.Rout.save’ ... OK
Running ‘covtable.R’
Comparing ‘covtable.Rout’ to ‘covtable.Rout.save’ ... OK
Running ‘cv.R’ [3s/11s]
Comparing ‘cv.Rout’ to ‘cv.Rout.save’ ... OK
Running ‘cv3d.R’
Comparing ‘cv3d.Rout’ to ‘cv3d.Rout.save’ ... OK
Running ‘fit.R’
Comparing ‘fit.Rout’ to ‘fit.Rout.save’ ... OK
Running ‘krige0.R’ [5s/12s]
Comparing ‘krige0.Rout’ to ‘krige0.Rout.save’ ... OK
Running ‘line.R’
Comparing ‘line.Rout’ to ‘line.Rout.save’ ...57a58,59
> Warning message:
> In wkt(x) : CRS object has no comment
129a132,133
> Warning message:
> In wkt(x) : CRS object has no comment
190a195,196
> Warning message:
> In wkt(x) : CRS object has no comment
Running ‘merge.R’
Comparing ‘merge.Rout’ to ‘merge.Rout.save’ ... OK
Running ‘na.action.R’
Comparing ‘na.action.Rout’ to ‘na.action.Rout.save’ ... OK
Running ‘rings.R’
Comparing ‘rings.Rout’ to ‘rings.Rout.save’ ... OK
Running ‘sim.R’
Comparing ‘sim.Rout’ to ‘sim.Rout.save’ ... OK
Running ‘stars.R’ [37m/63m]
Running ‘unproj.R’ [6s/17s]
Comparing ‘unproj.Rout’ to ‘unproj.Rout.save’ ...58c58
< Please note that rgdal will be retired during 2023,
---
> Please note that rgdal will be retired by the end of 2023,
61,62c61,62
< See https://r-spatial.org/r/2022/04/12/evolution.html and https://github.com/r-spatial/evolution
< rgdal: version: 1.6-5, (SVN revision 1199)
---
>
> rgdal: version: 1.5-31, (SVN revision 1171)
64,66c64,65
< Loaded GDAL runtime: GDAL 3.6.3, released 2023/03/07
< Path to GDAL shared files: /usr/local/clang/share/gdal
< GDAL does not use iconv for recoding strings.
---
> Loaded GDAL runtime: GDAL 3.4.3, released 2022/04/22
> Path to GDAL shared files: /usr/share/gdal
68,69c67,68
< Loaded PROJ runtime: Rel. 8.2.1, January 1st, 2022, [PJ_VERSION: 821]
< Path to PROJ shared files: /data/gannet/ripley/.local/share/proj:/usr/local/share/proj:/usr/local/share/proj
---
> Loaded PROJ runtime: Rel. 8.2.0, November 1st, 2021, [PJ_VERSION: 820]
> Path to PROJ shared files: /home/edzer/.local/share/proj:/usr/share/proj
71c70
< Linking to sp version:1.6-0
---
> Linking to sp version:1.4-7
74c73
< Spam version 2.9-1 (2022-08-07) is loaded.
---
> Spam version 2.8-0 (2022-01-05) is loaded.
101,102c100,104
< Warning message:
< PROJ support is provided by the sf and terra packages among others
---
> Warning messages:
> 1: In showSRID(uprojargs, format = "PROJ", multiline = "NO", prefer_proj = prefer_proj) :
> Discarded datum Amersfoort in Proj4 definition
> 2: In showSRID(uprojargs, format = "PROJ", multiline = "NO", prefer_proj = prefer_proj) :
> Discarded datum Unknown based on WGS84 ellipsoid in Proj4 definition
Running ‘variogram.R’
Comparing ‘variogram.Rout’ to ‘variogram.Rout.save’ ... OK
Running ‘vdist.R’
Comparing ‘vdist.Rout’ to ‘vdist.Rout.save’ ... OK
Running ‘windst.R’ [0m/26m]
Running the tests in ‘tests/stars.R’ failed.
Complete output:
> Sys.setenv(TZ = "UTC")
>
> # 0. using sp:
>
> suppressPackageStartupMessages(library(sp))
> demo(meuse, ask = FALSE)
demo(meuse)
---- ~~~~~
> require(sp)
> crs = CRS("+init=epsg:28992")
> data("meuse")
> coordinates(meuse) <- ~x+y
> proj4string(meuse) <- crs
> data("meuse.grid")
> coordinates(meuse.grid) <- ~x+y
> gridded(meuse.grid) <- TRUE
> proj4string(meuse.grid) <- crs
> data("meuse.riv")
> meuse.riv <- SpatialPolygons(list(Polygons(list(Polygon(meuse.riv)),"meuse.riv")))
> proj4string(meuse.riv) <- crs
> data("meuse.area")
> meuse.area = SpatialPolygons(list(Polygons(list(Polygon(meuse.area)), "area")))
> proj4string(meuse.area) <- crs
> suppressPackageStartupMessages(library(gstat))
> v = variogram(log(zinc)~1, meuse)
> (v.fit = fit.variogram(v, vgm(1, "Sph", 900, 1)))
model psill range
1 Nug 0.05066243 0.0000
2 Sph 0.59060780 897.0209
> k_sp = krige(log(zinc)~1, meuse[-(1:5),], meuse[1:5,], v.fit)
[using ordinary kriging]
OMP: Warning #96: Cannot form a team with 8 threads, using 2 instead.
OMP: Hint Consider unsetting KMP_DEVICE_THREAD_LIMIT (KMP_ALL_THREADS), KMP_TEAMS_THREAD_LIMIT, and OMP_THREAD_LIMIT (if any are set).
> k_sp_grd = krige(log(zinc)~1, meuse, meuse.grid, v.fit)
[using ordinary kriging]
>
> # 1. using sf:
> suppressPackageStartupMessages(library(sf))
> demo(meuse_sf, ask = FALSE, echo = FALSE)
> # reloads meuse as data.frame, so
> demo(meuse, ask = FALSE)
demo(meuse)
---- ~~~~~
> require(sp)
> crs = CRS("+init=epsg:28992")
> data("meuse")
> coordinates(meuse) <- ~x+y
> proj4string(meuse) <- crs
> data("meuse.grid")
> coordinates(meuse.grid) <- ~x+y
> gridded(meuse.grid) <- TRUE
> proj4string(meuse.grid) <- crs
> data("meuse.riv")
> meuse.riv <- SpatialPolygons(list(Polygons(list(Polygon(meuse.riv)),"meuse.riv")))
> proj4string(meuse.riv) <- crs
> data("meuse.area")
> meuse.area = SpatialPolygons(list(Polygons(list(Polygon(meuse.area)), "area")))
> proj4string(meuse.area) <- crs
>
> v = variogram(log(zinc)~1, meuse_sf)
> (v.fit = fit.variogram(v, vgm(1, "Sph", 900, 1)))
model psill range
1 Nug 0.05066243 0.0000
2 Sph 0.59060780 897.0209
> k_sf = krige(log(zinc)~1, meuse_sf[-(1:5),], meuse_sf[1:5,], v.fit)
[using ordinary kriging]
>
> all.equal(k_sp, as(k_sf, "Spatial"), check.attributes = FALSE)
[1] TRUE
> all.equal(k_sp, as(k_sf, "Spatial"), check.attributes = TRUE)
[1] "Attributes: < Component \"bbox\": Attributes: < Component \"dimnames\": Component 1: 2 string mismatches > >"
[2] "Attributes: < Component \"coords\": Attributes: < Component \"dimnames\": Component 2: 2 string mismatches > >"
[3] "Attributes: < Component \"coords.nrs\": Numeric: lengths (2, 0) differ >"
[4] "Attributes: < Component \"proj4string\": Attributes: < Component \"comment\": 1 string mismatch > >"
>
> # 2. using stars for grid:
>
> suppressPackageStartupMessages(library(stars))
> st = st_as_stars(meuse.grid)
> st_crs(st)
Coordinate Reference System:
User input: Amersfoort / RD New
wkt:
PROJCRS["Amersfoort / RD New",
BASEGEOGCRS["Amersfoort",
DATUM["Amersfoort",
ELLIPSOID["Bessel 1841",6377397.155,299.1528128,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
ID["EPSG",4289]],
CONVERSION["RD New",
METHOD["Oblique Stereographic",
ID["EPSG",9809]],
PARAMETER["Latitude of natural origin",52.1561605555556,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8801]],
PARAMETER["Longitude of natural origin",5.38763888888889,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8802]],
PARAMETER["Scale factor at natural origin",0.9999079,
SCALEUNIT["unity",1],
ID["EPSG",8805]],
PARAMETER["False easting",155000,
LENGTHUNIT["metre",1],
ID["EPSG",8806]],
PARAMETER["False northing",463000,
LENGTHUNIT["metre",1],
ID["EPSG",8807]],
ID["EPSG",19914]],
CS[Cartesian,2],
AXIS["(E)",east,
ORDER[1],
LENGTHUNIT["metre",1,
ID["EPSG",9001]]],
AXIS["(N)",north,
ORDER[2],
LENGTHUNIT["metre",1,
ID["EPSG",9001]]],
USAGE[
SCOPE["unknown"],
AREA["Netherlands - onshore, including Waddenzee, Dutch Wadden Islands and 12-mile offshore coastal zone."],
BBOX[50.75,3.2,53.7,7.22]]]
>
> # compare inputs:
> sp = as(st, "Spatial")
> fullgrid(meuse.grid) = TRUE
> all.equal(sp, meuse.grid["dist"], check.attributes = FALSE)
[1] "Names: Lengths (5, 1) differ (string compare on first 1)"
[2] "Names: 1 string mismatch"
> all.equal(sp, meuse.grid["dist"], check.attributes = TRUE, use.names = FALSE)
[1] "Names: Lengths (5, 1) differ (string compare on first 1)"
[2] "Names: 1 string mismatch"
[3] "Attributes: < Component 3: Names: 1 string mismatch >"
[4] "Attributes: < Component 3: Length mismatch: comparison on first 1 components >"
[5] "Attributes: < Component 3: Component 1: Mean relative difference: 1.08298 >"
[6] "Attributes: < Component 4: Attributes: < Component 2: names for current but not for target > >"
[7] "Attributes: < Component 4: Attributes: < Component 3: names for current but not for target > >"
>
> # kriging:
> st_crs(st) = st_crs(meuse_sf) = NA # GDAL roundtrip messes them up!
> k_st = if (Sys.getenv("USER") == "travis") {
+ try(krige(log(zinc)~1, meuse_sf, st, v.fit))
+ } else {
+ krige(log(zinc)~1, meuse_sf, st, v.fit)
+ }
[using ordinary kriging]
> k_st
stars object with 2 dimensions and 2 attributes
attribute(s):
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
var1.pred 4.7765547 5.2376293 5.5728839 5.7072287 6.1717619 7.4399911 5009
var1.var 0.0854949 0.1372864 0.1621838 0.1853319 0.2116152 0.5002756 5009
dimension(s):
from to offset delta x/y
x 1 78 178440 40 [x]
y 1 104 333760 -40 [y]
>
> # handle factors, when going to stars?
> k_sp_grd$cls = cut(k_sp_grd$var1.pred, c(0, 5, 6, 7, 8, 9))
> st_as_stars(k_sp_grd)
stars object with 2 dimensions and 3 attributes
attribute(s):
var1.pred var1.var cls
Min. :4.777 Min. :0.085 (0,5]: 316
1st Qu.:5.238 1st Qu.:0.137 (5,6]:1778
Median :5.573 Median :0.162 (6,7]: 962
Mean :5.707 Mean :0.185 (7,8]: 47
3rd Qu.:6.172 3rd Qu.:0.212 (8,9]: 0
Max. :7.440 Max. :0.500 NA's :5009
NA's :5009 NA's :5009
dimension(s):
from to offset delta refsys x/y
x 1 78 178440 40 Amersfoort / RD New [x]
y 1 104 333760 -40 Amersfoort / RD New [y]
> if (require(raster, quietly = TRUE)) {
+ print(st_as_stars(raster::stack(k_sp_grd))) # check
+ print(all.equal(st_redimension(st_as_stars(k_sp_grd)), st_as_stars(raster::stack(k_sp_grd)), check.attributes=FALSE))
+ }
stars object with 3 dimensions and 1 attribute
attribute(s):
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
var1.pred 0.0854949 0.2116778 2 2.710347 5.237542 7.439991 15027
dimension(s):
from to offset delta refsys values
x 1 78 178440 40 Amersfoort / RD New NULL
y 1 104 333760 -40 Amersfoort / RD New NULL
band 1 3 NA NA NA var1.pred, var1.var , cls
x/y
x [x]
y [y]
band
[1] TRUE
>
> suppressPackageStartupMessages(library(spacetime))
>
> Sys.setenv(TZ="")
> tm = as.POSIXct("2019-02-25 15:37:24 CET")
> n = 4
> s = stars:::st_stars(list(foo = array(1:(n^3), rep(n,3))),
+ stars:::create_dimensions(list(
+ x = stars:::create_dimension(from = 1, to = n, offset = 10, delta = 0.5),
+ y = stars:::create_dimension(from = 1, to = n, offset = 0, delta = -0.7),
+ time = stars:::create_dimension(values = tm + 1:n)),
+ raster = stars:::get_raster(dimensions = c("x", "y")))
+ )
> s
stars object with 3 dimensions and 1 attribute
attribute(s):
Min. 1st Qu. Median Mean 3rd Qu. Max.
foo 1 16.75 32.5 32.5 48.25 64
dimension(s):
from to offset delta refsys x/y
x 1 4 10 0.5 NA [x]
y 1 4 0 -0.7 NA [y]
time 1 4 2019-02-25 15:37:25 UTC 1 secs POSIXct
>
> as.data.frame(s)
x y time foo
1 10.25 -0.35 2019-02-25 15:37:25 1
2 10.75 -0.35 2019-02-25 15:37:25 2
3 11.25 -0.35 2019-02-25 15:37:25 3
4 11.75 -0.35 2019-02-25 15:37:25 4
5 10.25 -1.05 2019-02-25 15:37:25 5
6 10.75 -1.05 2019-02-25 15:37:25 6
7 11.25 -1.05 2019-02-25 15:37:25 7
8 11.75 -1.05 2019-02-25 15:37:25 8
9 10.25 -1.75 2019-02-25 15:37:25 9
10 10.75 -1.75 2019-02-25 15:37:25 10
11 11.25 -1.75 2019-02-25 15:37:25 11
12 11.75 -1.75 2019-02-25 15:37:25 12
13 10.25 -2.45 2019-02-25 15:37:25 13
14 10.75 -2.45 2019-02-25 15:37:25 14
15 11.25 -2.45 2019-02-25 15:37:25 15
16 11.75 -2.45 2019-02-25 15:37:25 16
17 10.25 -0.35 2019-02-25 15:37:26 17
18 10.75 -0.35 2019-02-25 15:37:26 18
19 11.25 -0.35 2019-02-25 15:37:26 19
20 11.75 -0.35 2019-02-25 15:37:26 20
21 10.25 -1.05 2019-02-25 15:37:26 21
22 10.75 -1.05 2019-02-25 15:37:26 22
23 11.25 -1.05 2019-02-25 15:37:26 23
24 11.75 -1.05 2019-02-25 15:37:26 24
25 10.25 -1.75 2019-02-25 15:37:26 25
26 10.75 -1.75 2019-02-25 15:37:26 26
27 11.25 -1.75 2019-02-25 15:37:26 27
28 11.75 -1.75 2019-02-25 15:37:26 28
29 10.25 -2.45 2019-02-25 15:37:26 29
30 10.75 -2.45 2019-02-25 15:37:26 30
31 11.25 -2.45 2019-02-25 15:37:26 31
32 11.75 -2.45 2019-02-25 15:37:26 32
33 10.25 -0.35 2019-02-25 15:37:27 33
34 10.75 -0.35 2019-02-25 15:37:27 34
35 11.25 -0.35 2019-02-25 15:37:27 35
36 11.75 -0.35 2019-02-25 15:37:27 36
37 10.25 -1.05 2019-02-25 15:37:27 37
38 10.75 -1.05 2019-02-25 15:37:27 38
39 11.25 -1.05 2019-02-25 15:37:27 39
40 11.75 -1.05 2019-02-25 15:37:27 40
41 10.25 -1.75 2019-02-25 15:37:27 41
42 10.75 -1.75 2019-02-25 15:37:27 42
43 11.25 -1.75 2019-02-25 15:37:27 43
44 11.75 -1.75 2019-02-25 15:37:27 44
45 10.25 -2.45 2019-02-25 15:37:27 45
46 10.75 -2.45 2019-02-25 15:37:27 46
47 11.25 -2.45 2019-02-25 15:37:27 47
48 11.75 -2.45 2019-02-25 15:37:27 48
49 10.25 -0.35 2019-02-25 15:37:28 49
50 10.75 -0.35 2019-02-25 15:37:28 50
51 11.25 -0.35 2019-02-25 15:37:28 51
52 11.75 -0.35 2019-02-25 15:37:28 52
53 10.25 -1.05 2019-02-25 15:37:28 53
54 10.75 -1.05 2019-02-25 15:37:28 54
55 11.25 -1.05 2019-02-25 15:37:28 55
56 11.75 -1.05 2019-02-25 15:37:28 56
57 10.25 -1.75 2019-02-25 15:37:28 57
58 10.75 -1.75 2019-02-25 15:37:28 58
59 11.25 -1.75 2019-02-25 15:37:28 59
60 11.75 -1.75 2019-02-25 15:37:28 60
61 10.25 -2.45 2019-02-25 15:37:28 61
62 10.75 -2.45 2019-02-25 15:37:28 62
63 11.25 -2.45 2019-02-25 15:37:28 63
64 11.75 -2.45 2019-02-25 15:37:28 64
> plot(s, col = sf.colors(), axes = TRUE)
> (s.stfdf = as(s, "STFDF"))
An object of class "STFDF"
Slot "data":
foo
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 20
21 21
22 22
23 23
24 24
25 25
26 26
27 27
28 28
29 29
30 30
31 31
32 32
33 33
34 34
35 35
36 36
37 37
38 38
39 39
40 40
41 41
42 42
43 43
44 44
45 45
46 46
47 47
48 48
49 49
50 50
51 51
52 52
53 53
54 54
55 55
56 56
57 57
58 58
59 59
60 60
61 61
62 62
63 63
64 64
Slot "sp":
Object of class SpatialPixels
Grid topology:
cellcentre.offset cellsize cells.dim
x 10.25 0.5 4
y -2.45 0.7 4
SpatialPoints:
x y
[1,] 10.25 -0.35
[2,] 10.75 -0.35
[3,] 11.25 -0.35
[4,] 11.75 -0.35
[5,] 10.25 -1.05
[6,] 10.75 -1.05
[7,] 11.25 -1.05
[8,] 11.75 -1.05
[9,] 10.25 -1.75
[10,] 10.75 -1.75
[11,] 11.25 -1.75
[12,] 11.75 -1.75
[13,] 10.25 -2.45
[14,] 10.75 -2.45
[15,] 11.25 -2.45
[16,] 11.75 -2.45
Coordinate Reference System (CRS) arguments: NA
Slot "time":
timeIndex
2019-02-25 15:37:25 1
2019-02-25 15:37:26 2
2019-02-25 15:37:27 3
2019-02-25 15:37:28 4
Slot "endTime":
[1] "2019-02-25 15:37:26 UTC" "2019-02-25 15:37:27 UTC"
[3] "2019-02-25 15:37:28 UTC" "2019-02-25 15:37:29 UTC"
> stplot(s.stfdf, scales = list(draw = TRUE))
>
> (s2 = st_as_stars(s.stfdf))
stars object with 3 dimensions and 1 attribute
attribute(s):
Min. 1st Qu. Median Mean 3rd Qu. Max.
foo 1 16.75 32.5 32.5 48.25 64
dimension(s):
from to offset delta refsys x/y
x 1 4 10 0.5 NA [x]
y 1 4 -1.11022e-16 -0.7 NA [y]
time 1 4 2019-02-25 15:37:25 UTC 1 secs POSIXct
> plot(s2, col = sf.colors(), axes = TRUE)
> all.equal(s, s2, check.attributes = FALSE)
[1] TRUE
>
> # multiple simulations:
> data(meuse, package = "sp")
> data(meuse.grid, package = "sp")
> coordinates(meuse.grid) <- ~x+y
> gridded(meuse.grid) <- TRUE
> meuse.grid = st_as_stars(meuse.grid)
> meuse_sf = st_as_sf(meuse, coords = c("x", "y"))
> g = gstat(NULL, "zinc", zinc~1, meuse_sf, model = vgm(1, "Exp", 300), nmax = 10)
> g = gstat(g, "lead", lead~1, meuse_sf, model = vgm(1, "Exp", 300), nmax = 10, fill.cross = TRUE)
> set.seed(123)
> (p = predict(g, meuse.grid, nsim = 5))
drawing 5 multivariate GLS realisations of beta...
Running the tests in ‘tests/windst.R’ failed.
Complete output:
> suppressPackageStartupMessages(library(sp))
> suppressPackageStartupMessages(library(spacetime))
> suppressPackageStartupMessages(library(gstat))
> suppressPackageStartupMessages(library(stars))
>
> data(wind)
> wind.loc$y = as.numeric(char2dms(as.character(wind.loc[["Latitude"]])))
> wind.loc$x = as.numeric(char2dms(as.character(wind.loc[["Longitude"]])))
> coordinates(wind.loc) = ~x+y
> proj4string(wind.loc) = "+proj=longlat +datum=WGS84 +ellps=WGS84"
>
> wind$time = ISOdate(wind$year+1900, wind$month, wind$day)
> wind$jday = as.numeric(format(wind$time, '%j'))
> stations = 4:15
> windsqrt = sqrt(0.5148 * wind[stations]) # knots -> m/s
> Jday = 1:366
> daymeans = colMeans(
+ sapply(split(windsqrt - colMeans(windsqrt), wind$jday), colMeans))
> meanwind = lowess(daymeans ~ Jday, f = 0.1)$y[wind$jday]
> velocities = apply(windsqrt, 2, function(x) { x - meanwind })
> # match order of columns in wind to Code in wind.loc;
> # convert to utm zone 29, to be able to do interpolation in
> # proper Euclidian (projected) space:
> pts = coordinates(wind.loc[match(names(wind[4:15]), wind.loc$Code),])
> pts = SpatialPoints(pts)
> if (require(rgdal, quietly = TRUE) && require(maps, quietly = TRUE)) {
+ proj4string(pts) = "+proj=longlat +datum=WGS84 +ellps=WGS84"
+ utm29 = CRS("+proj=utm +zone=29 +datum=WGS84 +ellps=WGS84")
+ pts = spTransform(pts, utm29)
+ # note the t() in:
+ w = STFDF(pts, wind$time, data.frame(values = as.vector(t(velocities))))
+
+ library(mapdata)
+ library(maptools)
+ m = map2SpatialLines(
+ map("worldHires", xlim = c(-11,-5.4), ylim = c(51,55.5), plot=F))
+ proj4string(m) = "+proj=longlat +datum=WGS84 +ellps=WGS84"
+ m = spTransform(m, utm29)
+
+ # setup grid
+ grd = SpatialPixels(SpatialPoints(makegrid(m, n = 300)),
+ proj4string = m@proj4string)
+ # grd$t = rep(1, nrow(grd))
+ #coordinates(grd) = ~x1+x2
+ #gridded(grd)=TRUE
+
+ # select april 1961:
+ w = w[, "1961-04"]
+
+ covfn = function(x, y = x) {
+ du = spDists(coordinates(x), coordinates(y))
+ t1 = as.numeric(index(x)) # time in seconds
+ t2 = as.numeric(index(y)) # time in seconds
+ dt = abs(outer(t1, t2, "-"))
+ # separable, product covariance model:
+ 0.6 * exp(-du/750000) * exp(-dt / (1.5 * 3600 * 24))
+ }
+
+ n = 10
+ tgrd = seq(min(index(w)), max(index(w)), length=n)
+ pred = krige0(sqrt(values)~1, w, STF(grd, tgrd), covfn)
+ layout = list(list("sp.points", pts, first=F, cex=.5),
+ list("sp.lines", m, col='grey'))
+ wind.pr0 = STFDF(grd, tgrd, data.frame(var1.pred = pred))
+
+ v = vgmST("separable",
+ space = vgm(1, "Exp", 750000),
+ time = vgm(1, "Exp", 1.5 * 3600 * 24),
+ sill = 0.6)
+ wind.ST = krigeST(sqrt(values)~1, w, STF(grd, tgrd), v)
+
+ all.equal(wind.pr0, wind.ST)
+
+ # stars:
+ df = data.frame(a = rep(NA, 324*10))
+ s = STF(grd, tgrd)
+ newd = addAttrToGeom(s, df)
+ wind.sta = krigeST(sqrt(values)~1, st_as_stars(w), st_as_stars(newd), v)
+ # 1
+ plot(stars::st_as_stars(wind.ST), breaks = "equal", col = sf.colors())
+ # 2
+ stplot(wind.ST)
+ # 3
+ plot(wind.sta, breaks = "equal", col = sf.colors())
+ st_as_stars(wind.ST)[[1]][1:3,1:3,1]
+ (wind.sta)[[1]][1:3,1:3,1]
+ st_bbox(wind.sta)
+ bbox(wind.ST)
+ all.equal(wind.sta, stars::st_as_stars(wind.ST), check.attributes = FALSE)
+
+ # 4: roundtrip wind.sta->STFDF->stars
+ rt = stars::st_as_stars(as(wind.sta, "STFDF"))
+ plot(rt, breaks = "equal", col = sf.colors())
+ # 5:
+ stplot(as(wind.sta, "STFDF"))
+ st_bbox(rt)
+
+ # 6:
+ stplot(as(st_as_stars(wind.ST), "STFDF"))
+ }
Please note that rgdal will be retired during 2023,
plan transition to sf/stars/terra functions using GDAL and PROJ
at your earliest convenience.
See https://r-spatial.org/r/2022/04/12/evolution.html and https://github.com/r-spatial/evolution
rgdal: version: 1.6-5, (SVN revision 1199)
Geospatial Data Abstraction Library extensions to R successfully loaded
Loaded GDAL runtime: GDAL 3.6.3, released 2023/03/07
Path to GDAL shared files: /usr/local/clang/share/gdal
GDAL does not use iconv for recoding strings.
GDAL binary built with GEOS: TRUE
Loaded PROJ runtime: Rel. 8.2.1, January 1st, 2022, [PJ_VERSION: 821]
Path to PROJ shared files: /data/gannet/ripley/.local/share/proj:/usr/local/share/proj:/usr/local/share/proj
PROJ CDN enabled: FALSE
Linking to sp version:1.6-0
To mute warnings of possible GDAL/OSR exportToProj4() degradation,
use options("rgdal_show_exportToProj4_warnings"="none") before loading sp or rgdal.
Checking rgeos availability: TRUE
Please note that 'maptools' will be retired during 2023,
plan transition at your earliest convenience;
some functionality will be moved to 'sp'.
OMP: Warning #96: Cannot form a team with 12 threads, using 2 instead.
OMP: Hint Consider unsetting KMP_DEVICE_THREAD_LIMIT (KMP_ALL_THREADS), KMP_TEAMS_THREAD_LIMIT, and OMP_THREAD_LIMIT (if any are set).
Flavor: r-devel-linux-x86_64-fedora-clang