【问题标题】:calculate longitudinal and latitudinal range of a polygon in R计算R中多边形的经度和纬度范围
【发布时间】:2020-10-13 20:13:14
【问题描述】:

我正在尝试找出计算多边形最大纬度和长距离(即最大“高度”和“长度”)的最佳方法。

从多边形的 sf 对象开始,一种可能的方法是:

  1. st_cast("POINT")
  2. 提取所有点的经纬度
  3. 找到每个多边形的最大纬度、最大长度、最小纬度和最小长度的点
  4. 计算距离

但是,我必须为数百个多边形执行此操作,并且想知道是否有更优雅/更简单的方法来执行此操作。我只是找不到任何东西(这似乎很奇怪)......

谢谢。

编辑

当然,我没有提供示例,因为我认为这是一个非常笼统的问题。但这可能有用:

library(sf)
library(dplyr)

demo(nc, ask = FALSE, verbose = FALSE)

然后我需要计算每个多边形的“长度”(即最大 lon 和最小 lon 之间的距离)和“高度”(最大纬度和最小纬度之间的距离)。

我认为bbox() 确实可以提供帮助。我想我可以使用 for 循环或 apply 在每个多边形上运行 bbox()。但是我不知道如何将bbox() 对象转换为数据框,以便从那里开始工作。 有什么建议吗?

【问题讨论】:

  • 嗨!我认为您可能可以使用st_bbox 来获得最大/最小纬度/经度的近似值。你能分享一下reproducible example吗?
  • 嗨@agila 我添加了一个简单的例子,但不确定是否有帮助。谢谢!
  • 您好,刚刚在 'bbox()' 上找到了这个 (github.com/r-spatial/sf/issues/1179),这是我的帮助 - 如果我找到解决方法,我会发布它。
  • sfheaders::sf_boxes( nc ) 会给你每个多边形的边界框,如果有帮助的话?

标签: r gis sf


【解决方案1】:

我认为您可以应用以下示例:

# packages
library(sf)
#> Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1

# data
nc = st_read(system.file("shape/nc.shp", package="sf"))
#> Reading layer `nc' from data source `C:\Users\Utente\Documents\R\win-library\3.6\sf\shape\nc.shp' using driver `ESRI Shapefile'
#> Simple feature collection with 100 features and 14 fields
#> geometry type:  MULTIPOLYGON
#> dimension:      XY
#> bbox:           xmin: -84.32385 ymin: 33.88199 xmax: -75.45698 ymax: 36.58965
#> geographic CRS: NAD27
par(mar = rep(0, 4))
plot(st_geometry(nc))


# estimate bbox values for each feature: 
res <- as.data.frame(do.call("rbind", lapply(st_geometry(nc), st_bbox)))
head(res)
#>        xmin     ymin      xmax     ymax
#> 1 -81.74107 36.23436 -81.23989 36.58965
#> 2 -81.34754 36.36536 -80.90344 36.57286
#> 3 -80.96577 36.23388 -80.43531 36.56521
#> 4 -76.33025 36.07282 -75.77316 36.55716
#> 5 -77.90121 36.16277 -77.07531 36.55629
#> 6 -77.21767 36.23024 -76.70750 36.55629

reprex package (v0.3.0) 于 2020 年 6 月 23 日创建

bbox 并不完全等于 lat/long 的 min/max,但也许它们是一个很好的近似值。

【讨论】:

    猜你喜欢
    • 2023-03-16
    • 2016-07-01
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    相关资源
    最近更新 更多