Сбой распаковки из-за длинного имени в заархивированной папке - PullRequest
1 голос
/ 10 октября 2019

Я хочу иметь возможность читать и редактировать пространственные таблицы SQlite, которые загружаются с сервера. Они поставляются сжатыми.

В этих файлах zip есть папка, в которой содержится информация о модели, которая использовалась в качестве имени папки, и поэтому иногда она может быть довольно длинной.

Если это имя папки становится слишком длинным, разархивировать папку не удается. В конечном итоге мне не нужно разархивировать файл. Но, похоже, я получаю ту же ошибку, когда использую unz в readOGR.

Я не могу придумать, как воссоздать реплицируемый пример, но могу привести пример пути, который работает, и пути, который не работает.

Работает: "S: \ 3_Projects \ CRC00001 \ 4699-12103 \ script_initialised model \ performance_assessment.sqlite"

4699-12103 - это имя файла zip, а "scene_initialised model" - подпапка, вызывающая проблемы

Сбои: "" S: \ 3_Projects \ CRC00001 \ 4699-12129 \ scene_tree_canopy_7, number_of_trees_0, roads_False, compatibility_75, year_2030, nrz_cover_0.6, green_roofs_0 \ performance_assessment.sqlite "101 * 463

463 * * 109 *имя zip-файла и "script_tree_canopy_7, number_of_trees_0, roads_False, compatibility_75, year_2030, nrz_cover_0.6, green_roofs_0" являются подпапкой, вызывающей проблемы

Код будет работать аналогично этому.

list_zips <- list.files(pattern = "*.zip", recursive = TRUE, include.dirs = TRUE)

unzip(zipfile = paste(getwd(),"/",list_zips[i],sep = ""),
                    exdir=substr(paste(getwd(),"/",list_zips[i],sep = ""),1,nchar(paste(getwd(),"/",list_zips[i],sep = ""))-4))

Но я бы предпочел напрямую загружать пространственный файл без разархивирования. Такие как:

sq_path <- unzip(list_zips[i], list=TRUE)[2,1]
temp <- unz(paste(getwd(),"/",list_zips[i],sep = ""),sq_path)
vectorImport <- readOGR(dsn=temp, layer="micro_climate_grid")

Любая помощь будет оценена! Тим

...