#r #shapefile #sf #rgdal
#r #шейп-файл #sf #ргдал
Вопрос:
Я пытаюсь заставить R читать в файле gdb. Первое, что я сделал, это выяснил его слои, что я и сделал, запустив:
ogrListLayers("my_data.gdb")
Оказывается, my_data имеет два больших слоя. Я пытался открыть оба, но безуспешно. Вот что я пробовал до сих пор:
1)
Wont_open lt;- readOGR(dsn = "D:/my_data.gdb", layer = "layer_1", dropNULLGeometries = F)
Я попробовал вышесказанное с аргументом dropNULLGeometries и без него, а также для обоих слоев в my_data. При запуске этой программы я получаю следующую ошибку:
Error in readOGR(dsn = "D:/my_data.gdb", : Unsupported field type: Binary
- Wont_open
Я попробовал вышеописанное для обоих слоев в my_data. Когда я запускаю это, R просто перестает работать примерно через 1 час после запуска процесса.
3)
read_GDB_Layer lt;- function(dsn, layerName, overwrite = T){ conversionDir lt;- tempdir() gdalUtils:: ogr2ogr(src_datasource_name = dsn, dst_datasource_name = conversionDir, f = "ESRI Shapefile", layer layerName, verbose = T, overwrite = overwrite) df lt;- read.dbf(file.path(conversionDir, paste0(layerName, ".gdbtable"))) return(df)}
Затем,
Wont_open lt;- read_GDB_Layer(dsn = "D:/my_data.gdb", layerName = "layer_1")
Я попробовал это для обоих слоев и изменил аргумент .gdbtable функции для .dbf, чтобы запустить ее на обоих слоях, но это все равно не сработало. Я получил следующие предупреждающие сообщения:
1: In gdal_setInstallation(search_path = NULL, rescan = FALSE, ignore.full_scan = TRUE, : No GDAL installation found. Please install 'gdal' before continuing: - www.gdal.org (no HDF4 support!) - trac.osgeo.org/osgeo4w/ (with HDF4 support RECOMMENDED) - www.fwtools.maptools.org (with HDF4 support) 2: In gdal_setInstallation(search_path = NULL, rescan = FALSE, ignore.full_scan = TRUE, : If you think GDAL is installed, please run: gdal_setInstallation(ignore.full_scan=FALSE)
Комментарии:
1. Hi @Sven Brandt. Можно ли было бы использовать ваш файл .gdb (или отрывок) для проведения некоторых тестов?
2. Привет @lovalery! Спасибо, что связались со мной по этому вопросу. Я забыл опубликовать обновление. Оказывается, функция st_read() действительно смогла его открыть. Исходный набор данных был слишком большим, поэтому мне пришлось поговорить со своим другом, чтобы использовать его ArcGIS Pro для выделения необходимой мне части данных. Эти данные относятся к 1916 году, но мне нужно было только с 2020 года. Как только я выделил эту часть данных, я смог открыть ее с помощью st_read().
3. Hi @Sven Brandt. Большое вам спасибо за ваши отзывы и рад слышать, что вам удалось решить вашу проблему. Я желаю вам всего наилучшего в вашей работе. Ваше здоровье.