栅格化重叠多边形并计算合并后总时间时长的实现方法求助
栅格化重叠多边形并计算合并后总时间时长的实现方法求助
我想要栅格化重叠的多边形,同时让函数能检查每个重叠多边形的开始/结束时间,把这些时间段合并后计算出所有多边形覆盖的总时长。举个例子,假设有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
相关产品推荐
相关产品推荐

