将形状文件转换为H3 - R

gcxthw6b  于 2023-03-15  发布在  其他
关注(0)|答案(1)|浏览(156)

我有一个gpkg文件,其中包含一些建筑物,并期待将此转换为H3大小11。

BUILDINGS <- st_read(GPKG, layer = "buildings")

基本上,这些建筑物所在的任何地方都是六边形,没有任何建筑物的地方就没有六边形。
我尝试使用一些软件包,即“h3 jsr”和“h3”
也尝试过

install.packages("remotes")
remotes::install_github("crazycapivara/h3forr")

希望使用“geo_to_h3”函数,但它只是说它根本找不到该函数,所以不确定那里发生了什么。
任何帮助将不胜感激!
更新
所以不是每一个单独的建筑物都是一个多边形,而是一组建筑物组成了一个多边形。

mzmfm0qo

mzmfm0qo1#

找到了答案-一些建筑物没有穿过H3像元的中心点(大小为11),这导致了错误。通过减小像元的大小,然后找到父像元,解决了这个问题。

FINAL_CELLS <- data.frame()
for(i in 1:nrow(BUILDING)){
  # Subset each Polygon
  SUB_BUILDING <- st_transform(BUILDING[i,], crs = 4326)
  
  # Convert polygon to H3 cells (must be higher resolution to avoid issues)
  CELLS <- polygon_to_cells(SUB_BUILDING, res = 14, simple = FALSE)
  
  # Get parent H3 cells from child H3 cells (This is final resolution)
  P <- get_parent(unlist(CELLS$h3_addresses), res = 11, simple = T)
  
  # Remove duplicate H3 cells
  P <- data.frame(id = SUB_BUILDING$id, cell =  unique(P))
  
  FINAL_CELLS <- rbind(P,FINAL_CELLS)
  
  print(paste(i,"-",Sys.time()))
}

相关问题