Как извлечь имена слоев из `sf :: st_layers ()`? - PullRequest
0 голосов
/ 26 июня 2019

Я хотел бы извлечь имя слоя из шейп-файла с пакетом R {sf}.

Я пытался извлечь информацию из 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

Я пытался привести к кадрам данных или tibbles, но это невозможно:

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 Ответ

1 голос
/ 28 июня 2019

Имена слоев хранятся в столбце 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

должно дать вам имя (я) доступных слоев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...