【问题标题】:Transform a sfc_LINESTRING geometry to sfc_MULTIPOLYGON将 sfc_LINESTRING 几何图形转换为 sfc_MULTIPOLYGON
【发布时间】:2021-12-25 14:24:12
【问题描述】:

如何将 sfc_LINESTRING 几何图形转换为 sfc_MULTIPOLYGON?目的是拥有一个数据框,其记录数量等于我需要以图形方式表示将数据与它们关联的领土单位。聚合元素将是一个省级代码,我可以从数据框的一列 ($ NATIONALCO) 中提取它。

shapefile原始文件来自国家地理研究所下载中心(https://centrodedescargas.cnig.es),参考地理信息,市、省、自治区界限。


> str(geoprovincias)
Classes ‘sf’ and 'data.frame':  5312 obs. of  12 variables:
 $ INSPIREID      : chr  "ES.IGN.BDDAE.M34121500000M97999900000T0225826" "ES.IGN.BDDAE.M34121500000M97999900000T0225560" "ES.IGN.BDDAE.M34121500000M97999900000T0225833" "ES.IGN.BDDAE.M34121500000M97999900000T0226291" ...
 $ NATIONALCO     : chr  "M34121500000M97999900000T0225826" "M34121500000M97999900000T0225560" "M34121500000M97999900000T0225833" "M34121500000M97999900000T0226291" ...
 $ COUNTRY        : chr  "ES" "ES" "ES" "ES" ...
 $ NATLEV         : chr  "https://inspire.ec.europa.eu/codelist/AdministrativeHierarchyLevel/3rdOrder" "https://inspire.ec.europa.eu/codelist/AdministrativeHierarchyLevel/3rdOrder" "https://inspire.ec.europa.eu/codelist/AdministrativeHierarchyLevel/3rdOrder" "https://inspire.ec.europa.eu/codelist/AdministrativeHierarchyLevel/3rdOrder" ...
 $ NATLEVNAME     : chr  "Provincia" "Provincia" "Provincia" "Provincia" ...
 $ LEGSTATUS      : chr  NA NA NA NA ...
 $ ACCURACY       : chr  NA NA NA NA ...
 $ NAME_BOUND     : chr  "A Coruña#Océano Atlántico" "A Coruña#Océano Atlántico" "A Coruña#Océano Atlántico" "A Coruña#Océano Atlántico" ...
 $ DATE_BOUND     : Date, format: "2009-07-06" "2009-07-06" ...
 $ URL_RESOUR     : chr  "https://www.idee.es/csw-inspire-idee/srv/spa/catalog.search#/home" "https://www.idee.es/csw-inspire-idee/srv/spa/catalog.search#/home" "https://www.idee.es/csw-inspire-idee/srv/spa/catalog.search#/home" "https://www.idee.es/csw-inspire-idee/srv/spa/catalog.search#/home" ...
 $ geometry       :sfc_LINESTRING of length 5312; first list element:  'XY' num [1:13, 1:2] -9.28 -9.28 -9.28 -9.28 -9.28 ...
 $ CódigoProvincia: chr  "15" "15" "15" "15" ...
 - attr(*, "sf_column")= chr "geometry"
 - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA NA NA NA NA NA ...
  ..- attr(*, "names")= chr [1:11] "INSPIREID" "NATIONALCO" "COUNTRY" "NATLEV" ...
> 

更新

geoprovinces生成r代码。


geopropenínsula <- st_read("ruta/ll_provinciales_inspire_peninbal_etrs89.shp")

geoprocanarias <- st_read("ruta/ll_provinciales_inspire_canarias_wgs84.shp")

crs <- st_crs(geopropenínsula)

geoprocanariasco <- 
    geoprocanarias %>% 
    st_transform(crs) %>%
    st_geometry()
geoprocanariasco <- geoprocanariasco + c(5, 7)

geoprocanarias <- 
    geoprocanarias %>% 
    st_set_geometry(geoprocanariasco) %>%  
    st_set_crs(crs)

geoprovincias <- rbind(geopropenínsula, geoprocanarias)
geoprovincias$CódigoProvincia <- substring(geoprovincias$NATIONALCO, 6, 7)

geoprovincias %>%
 ggplot() +
  geom_sf() +
  theme_void()

【问题讨论】:

    标签: r sf


    【解决方案1】:

    您可以使用st_cast 更改为多面体。我只在下面的示例中使用了其中一个 shapefile。您需要先将其转换为多线字符串,然后您可以将其转换为多面体。

    library(sf)
    
    geo <- st_read("ll_autonomicas_inspire_canarias_wgs84.shp")
    
    mls <- st_cast(geo, "MULTILINESTRING") %>%
      st_cast(., "MULTIPOLYGON")
    

    输出

    mls
    
    Simple feature collection with 1070 features and 10 fields
    Geometry type: MULTIPOLYGON
    Dimension:     XY
    Bounding box:  xmin: -18.16118 ymin: 27.63772 xmax: -13.33496 ymax: 29.41645
    Geodetic CRS:  WGS 84
    
    library(mapview)
    mapview::mapview(mls)
    

    【讨论】:

    • 并按地域单位分组,根据变量CódigoProvincia?。 CódigoProvincia 的每个不同值的 sfc_MULTIPOLYGON
    • 你能提供你用来创建 geoprovincias 的代码吗?
    • 我已经用geoprovinciasgeneration r 代码更新了问题
    • 我一直在查看这些官方文件,遇到了各种问题。有两个省(26 和 28,拉里奥哈和马德里)无法识别。还有一个不对应任何官方省份的“54”。解决这个问题超出了我的知识范围。
    • geoprovincias &lt;- geoprovincias %&gt;% group_by(CódigoProvincia) %&gt;% summarize(geometry = st_union(geometry)) 我已使用此代码执行分组,但上述评论中描述的问题使我无法使用此官方地理空间数据源。对于您花费的时间,我深表歉意。
    猜你喜欢
    • 2018-12-03
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 2020-09-09
    • 2011-03-03
    相关资源
    最近更新 更多