【发布时间】:2020-10-13 20:13:14
【问题描述】:
我正在尝试找出计算多边形最大纬度和长距离(即最大“高度”和“长度”)的最佳方法。
从多边形的 sf 对象开始,一种可能的方法是:
- st_cast("POINT")
- 提取所有点的经纬度
- 找到每个多边形的最大纬度、最大长度、最小纬度和最小长度的点
- 计算距离
但是,我必须为数百个多边形执行此操作,并且想知道是否有更优雅/更简单的方法来执行此操作。我只是找不到任何东西(这似乎很奇怪)......
谢谢。
编辑
当然,我没有提供示例,因为我认为这是一个非常笼统的问题。但这可能有用:
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 )会给你每个多边形的边界框,如果有帮助的话?