我想使用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
答案 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
应为您提供可用图层的名称。