distance: Spacial Distance In widals: Weighting by Inverse Distance with Adaptive Least Squares for Massive Space-Time Data

Description

Calculate spacial distance between two sets of locations (in two-space)

Usage

 `1` ```distance(locs1, locs2, geodesic = FALSE) ```

Arguments

 `locs1` First set of locations. E.g., supporting sites: An n x `2` matrix. If `geodesic` is set to true, make sure to place latitude in first column. `locs2` Second set of locations. E.g., interpolation sites: An n* x `2` matrix. If `geodesic` is set to true, make sure to place latitude in first column. `geodesic` Use geodesic distance? Boolean.

Details

If `geodesic` is set to `FALSE`, Euclidean distance is returned; if `TRUE`, Earth's geodesic distance is returned in units kilometers.

Value

An n x n* matrix.

Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47``` ```locs1 <- cbind( c(-1, -1, 1, 1), c(-1, 1, -1, 1) ) locs2 <- cbind( c(0), c(0) ) distance(locs1, locs2) locs1 <- cbind( c(32, 0), c(-114, -114) ) locs2 <- cbind( c(0), c(0) ) distance(locs1, locs2, TRUE) ####### separation of one deg long at 88 degs lat (near North-Pole) is (appx) locs1 <- cbind( c(88), c(-114) ) locs2 <- cbind( c(88), c(-115) ) distance(locs1, locs2, TRUE) ####### separation of one deg long at 0 degs lat (Equator) is (appx) locs1 <- cbind( c(0), c(-114) ) locs2 <- cbind( c(0), c(-115) ) distance(locs1, locs2, TRUE) ## The function is currently defined as function (locs1, locs2, geodesic = FALSE) { # dyn.load("~/Files/Creations/C/distance.so") n1 <- nrow(locs1) n2 <- nrow(locs2) d.out <- rep(0, n1 * n2) if (geodesic) { D.Mx <- .C("distance_geodesic_AB", as.double(locs1[, 1] * pi/180), as.double(locs1[, 2] * pi/180), as.double(locs2[, 1] * pi/180), as.double(locs2[, 2] * pi/180), as.double(d.out), as.integer(n1), as.integer(n2))[[5]] } else { D.Mx <- .C("distance_AB", as.double(locs1[, 1]), as.double(locs1[, 2]), as.double(locs2[, 1]), as.double(locs2[, 2]), as.double(d.out), as.integer(n1), as.integer(n2))[[5]] } D.out <- matrix(D.Mx, n1, n2) return(D.out) } ```

widals documentation built on May 29, 2017, 10:11 p.m.