【问题标题】:How to convert data.frame to a list of polygon? [duplicate]如何将 data.frame 转换为多边形列表? [复制]
【发布时间】:2018-12-10 05:14:46
【问题描述】:

我有一个如下的数据框:

long   lat   group  
1.0    1.0   1  
1.0    2.0   1  
2.0    2.0   1  
5.0    5.0   2  
5.0    6.0   2
6.0    6.0   2

如何将其转换为多边形对象列表?

谢谢!

【问题讨论】:

标签: r


【解决方案1】:

您的点序列不是封闭的,因此在 sf 中,您需要稍微调整一下才能将它们变成多边形。一种选择是制作多点对象并转换为多边形:

library(tidyverse)
library(sf)

df <- data.frame(long = c(1, 1, 2, 5, 5, 6), 
                 lat = c(1, 2, 2, 5, 6, 6), 
                 group = c(1L, 1L, 1L, 2L, 2L, 2L))

df_sf <- df %>% 
    group_by(group) %>% 
    summarise(geometry = st_sfc(st_cast(st_multipoint(cbind(long, lat)), 'POLYGON'))) %>% 
    st_sf()

df_sf
#> Simple feature collection with 2 features and 1 field
#> geometry type:  POLYGON
#> dimension:      XY
#> bbox:           xmin: 1 ymin: 1 xmax: 2 ymax: 2
#> epsg (SRID):    NA
#> proj4string:    NA
#> # A tibble: 2 x 2
#>   group               geometry
#>   <int>              <POLYGON>
#> 1     1 ((1 1, 1 2, 2 2, 1 1))
#> 2     2 ((5 5, 5 6, 6 6, 5 5))

ggplot(df_sf) + geom_sf()

【讨论】:

    猜你喜欢
    • 2017-01-05
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多