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’
  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’
  Comparing ‘krige0.Rout’ to ‘krige0.Rout.save’ ...21,22d20
< 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).
  Running ‘line.R’
  Comparing ‘line.Rout’ to ‘line.Rout.save’ ...24,25d23
< 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).
  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’ [31m/23m]
  Running ‘unproj.R’ [6s/16s]
  Comparing ‘unproj.Rout’ to ‘unproj.Rout.save’ ... OK
  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’ [31m/28m]
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
  Warning message:
  In showSRID(uprojargs, format = "PROJ", multiline = "NO", prefer_proj = prefer_proj) :
    Discarded datum Amersfoort in Proj4 definition
  > 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(rgdal))
  > writeGDAL(meuse.grid[,"dist"], "meuse.tif", "GTiff")
  > suppressPackageStartupMessages(library(stars))
  > (st0 = setNames(read_stars("meuse.tif"), "dist"))
  stars object with 2 dimensions and 1 attribute
  attribute(s):
        Min.   1st Qu.   Median      Mean  3rd Qu.     Max. NA's
  dist     0 0.1192915 0.271535 0.2971195 0.440159 0.992607 5009
  dimension(s):
    from  to offset delta              refsys point values x/y
  x    1  78 178440    40 Amersfoort / RD New FALSE   NULL [x]
  y    1 104 333760   -40 Amersfoort / RD New FALSE   NULL [y]
  > st = st_as_stars(meuse.grid)
  > all.equal(st_dimensions(st0), st_dimensions(st))
  [1] "Component \"x\": Component \"refsys\": Component \"wkt\": 1 string mismatch"           
  [2] "Component \"x\": Component \"point\": 'is.NA' value mismatch: 1 in current 0 in target"
  [3] "Component \"y\": Component \"refsys\": Component \"wkt\": 1 string mismatch"           
  [4] "Component \"y\": Component \"point\": 'is.NA' value mismatch: 1 in current 0 in target"
  > st_crs(st0)
  Coordinate Reference System:
    User input: Amersfoort / RD New 
    wkt:
  PROJCRS["Amersfoort / RD New",
      BASEGEOGCRS["Amersfoort",
          DATUM["Amersfoort",
              ELLIPSOID["Bessel 1841",6377397.155,299.152812800003,
                  LENGTHUNIT["metre",1]]],
          PRIMEM["Greenwich",0,
              ANGLEUNIT["degree",0.0174532925199433]],
          ID["EPSG",4289]],
      CONVERSION["Oblique Stereographic",
          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]]],
      CS[Cartesian,2],
          AXIS["easting",east,
              ORDER[1],
              LENGTHUNIT["metre",1,
                  ID["EPSG",9001]]],
          AXIS["northing",north,
              ORDER[2],
              LENGTHUNIT["metre",1,
                  ID["EPSG",9001]]]]
  > 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 refsys point values x/y
  x    1  78 178440    40     NA    NA   NULL [x]
  y    1 104 333760   -40     NA    NA   NULL [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 point values x/y
  x    1  78 178440    40 Amersfoort / RD New    NA   NULL [x]
  y    1 104 333760   -40 Amersfoort / RD New    NA   NULL [y]
  > st_as_stars(raster::stack(k_sp_grd)) # check
  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 point
  x       1  78 178440    40 Amersfoort / RD New    NA
  y       1 104 333760   -40 Amersfoort / RD New    NA
  band    1   3     NA    NA                  NA    NA
                                values x/y
  x                               NULL [x]
  y                               NULL [y]
  band var1.pred, var1.var , cls          
  > 
  > all.equal(st_redimension(st_as_stars(k_sp_grd)), st_as_stars(raster::stack(k_sp_grd)), check.attributes=FALSE)
  [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 point values x/y
  x       1  4                      10    0.5      NA    NA   NULL [x]
  y       1  4                       0   -0.7      NA    NA   NULL [y]
  time    1  4 2019-02-25 15:37:25 UTC 1 secs POSIXct    NA   NULL    
  > 
  > 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 point values x/y
  x       1  4                      10    0.5      NA    NA   NULL [x]
  y       1  4            -1.11022e-16   -0.7      NA    NA   NULL [y]
  time    1  4 2019-02-25 15:37:25 UTC 1 secs POSIXct    NA   NULL    
  > 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) && require(maps)) {
  > 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)
  Loading required package: maps
  > library(maptools)
  Checking rgeos availability: TRUE
  Please note that 'maptools' will be retired by the end of 2023,
  plan transition at your earliest convenience;
  some functionality will be moved to 'sp'.
  > 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)
  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).