gpt4 book ai didi

r - st_simplify dTolerence 十进制度数

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

我正在尝试减小 sf 的大小通过应用对象 st_simplify . CRS 是 4267 并尝试使用正确的 dTolerance 级别。 .据了解,单位dTolerance必须是 CRS 的,所以我从 0.1 开始,但我不断收到此错误消息。

test <- st_read("comm_sf.shp") %>%
+ st_simplify(preserveTopology = T,
+ dTolerance = 0.1)
Simple feature collection with 11321 features and 21 fields
geometry type: MULTIPOLYGON
dimension: XY
bbox: xmin: -124.4375 ymin: 24.5441 xmax: -66.94983 ymax: 49.00249
epsg (SRID): 4326
proj4string: +proj=longlat +datum=WGS84 +no_defs
Warning message:
In st_simplify.sfc(st_geometry(x), preserveTopology, dTolerance) :
st_simplify does not correctly simplify longitude/latitude data, dTolerance needs to be in decimal degrees

我玩弄这两种设置 dTolerance = 1000 (如果以米为单位)和 dTolerance = 0.1 (以防它在 long/lat 中),但我收到相同的错误消息。 CRS = 4267 也会发生这种情况。我怎样才能解决这个问题?

最佳答案

那么它是一个警告而不是一个错误。但总的来说,您应该在投影坐标系上执行 Douglas-Peucker - 因为它使用距离作为缓冲区,而经度单位的实际大小随纬度而变化。请注意,st_simplify 容差使用的单位将始终与 map 单位相同。

这是一个可重现的示例:

library(sf)
library(maptools)

states = st_as_sf(maps::map("state", plot = FALSE, fill = TRUE))
states_simple = st_simplify(states)
##Warning message:
## In st_simplify.sfc(st_geometry(x), preserveTopology, dTolerance) :
## st_simplify does not correctly simplify longitude/latitude data, dTolerance needs to be in decimal degrees

但是如果我们先转换到投影坐标系,则没有警告:
states = st_transform(states, 54032) #azimuthal equidistant
states_simple = st_simplify(states)

简化后,您始终可以返回 WGS84 lat-long
 states = st_transform(states, 4326) 

关于r - st_simplify dTolerence 十进制度数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60008135/

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