You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

栅格化重叠多边形并计算合并后总时间时长的实现方法求助

栅格化重叠多边形并计算合并后总时间时长的实现方法求助

我想要栅格化重叠的多边形,同时让函数能检查每个重叠多边形的开始/结束时间,把这些时间段合并后计算出所有多边形覆盖的总时长。举个例子,假设有3个重叠的多边形:

  • Polygon 1: 0800 - 1000(2小时)
  • Polygon 2: 0800 - 1200(4小时)
  • Polygon 3: 0700 - 0900(2小时)

对这些多边形进行栅格化后,输出的总时长应该是5小时(覆盖时段为0700 - 1200),所以该位置的像素z值就是5。

下面是我模拟的代码,生成了5个带开始/结束时间的重叠多边形,和我的数据集结构一致:

library(sf)
library(tidyverse)

df <- structure(list(lat = c(53.218461547511, 53.2354543814792, 53.2219368310548,
                             53.2142084420887, 53.2051969857393), lon = c(6.57022923569802,
                                                                          6.55005158685787, 6.57015231400986, 6.5633788874466, 6.5692156138519
                             ), startUTC=c("2023-02-21 07:14:38", "2023-02-21 07:05:37", "2023-02-21 07:54:27", "2023-02-21 17:22:04", "2023-02-21 07:46:53"), endUTC=c("2023-02-21 17:32:16", "2023-02-21 18:07:44", "2023-02-21 08:28:18", "2023-02-21 17:52:57", "2023-02-21 08:17:22")), row.names = c(NA, -5L), class = c("tbl_df", "tbl", "data.frame"
                             ))

circle_df <- df %>%
    mutate(startUTC = ymd_hms(startUTC), endUTC = ymd_hms(endUTC)) %>%
  st_as_sf(coords = c("lon", "lat"), crs = 4326) %>%
  st_buffer(dist = units::set_units(1, "kilometers"))

我研究过terra::rasterize和raster::rasterize这两个函数,但没找到在函数里处理时间区间的方法。

我还试过用st_intersect()来相交这些多边形,想着可以处理相交部分以及它们的origins属性,之后再栅格化相交后的多边形。不过st_intersect()执行失败了,报了一个GEOS错误,这个问题好像是已知的。

备注:内容来源于stack exchange,提问作者akamini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 11:59:50