gpt4 book ai didi

r - 在 R & sf 中,如何更新所选特征的坐标?

转载 作者:行者123 更新时间:2023-12-04 12:05:48 26 4
gpt4 key购买 nike

我遇到了一个看似简单的问题。我想手动更正选定点的地理编码结果。假设“Dare”的质心需要更新:

library(sf)     
nc <- st_centroid(st_read(system.file("shape/nc.shp", package = "sf")))
st_coordinates(filter(nc, NAME== "Dare"))

我怎样才能改变

的原始值
          X        Y
1 -75.80982 35.73548

进入不同的东西?

我期待的是这样的

st_coordinates(filter(nc, NAME== "Dare")) <- matrix(c(-73, 33), nrow = 1)

或者

nc %>% 
mutate(geometry = ifelse(place_full_name == "Dare",
yes = st_set_geometry(c(-73, 33)),
no = geometry))

完成这项工作,但两种解决方案都会产生错误。

最佳答案

使用 st_geometry<- .

获取原始几何体(只是为了检查):

st_geometry(nc[nc$NAME == "Dare", ])
# Geometry set for 1 feature
# geometry type: POINT
# dimension: XY
# bbox: xmin: -75.80982 ymin: 35.73548 xmax: -75.80982 ymax: 35.73548
# epsg (SRID): 4267
# proj4string: +proj=longlat +datum=NAD27 +no_defs
# POINT (-75.80982 35.73548)

st_geometry<- 替换选定的几何图形.替换值需要是一个简单的要素几何,因此 st_sfc(st_point(... .

st_geometry(nc[nc$NAME == "Dare", ]) <-  st_sfc(st_point(c(-80, 40)))

# check again
st_geometry(nc[nc$NAME == "Dare", ])
# Geometry set for 1 feature
# geometry type: POINT
# dimension: XY
# bbox: xmin: -80 ymin: 40 xmax: -80 ymax: 40
# epsg (SRID): 4267
# proj4string: +proj=longlat +datum=NAD27 +no_defs
# POINT (-80 40)

备注:

Twitter discussion shared by @radek , sf 的作者包,@Edzer Pebesma,评论说原始几何体的边界框没有更新。

原始边界框:

st_bbox(nc)
# xmin ymin xmax ymax
# -84.05976 34.07663 -75.80982 36.49101

用原始边界框外的坐标替换选定的几何体,此处为 x小于 xminy大于 ymax :

st_geometry(nc[nc$NAME == "Dare", ]) <-  st_sfc(st_point(c(-90, 40)))

bbox对象的未更新:

st_bbox(nc)
# xmin ymin xmax ymax
# -84.05976 34.07663 -75.80982 36.49101

关于r - 在 R & sf 中,如何更新所选特征的坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54086429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com