r - 如何从`sf::st_layers()`中提取层的名称?
问题描述
我想用 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
解决方案
层的名称存储在由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
应该给你可用层的名称。
推荐阅读
- javascript - npm 找不到模块“继承”
- os.walk - os.walk 只提取了几个文件,没有文本信息
- google-nearby - 安卓和IOS之间谷歌附近消息无法使用
- python-3.x - 创建从年份“开始”到“结束”的表
- jquery - Quill - 将视频自动播放设置为 false
- java - Java - 使用 Scanner 读取文件以创建非重复对象
- node.js - 使用 docker-compose 容器化后,前端和后端之间没有通信
- python - 如何在 Python 中使用 for 循环创建嵌套字典?
- javascript - 单击按钮后,Bootstrap5 模态未在 React.js 中显示
- java - Java 进程占用的 RAM 比堆大小多得多