在R中,围绕数据帧中的每个单独几何体点创建矩形边界,然后使用它们与另一个数据帧合并

在R中,围绕数据帧中的每个单独几何体点创建矩形边界,然后使用它们与另一个数据帧合并,r,geometry,rectangles,sf,boundary,R,Geometry,Rectangles,Sf,Boundary,我有两个sf对象(df1和df2),第一个看起来像这样: require(sf) require(geosphere) > dput(df1) structure(list(Value = c(0.0224448168716316, 0.0232573334948221, 0.0227533509931156, 0.0214526198514539, 0.0202076447577734, 0.0198987318707359, 0.0210662752006843, 0.02364

我有两个sf对象(df1和df2),第一个看起来像这样:

require(sf)
require(geosphere)

> dput(df1)
structure(list(Value = c(0.0224448168716316, 0.0232573334948221, 
0.0227533509931156, 0.0214526198514539, 0.0202076447577734, 0.0198987318707359, 
0.0210662752006843, 0.0236482308669648, 0.0269649426302149, 0.0299860869879685, 
0.0317738373520348, 0.0318972869553701, 0.0306163617642659, 0.0287451341375429, 
0.0272682321410656, 0.0269093051105949, 0.0278656733200309, 0.0298204289063502, 
0.0321843080781815, 0.034399987545947), geometry = structure(list(
    structure(c(0.866271, 51.288072), class = c("XY", "POINT", 
    "sfg")), structure(c(0.866264, 51.288062), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866258, 51.288052), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866252, 51.288042), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866245, 51.288032), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866239, 51.288022), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866233, 51.288012), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866226, 51.288001), class = c("XY", 
    "POINT", "sfg")), structure(c(0.86622, 51.287991), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866214, 51.287981), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866208, 51.287971), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866201, 51.287961), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866195, 51.287951), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866189, 51.287941), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866182, 51.287931), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866176, 51.287921), class = c("XY", 
    "POINT", "sfg")), structure(c(0.86617, 51.28791), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866164, 51.2879), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866157, 51.28789), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866151, 51.28788), class = c("XY", 
    "POINT", "sfg"))), class = c("sfc_POINT", "sfc"), precision = 0, bbox = structure(c(xmin = 0.866151, 
ymin = 51.28788, xmax = 0.866271, ymax = 51.288072), class = "bbox"), crs = structure(list(
    epsg = 4326L, proj4string = "+proj=longlat +datum=WGS84 +no_defs"), class = "crs"), n_empty = 0L)), row.names = c(NA, 
20L), class = c("sf", "data.frame"), sf_column = "geometry", agr = structure(c(NA_integer_, 
NA_integer_), .Names = c("Value", NA), .Label = c("constant", 
"aggregate", "identity"), class = "factor"))
> dput(df2)
structure(list(Bearing = c(201.2515, 201.2515, 201.2515, 201.2515, 
201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 
201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 
201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 
201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 
201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 
201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 
201.2515), RowArea = c(1.1279799, 1.5530782, 1.2190885, 1.8413685, 
0.730757, 1.3323299, 1.4519665, 0.9458434, 1.1093227, 0.9570221, 
1.783217, 1.1221227, 1.3680321, 1.183273, 1.2589385, 1.275003, 
0.8373426, 1.6091243, 1.4946973, 1.3219083, 1.7970269, 1.3410503, 
1.5797971, 0.8918744, 1.6797332, 1.2260156, 1.5121761, 1.1687347, 
0.9901671, 1.8228587, 1.2319576, 1.9385323, 1.2077403, 1.1353178, 
1.3158175, 0.7943459, 1.9742131, 1.3625023, 1.7216093, 0.8959564, 
1.1783869, 1.4007474, 0.99772, 1.5486058, 0.6419961, 1.6317171, 
1.2321855), geometry = structure(list(structure(c(0.866151269, 
51.28786594), class = c("XY", "POINT", "sfg")), structure(c(0.866153749, 
51.28787032), class = c("XY", "POINT", "sfg")), structure(c(0.866156795, 
51.2878746), class = c("XY", "POINT", "sfg")), structure(c(0.866159461, 
51.28787906), class = c("XY", "POINT", "sfg")), structure(c(0.866162199, 
51.28788351), class = c("XY", "POINT", "sfg")), structure(c(0.86616467, 
51.28788782), class = c("XY", "POINT", "sfg")), structure(c(0.866167595, 
51.28789226), class = c("XY", "POINT", "sfg")), structure(c(0.866170456, 
51.28789656), class = c("XY", "POINT", "sfg")), structure(c(0.866173194, 
51.28790086), class = c("XY", "POINT", "sfg")), structure(c(0.866176093, 
51.2879052), class = c("XY", "POINT", "sfg")), structure(c(0.866179096, 
51.28790945), class = c("XY", "POINT", "sfg")), structure(c(0.866181465, 
51.287914), class = c("XY", "POINT", "sfg")), structure(c(0.866184433, 
51.28791833), class = c("XY", "POINT", "sfg")), structure(c(0.866187491, 
51.28792251), class = c("XY", "POINT", "sfg")), structure(c(0.866190262, 
51.28792692), class = c("XY", "POINT", "sfg")), structure(c(0.866192958, 
51.28793118), class = c("XY", "POINT", "sfg")), structure(c(0.866195663, 
51.2879356), class = c("XY", "POINT", "sfg")), structure(c(0.8661982, 
51.28794002), class = c("XY", "POINT", "sfg")), structure(c(0.866200841, 
51.28794421), class = c("XY", "POINT", "sfg")), structure(c(0.866203351, 
51.28794852), class = c("XY", "POINT", "sfg")), structure(c(0.866205753, 
51.2879528), class = c("XY", "POINT", "sfg")), structure(c(0.866207801, 
51.28795733), class = c("XY", "POINT", "sfg")), structure(c(0.866210541, 
51.28796171), class = c("XY", "POINT", "sfg")), structure(c(0.866213108, 
51.28796609), class = c("XY", "POINT", "sfg")), structure(c(0.866216074, 
51.28797044), class = c("XY", "POINT", "sfg")), structure(c(0.866218815, 
51.28797483), class = c("XY", "POINT", "sfg")), structure(c(0.866221599, 
51.28797916), class = c("XY", "POINT", "sfg")), structure(c(0.866224593, 
51.28798347), class = c("XY", "POINT", "sfg")), structure(c(0.866227562, 
51.28798781), class = c("XY", "POINT", "sfg")), structure(c(0.866229836, 
51.28799238), class = c("XY", "POINT", "sfg")), structure(c(0.866232416, 
51.28799673), class = c("XY", "POINT", "sfg")), structure(c(0.866235204, 
51.28800107), class = c("XY", "POINT", "sfg")), structure(c(0.866238035, 
51.2880053), class = c("XY", "POINT", "sfg")), structure(c(0.866240765, 
51.28800968), class = c("XY", "POINT", "sfg")), structure(c(0.866243615, 
51.28801399), class = c("XY", "POINT", "sfg")), structure(c(0.866246411, 
51.28801833), class = c("XY", "POINT", "sfg")), structure(c(0.866249077, 
51.2880226), class = c("XY", "POINT", "sfg")), structure(c(0.866251561, 
51.28802691), class = c("XY", "POINT", "sfg")), structure(c(0.866254317, 
51.28803125), class = c("XY", "POINT", "sfg")), structure(c(0.866257236, 
51.2880355), class = c("XY", "POINT", "sfg")), structure(c(0.866259956, 
51.28803994), class = c("XY", "POINT", "sfg")), structure(c(0.866262855, 
51.28804427), class = c("XY", "POINT", "sfg")), structure(c(0.866265706, 
51.28804857), class = c("XY", "POINT", "sfg")), structure(c(0.86626834, 
51.288053), class = c("XY", "POINT", "sfg")), structure(c(0.866271474, 
51.28805732), class = c("XY", "POINT", "sfg")), structure(c(0.866274703, 
51.28806164), class = c("XY", "POINT", "sfg")), structure(c(0.866277478, 
51.28806607), class = c("XY", "POINT", "sfg"))), class = c("sfc_POINT", 
"sfc"), precision = 0, bbox = structure(c(xmin = 0.866151269, 
ymin = 51.28786594, xmax = 0.866277478, ymax = 51.28806607), class = "bbox"), crs = structure(list(
    epsg = 4326L, proj4string = "+proj=longlat +datum=WGS84 +no_defs"), class = "crs"), n_empty = 0L)), sf_column = "geometry", agr = structure(c(Bearing = NA_integer_, 
RowArea = NA_integer_), .Label = c("constant", "aggregate", "identity"
), class = "factor"), row.names = 3398:3352, class = c("sf", 
"data.frame"))
第二个是这样的:

require(sf)
require(geosphere)

> dput(df1)
structure(list(Value = c(0.0224448168716316, 0.0232573334948221, 
0.0227533509931156, 0.0214526198514539, 0.0202076447577734, 0.0198987318707359, 
0.0210662752006843, 0.0236482308669648, 0.0269649426302149, 0.0299860869879685, 
0.0317738373520348, 0.0318972869553701, 0.0306163617642659, 0.0287451341375429, 
0.0272682321410656, 0.0269093051105949, 0.0278656733200309, 0.0298204289063502, 
0.0321843080781815, 0.034399987545947), geometry = structure(list(
    structure(c(0.866271, 51.288072), class = c("XY", "POINT", 
    "sfg")), structure(c(0.866264, 51.288062), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866258, 51.288052), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866252, 51.288042), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866245, 51.288032), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866239, 51.288022), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866233, 51.288012), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866226, 51.288001), class = c("XY", 
    "POINT", "sfg")), structure(c(0.86622, 51.287991), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866214, 51.287981), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866208, 51.287971), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866201, 51.287961), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866195, 51.287951), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866189, 51.287941), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866182, 51.287931), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866176, 51.287921), class = c("XY", 
    "POINT", "sfg")), structure(c(0.86617, 51.28791), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866164, 51.2879), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866157, 51.28789), class = c("XY", 
    "POINT", "sfg")), structure(c(0.866151, 51.28788), class = c("XY", 
    "POINT", "sfg"))), class = c("sfc_POINT", "sfc"), precision = 0, bbox = structure(c(xmin = 0.866151, 
ymin = 51.28788, xmax = 0.866271, ymax = 51.288072), class = "bbox"), crs = structure(list(
    epsg = 4326L, proj4string = "+proj=longlat +datum=WGS84 +no_defs"), class = "crs"), n_empty = 0L)), row.names = c(NA, 
20L), class = c("sf", "data.frame"), sf_column = "geometry", agr = structure(c(NA_integer_, 
NA_integer_), .Names = c("Value", NA), .Label = c("constant", 
"aggregate", "identity"), class = "factor"))
> dput(df2)
structure(list(Bearing = c(201.2515, 201.2515, 201.2515, 201.2515, 
201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 
201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 
201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 
201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 
201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 
201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 201.2515, 
201.2515), RowArea = c(1.1279799, 1.5530782, 1.2190885, 1.8413685, 
0.730757, 1.3323299, 1.4519665, 0.9458434, 1.1093227, 0.9570221, 
1.783217, 1.1221227, 1.3680321, 1.183273, 1.2589385, 1.275003, 
0.8373426, 1.6091243, 1.4946973, 1.3219083, 1.7970269, 1.3410503, 
1.5797971, 0.8918744, 1.6797332, 1.2260156, 1.5121761, 1.1687347, 
0.9901671, 1.8228587, 1.2319576, 1.9385323, 1.2077403, 1.1353178, 
1.3158175, 0.7943459, 1.9742131, 1.3625023, 1.7216093, 0.8959564, 
1.1783869, 1.4007474, 0.99772, 1.5486058, 0.6419961, 1.6317171, 
1.2321855), geometry = structure(list(structure(c(0.866151269, 
51.28786594), class = c("XY", "POINT", "sfg")), structure(c(0.866153749, 
51.28787032), class = c("XY", "POINT", "sfg")), structure(c(0.866156795, 
51.2878746), class = c("XY", "POINT", "sfg")), structure(c(0.866159461, 
51.28787906), class = c("XY", "POINT", "sfg")), structure(c(0.866162199, 
51.28788351), class = c("XY", "POINT", "sfg")), structure(c(0.86616467, 
51.28788782), class = c("XY", "POINT", "sfg")), structure(c(0.866167595, 
51.28789226), class = c("XY", "POINT", "sfg")), structure(c(0.866170456, 
51.28789656), class = c("XY", "POINT", "sfg")), structure(c(0.866173194, 
51.28790086), class = c("XY", "POINT", "sfg")), structure(c(0.866176093, 
51.2879052), class = c("XY", "POINT", "sfg")), structure(c(0.866179096, 
51.28790945), class = c("XY", "POINT", "sfg")), structure(c(0.866181465, 
51.287914), class = c("XY", "POINT", "sfg")), structure(c(0.866184433, 
51.28791833), class = c("XY", "POINT", "sfg")), structure(c(0.866187491, 
51.28792251), class = c("XY", "POINT", "sfg")), structure(c(0.866190262, 
51.28792692), class = c("XY", "POINT", "sfg")), structure(c(0.866192958, 
51.28793118), class = c("XY", "POINT", "sfg")), structure(c(0.866195663, 
51.2879356), class = c("XY", "POINT", "sfg")), structure(c(0.8661982, 
51.28794002), class = c("XY", "POINT", "sfg")), structure(c(0.866200841, 
51.28794421), class = c("XY", "POINT", "sfg")), structure(c(0.866203351, 
51.28794852), class = c("XY", "POINT", "sfg")), structure(c(0.866205753, 
51.2879528), class = c("XY", "POINT", "sfg")), structure(c(0.866207801, 
51.28795733), class = c("XY", "POINT", "sfg")), structure(c(0.866210541, 
51.28796171), class = c("XY", "POINT", "sfg")), structure(c(0.866213108, 
51.28796609), class = c("XY", "POINT", "sfg")), structure(c(0.866216074, 
51.28797044), class = c("XY", "POINT", "sfg")), structure(c(0.866218815, 
51.28797483), class = c("XY", "POINT", "sfg")), structure(c(0.866221599, 
51.28797916), class = c("XY", "POINT", "sfg")), structure(c(0.866224593, 
51.28798347), class = c("XY", "POINT", "sfg")), structure(c(0.866227562, 
51.28798781), class = c("XY", "POINT", "sfg")), structure(c(0.866229836, 
51.28799238), class = c("XY", "POINT", "sfg")), structure(c(0.866232416, 
51.28799673), class = c("XY", "POINT", "sfg")), structure(c(0.866235204, 
51.28800107), class = c("XY", "POINT", "sfg")), structure(c(0.866238035, 
51.2880053), class = c("XY", "POINT", "sfg")), structure(c(0.866240765, 
51.28800968), class = c("XY", "POINT", "sfg")), structure(c(0.866243615, 
51.28801399), class = c("XY", "POINT", "sfg")), structure(c(0.866246411, 
51.28801833), class = c("XY", "POINT", "sfg")), structure(c(0.866249077, 
51.2880226), class = c("XY", "POINT", "sfg")), structure(c(0.866251561, 
51.28802691), class = c("XY", "POINT", "sfg")), structure(c(0.866254317, 
51.28803125), class = c("XY", "POINT", "sfg")), structure(c(0.866257236, 
51.2880355), class = c("XY", "POINT", "sfg")), structure(c(0.866259956, 
51.28803994), class = c("XY", "POINT", "sfg")), structure(c(0.866262855, 
51.28804427), class = c("XY", "POINT", "sfg")), structure(c(0.866265706, 
51.28804857), class = c("XY", "POINT", "sfg")), structure(c(0.86626834, 
51.288053), class = c("XY", "POINT", "sfg")), structure(c(0.866271474, 
51.28805732), class = c("XY", "POINT", "sfg")), structure(c(0.866274703, 
51.28806164), class = c("XY", "POINT", "sfg")), structure(c(0.866277478, 
51.28806607), class = c("XY", "POINT", "sfg"))), class = c("sfc_POINT", 
"sfc"), precision = 0, bbox = structure(c(xmin = 0.866151269, 
ymin = 51.28786594, xmax = 0.866277478, ymax = 51.28806607), class = "bbox"), crs = structure(list(
    epsg = 4326L, proj4string = "+proj=longlat +datum=WGS84 +no_defs"), class = "crs"), n_empty = 0L)), sf_column = "geometry", agr = structure(c(Bearing = NA_integer_, 
RowArea = NA_integer_), .Label = c("constant", "aggregate", "identity"
), class = "factor"), row.names = 3398:3352, class = c("sf", 
"data.frame"))
我试图找到一种方法,在df1中的每个几何点周围创建固定大小的矩形区域。 到目前为止,我已经做到了这一点:

df1 <- df1 %>% 
  mutate(lon = st_coordinates(.)[,1],
         lat = st_coordinates(.)[,2]) # converts the geometry points to separate columns for longitude and latitude

# Then calculate bearings
df1$bearing<-bearing(cbind(df1$lon,df1$lat)) +360
# this gives me a NaN for the final bearing as there is only 1 point to reference to. How would I fix this? Ideally I'd like the final bearing to be the same as the previous.
df1$bearing[20]<-df1$bearing[19] # fudge to add a bearing for final point - what is a better way to do this?
很可能有更好的方法来实现这一切。我只想补充一点,我想成为这一切的地图,以显示矩形边界和重叠点


非常感谢您的任何意见

在此方面的任何帮助都将不胜感激。
st_within(df2, df1$rectangles)