R语言 如何翻译多边形?[副本]

vlju58qv  于 2023-05-04  发布在  其他
关注(0)|答案(1)|浏览(145)

此问题已在此处有答案

Change longitude and latitude values of sf objects in r(1个答案)
6天前关闭。
我有一个看起来像下面这样的数据集,我可以把它变成一个sf对象:

data <- data.frame(id=c(1,2,3,4,5,6), geometry=c("POLYGON ((529411.4 178358.9, 529409.9 178358.4, 529408.5 178362.9, 529409.9 178363.3, 529411.4 178358.9))",
                                         "POLYGON ((529409.9 178363.5, 529408.4 178363.1, 529407 178367.5, 529408.4 178368, 529409.9 178363.5))",
                                         "POLYGON ((529408.4 178368.2, 529406.9 178367.7, 529405.5 178372.2, 529407 178372.7, 529408.4 178368.2))",
                                         "POLYGON ((529406.9 178372.9, 529405.4 178372.4, 529404 178376.9, 529405.5 178377.4, 529406.9 178372.9))",
                                         "POLYGON ((529405.4 178377.5, 529403.9 178377.1, 529402.5 178381.6, 529404 178382, 529405.4 178377.5))",
                                         "POLYGON ((529403.9 178382.2, 529402.4 178381.7, 529401 178386.2, 529402.5 178386.7, 529403.9 178382.2))"))

data <- data %>% st_as_sf(wkt="geometry", crs=27700)

问题是原始数据中存在错误,由此多边形已经从其原始位置在东方向上平移X量,在北方向上平移Y量。
我怎样才能把这个多边形向上平移100个单位,向右平移100个单位?
我希望有一个像st_translate(100,100)这样的函数,尽管似乎没有。
我还能如何使用sf或其他软件包转换多边形?

hm2xizp9

hm2xizp91#

感谢SamR留下的评论,看起来你可以通过简单地向几何体添加一个向量来用平移覆盖sf对象的几何体:

st_geometry(data) <- st_geometry(data) + c(100, -100)

我找不到一种方法来做这作为一个管道的一部分,在一个dplyr种方式,但这应该是足够好的。

相关问题