использование list.files для чтения множества файлов фигур, а затем объединения их в один большой файл - PullRequest
0 голосов
/ 15 июня 2019

У меня более 1000 файлов форм в каталоге, и я хочу выбрать только 10 из них, имена которых мне уже известны, следующим образом:

15TVN44102267_Polygons.shp, 15TVN44102275_Polygons.shp
15TVN44102282_Polygons.shp, 15TVN44102290_Polygons.shp
15TVN44102297_Polygons.shp, 15TVN44102305_Polygons.shp
15TVN44102312_Polygons.shp, 15TVN44102320_Polygons.shp
15TVN44102327_Polygons.shp, 15TVN44102335_Polygons.shp

Сначала я хочу прочитать только эти файлы фигур с помощью команды list.files, а затем объединить их в один большой файл. Я попробовал следующую команду, но она не удалась. Я буду признателен за любую помощь от сообщества.

setwd('D/LiDAR/CHM_tree_objects')
files <- list.files(pattern="15TVN44102267_Polygons|
15TVN44102275_Polygons|    15TVN44102282_Polygons|
15TVN44102290_Polygons|    15TVN44102297_Polygons|
15TVN44102305_Polygons|    15TVN44102312_Polygons|
15TVN44102320_Polygons|    15TVN44102327_Polygons|
15TVN44102335_Polygons|    15TVN44102342_Polygons|
15TVN44102350_Polygons|    15TVN44102357_Polygons",
recursive = TRUE, full.names = TRUE)

1 Ответ

0 голосов
/ 15 июня 2019

Вот немного другой подход. Если вы уже знаете расположение файлов и их имена, вам не нужно использовать list.files:

library(sf)

baseDir <- '/temp/r/'
filenames <- c('Denisonia-maculata.shp', 'Denisonia-devisi.shp')
filepaths <- paste(baseDir, filenames, sep='')

# Read each shapefile and return a list of sf objects
listOfShp <- lapply(filepaths, st_read)

# Look to make sure they're all in the same CRS
unique(sapply(listOfShp, crs))

# Combine the list of sf objects into a single object
combinedShp <- do.call(what = sf:::rbind.sf, args=listOfShp)

combinedShp будет тогда sf объектом, который имеет все функции в ваших индивидуальных шейп-файлах. Затем вы можете записать это в один файл в выбранном вами формате с помощью st_write.

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