如何从`sf :: st_layers()`中提取图层名称?

时间:2019-06-26 08:47:36

标签: r sf

我想使用R {sf}包提取shapefile的图层名称。

我试图从sf::st_layers()中提取信息。我看着sf::st_read(),但看不到它如何获得图层名称。

st_layers(dsn = system.file("shapes/sids.shp", package = "spData") )
>> Driver: ESRI Shapefile 
>> Available layers:
>>  layer_name geometry_type features fields
>>    1       sids       Polygon      100     22

我试图强制使用数据框或小标题,但这是不可能的:

Error in as.data.frame.default(value, stringsAsFactors = FALSE) : 
  cannot coerce class ‘"sf_layers"’ to a data.frame

我也尝试过st_layers(dsn = system.file("shapes/sids.shp", package = "spData") ) %>% .[["layer_name"]],并且得到了NULL

1 个答案:

答案 0 :(得分:1)

图层名称存储在name返回的对象的st_layers列中,您可以看到使用str分析其结构:

str(st_layers(dsn = system.file("shapes/sids.shp", package = "spData")))

List of 5
 $ name    : chr "sids"
 $ geomtype:List of 1
  ..$ : chr "Polygon"
 $ driver  : chr "ESRI Shapefile"
 $ features: num 100
 $ fields  : num 22
 - attr(*, "class")= chr "sf_layers"

因此,使用

st_layers(dsn = system.file("shapes/sids.shp", package = "spData"))$name

应为您提供可用图层的名称。