R/matching.R
matching.RdThe spatial matching is calculated using sf::st_distance() with different
distance (in meter or degree) available depending on the coordinate reference
system and parameter (which and par). The temporal matching is based on
a temporal matching function (temporal_match_fn) that can be customised.
match_sites(
df1,
df2,
crs = sf::st_crs("OGC:CRS84"),
which = NULL,
par = 0,
spatial_n_each = 1,
spatial_n_group = 4,
data_id,
match_id,
temporal_matching = TRUE,
temporal_by,
temporal_match_fn = match_peak,
temporal_n_highest = 20,
temporal_window = 5,
...
)
match_spatial(
df1,
df2,
crs = sf::st_crs("OGC:CRS84"),
which = NULL,
par = 0,
spatial_n_each = 1,
spatial_n_group = 4,
return_cubble = FALSE
)
match_temporal(
data,
data_id,
match_id = NULL,
temporal_by,
return_cubble = FALSE,
temporal_match_fn = match_peak,
temporal_n_highest = 30,
temporal_window = 5,
...
)the two cubble objects to match
a crs object from sf::st_crs()
character; for Cartesian coordinates only: one of Euclidean, Hausdorff or Frechet; for geodetic coordinates, great circle distances are computed; see details
for which equal to Hausdorff or Frechet, optionally use a value between 0 and 1 to densify the geometry
integer, the number of matched "station" in df2
for each df1 record
integer, the number of matched group (pair) return
a character (or symbol), the variable differentiates
df1 and df2
a character (or symbol), the variable differentiate each group of match
logical, whether to match temporally
in the by syntax in dplyr::*_join(),
the variables to match temporally in df1 and df2.
character, the function name on how two time series should be matched
numeric, the number of highest peak used for
temporal matching in match_peak
The temporal window allowed in match_peak
parameters passing to temporal match
logical (default to false), whether to return the cubble object or a matching summary table
the resulting cubble object from spatial matching (with
return_cubble = TRUE in spatial matching)
library(dplyr)
climate_aus <- mutate(climate_aus, type = "climate")
match_spatial(climate_aus, river)
#> Use OGC:CRS84 by default for distance calculation...
#> # A tibble: 4 × 4
#> from to dist group
#> <chr> <chr> [m] <int>
#> 1 ASN00088051 406213 1838. 1
#> 2 ASN00084145 222201 2185. 2
#> 3 ASN00085072 226027 3282. 3
#> 4 ASN00080015 406704 4034. 4
# turn with different distance calculation:
match_spatial(climate_aus, river, which = "Hausdorff")
#> Use OGC:CRS84 by default for distance calculation...
#> # A tibble: 4 × 4
#> from to dist group
#> <chr> <chr> [°] <int>
#> 1 ASN00088051 406213 0.0204 1
#> 2 ASN00084145 222201 0.0219 2
#> 3 ASN00085072 226027 0.0296 3
#> 4 ASN00080015 406704 0.0364 4
# tune the number of matches in each group
match_spatial(climate_aus, river, spatial_n_each = 5, spatial_n_group = 2)
#> Use OGC:CRS84 by default for distance calculation...
#> # A tibble: 10 × 4
#> from to dist group
#> <chr> <chr> [m] <int>
#> 1 ASN00088051 406213 1838. 1
#> 2 ASN00088051 406215 6963. 1
#> 3 ASN00088051 406235 15133. 1
#> 4 ASN00088051 405240 47673. 1
#> 5 ASN00088051 405212 48364. 1
#> 6 ASN00084145 222201 2185. 2
#> 7 ASN00084145 222203 13022. 2
#> 8 ASN00084145 223209 54797. 2
#> 9 ASN00084145 221224 63127. 2
#> 10 ASN00084145 224217 79816. 2
a1 <- match_spatial(climate_aus, river, return_cubble = TRUE) |> bind_rows()
#> Use OGC:CRS84 by default for distance calculation...
match_temporal(a1, data_id = type, match_id = group,
temporal_by = c("prcp" = "Water_course_level"))
#> # A tibble: 4 × 2
#> group match_res
#> <int> <dbl>
#> 1 1 30
#> 2 2 5
#> 3 3 14
#> 4 4 20