I need to generate a distance matrix with the geographic (Euclidian) distances between 48 points sampled in a regular grid with exactly 120 centimeters between neighbouring points both vertically and horizontally:
Thus, the distance between sample 1K (cell A1) and both 1NP(cell A2) and 2WN(cell B1) is 120 cm, and 240 cm for 1K-1WNP and 1K-3W, and so on. Diagonally, the distances can be calculated using simple Pythagoras, so that the distance from 1K (A1) to 2WP (B2) is Squareroot(120^2 + 120^2)=169,7, and that from 1K(A1) to 2P(B3) is Squareroot(240^2 + 120^2)= 268,33, and so on.
This will make for a total matrix for distances between all points of 48x48. Here are the first two columns and 16 rows of how the matrix should look:
How does one do that in R? I have tried to define a set of data and use the dist() function, but that clearly does not work.
Use {sf} package: st_make_grid
and st_distance
functions like:
sfc = sf::st_sfc(sf::st_polygon(list(rbind(c(0,0), c(8*1.2,0), c(8*1.2,6*1.2), c(0, 6*1.2), c(0,0)))))
g <- sf::st_make_grid(sfc, n = c(7, 5), cellsize = 1.2, crs = "EPSG:2180", what = "corners")
plot(sfc)
plot(g, pch = 16, col = "blue", add = TRUE)
g |>
sf::st_distance(g)
#> Units: [m]
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
#> [1,] 0.000000 1.200000 2.400000 3.600000 4.800000 6.000000 7.200000 8.400000
#> [2,] 1.200000 0.000000 1.200000 2.400000 3.600000 4.800000 6.000000 7.200000
#> [3,] 2.400000 1.200000 0.000000 1.200000 2.400000 3.600000 4.800000 6.000000
#> [4,] 3.600000 2.400000 1.200000 0.000000 1.200000 2.400000 3.600000 4.800000
#> [5,] 4.800000 3.600000 2.400000 1.200000 0.000000 1.200000 2.400000 3.600000
#> [6,] 6.000000 4.800000 3.600000 2.400000 1.200000 0.000000 1.200000 2.400000
#> [7,] 7.200000 6.000000 4.800000 3.600000 2.400000 1.200000 0.000000 1.200000
#> [8,] 8.400000 7.200000 6.000000 4.800000 3.600000 2.400000 1.200000 0.000000
#> [9,] 1.200000 1.697056 2.683282 3.794733 4.947727 6.118823 7.299315 8.485281
#> [10,] 1.697056 1.200000 1.697056 2.683282 3.794733 4.947727 6.118823 7.299315
#> [11,] 2.683282 1.697056 1.200000 1.697056 2.683282 3.794733 4.947727 6.118823
#> [12,] 3.794733 2.683282 1.697056 1.200000 1.697056 2.683282 3.794733 4.947727
#> [13,] 4.947727 3.794733 2.683282 1.697056 1.200000 1.697056 2.683282 3.794733
#> [14,] 6.118823 4.947727 3.794733 2.683282 1.697056 1.200000 1.697056 2.683282
#> [15,] 7.299315 6.118823 4.947727 3.794733 2.683282 1.697056 1.200000 1.697056
#> [16,] 8.485281 7.299315 6.118823 4.947727 3.794733 2.683282 1.697056 1.200000
#> [17,] 2.400000 2.683282 3.394113 4.326662 5.366563 6.462198 7.589466 8.736132
#> [18,] 2.683282 2.400000 2.683282 3.394113 4.326662 5.366563 6.462198 7.589466
#> [19,] 3.394113 2.683282 2.400000 2.683282 3.394113 4.326662 5.366563 6.462198
#> [20,] 4.326662 3.394113 2.683282 2.400000 2.683282 3.394113 4.326662 5.366563
#> [21,] 5.366563 4.326662 3.394113 2.683282 2.400000 2.683282 3.394113 4.326662
#> [22,] 6.462198 5.366563 4.326662 3.394113 2.683282 2.400000 2.683282 3.394113
#> [23,] 7.589466 6.462198 5.366563 4.326662 3.394113 2.683282 2.400000 2.683282
#> [24,] 8.736132 7.589466 6.462198 5.366563 4.326662 3.394113 2.683282 2.400000
#> [25,] 3.600000 3.794733 4.326662 5.091169 6.000000 6.997142 8.049845 9.138928
#> [26,] 3.794733 3.600000 3.794733 4.326662 5.091169 6.000000 6.997142 8.049845
#> [27,] 4.326662 3.794733 3.600000 3.794733 4.326662 5.091169 6.000000 6.997142
#> [28,] 5.091169 4.326662 3.794733 3.600000 3.794733 4.326662 5.091169 6.000000
#> [29,] 6.000000 5.091169 4.326662 3.794733 3.600000 3.794733 4.326662 5.091169
#> [30,] 6.997142 6.000000 5.091169 4.326662 3.794733 3.600000 3.794733 4.326662
#> [31,] 8.049845 6.997142 6.000000 5.091169 4.326662 3.794733 3.600000 3.794733
#> [32,] 9.138928 8.049845 6.997142 6.000000 5.091169 4.326662 3.794733 3.600000
#> [33,] 4.800000 4.947727 5.366563 6.000000 6.788225 7.683749 8.653323 9.674709
#> [34,] 4.947727 4.800000 4.947727 5.366563 6.000000 6.788225 7.683749 8.653323
#> [35,] 5.366563 4.947727 4.800000 4.947727 5.366563 6.000000 6.788225 7.683749
#> [36,] 6.000000 5.366563 4.947727 4.800000 4.947727 5.366563 6.000000 6.788225
#> [37,] 6.788225 6.000000 5.366563 4.947727 4.800000 4.947727 5.366563 6.000000
#> [38,] 7.683749 6.788225 6.000000 5.366563 4.947727 4.800000 4.947727 5.366563
#> [39,] 8.653323 7.683749 6.788225 6.000000 5.366563 4.947727 4.800000 4.947727
#> [40,] 9.674709 8.653323 7.683749 6.788225 6.000000 5.366563 4.947727 4.800000
#> [41,] 6.000000 6.118823 6.462198 6.997142 7.683749 8.485281 9.372300 10.322790
#> [42,] 6.118823 6.000000 6.118823 6.462198 6.997142 7.683749 8.485281 9.372300
#> [43,] 6.462198 6.118823 6.000000 6.118823 6.462198 6.997142 7.683749 8.485281
#> [44,] 6.997142 6.462198 6.118823 6.000000 6.118823 6.462198 6.997142 7.683749
#> [45,] 7.683749 6.997142 6.462198 6.118823 6.000000 6.118823 6.462198 6.997142
#> [46,] 8.485281 7.683749 6.997142 6.462198 6.118823 6.000000 6.118823 6.462198
#> [47,] 9.372300 8.485281 7.683749 6.997142 6.462198 6.118823 6.000000 6.118823
#> [48,] 10.322790 9.372300 8.485281 7.683749 6.997142 6.462198 6.118823 6.000000
[...]
#> [,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48]
#> [1,] 6.000000 6.118823 6.462198 6.997142 7.683749 8.485281 9.372300 10.322790
#> [2,] 6.118823 6.000000 6.118823 6.462198 6.997142 7.683749 8.485281 9.372300
#> [3,] 6.462198 6.118823 6.000000 6.118823 6.462198 6.997142 7.683749 8.485281
#> [4,] 6.997142 6.462198 6.118823 6.000000 6.118823 6.462198 6.997142 7.683749
#> [5,] 7.683749 6.997142 6.462198 6.118823 6.000000 6.118823 6.462198 6.997142
#> [6,] 8.485281 7.683749 6.997142 6.462198 6.118823 6.000000 6.118823 6.462198
#> [7,] 9.372300 8.485281 7.683749 6.997142 6.462198 6.118823 6.000000 6.118823
#> [8,] 10.322790 9.372300 8.485281 7.683749 6.997142 6.462198 6.118823 6.000000
#> [9,] 4.800000 4.947727 5.366563 6.000000 6.788225 7.683749 8.653323 9.674709
#> [10,] 4.947727 4.800000 4.947727 5.366563 6.000000 6.788225 7.683749 8.653323
#> [11,] 5.366563 4.947727 4.800000 4.947727 5.366563 6.000000 6.788225 7.683749
#> [12,] 6.000000 5.366563 4.947727 4.800000 4.947727 5.366563 6.000000 6.788225
#> [13,] 6.788225 6.000000 5.366563 4.947727 4.800000 4.947727 5.366563 6.000000
#> [14,] 7.683749 6.788225 6.000000 5.366563 4.947727 4.800000 4.947727 5.366563
#> [15,] 8.653323 7.683749 6.788225 6.000000 5.366563 4.947727 4.800000 4.947727
#> [16,] 9.674709 8.653323 7.683749 6.788225 6.000000 5.366563 4.947727 4.800000
#> [17,] 3.600000 3.794733 4.326662 5.091169 6.000000 6.997142 8.049845 9.138928
#> [18,] 3.794733 3.600000 3.794733 4.326662 5.091169 6.000000 6.997142 8.049845
#> [19,] 4.326662 3.794733 3.600000 3.794733 4.326662 5.091169 6.000000 6.997142
#> [20,] 5.091169 4.326662 3.794733 3.600000 3.794733 4.326662 5.091169 6.000000
#> [21,] 6.000000 5.091169 4.326662 3.794733 3.600000 3.794733 4.326662 5.091169
#> [22,] 6.997142 6.000000 5.091169 4.326662 3.794733 3.600000 3.794733 4.326662
#> [23,] 8.049845 6.997142 6.000000 5.091169 4.326662 3.794733 3.600000 3.794733
#> [24,] 9.138928 8.049845 6.997142 6.000000 5.091169 4.326662 3.794733 3.600000
#> [25,] 2.400000 2.683282 3.394113 4.326662 5.366563 6.462198 7.589466 8.736132
#> [26,] 2.683282 2.400000 2.683282 3.394113 4.326662 5.366563 6.462198 7.589466
#> [27,] 3.394113 2.683282 2.400000 2.683282 3.394113 4.326662 5.366563 6.462198
#> [28,] 4.326662 3.394113 2.683282 2.400000 2.683282 3.394113 4.326662 5.366563
#> [29,] 5.366563 4.326662 3.394113 2.683282 2.400000 2.683282 3.394113 4.326662
#> [30,] 6.462198 5.366563 4.326662 3.394113 2.683282 2.400000 2.683282 3.394113
#> [31,] 7.589466 6.462198 5.366563 4.326662 3.394113 2.683282 2.400000 2.683282
#> [32,] 8.736132 7.589466 6.462198 5.366563 4.326662 3.394113 2.683282 2.400000
#> [33,] 1.200000 1.697056 2.683282 3.794733 4.947727 6.118823 7.299315 8.485281
#> [34,] 1.697056 1.200000 1.697056 2.683282 3.794733 4.947727 6.118823 7.299315
#> [35,] 2.683282 1.697056 1.200000 1.697056 2.683282 3.794733 4.947727 6.118823
#> [36,] 3.794733 2.683282 1.697056 1.200000 1.697056 2.683282 3.794733 4.947727
#> [37,] 4.947727 3.794733 2.683282 1.697056 1.200000 1.697056 2.683282 3.794733
#> [38,] 6.118823 4.947727 3.794733 2.683282 1.697056 1.200000 1.697056 2.683282
#> [39,] 7.299315 6.118823 4.947727 3.794733 2.683282 1.697056 1.200000 1.697056
#> [40,] 8.485281 7.299315 6.118823 4.947727 3.794733 2.683282 1.697056 1.200000
#> [41,] 0.000000 1.200000 2.400000 3.600000 4.800000 6.000000 7.200000 8.400000
#> [42,] 1.200000 0.000000 1.200000 2.400000 3.600000 4.800000 6.000000 7.200000
#> [43,] 2.400000 1.200000 0.000000 1.200000 2.400000 3.600000 4.800000 6.000000
#> [44,] 3.600000 2.400000 1.200000 0.000000 1.200000 2.400000 3.600000 4.800000
#> [45,] 4.800000 3.600000 2.400000 1.200000 0.000000 1.200000 2.400000 3.600000
#> [46,] 6.000000 4.800000 3.600000 2.400000 1.200000 0.000000 1.200000 2.400000
#> [47,] 7.200000 6.000000 4.800000 3.600000 2.400000 1.200000 0.000000 1.200000
#> [48,] 8.400000 7.200000 6.000000 4.800000 3.600000 2.400000 1.200000 0.000000
Created on 2024-02-24 with reprex v2.1.0
Please note the distances are in meters, you have to convert it to centimeters if required, for example:
g |>
sf::st_distance(g) |>
units::set_units(value = "centimeter")