在R中,围绕数据帧中的每个单独几何体点创建矩形边界,然后使用它们与另一个数据帧合并
我有两个sf对象(df1和df2),第一个看起来像这样:在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
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)