Установка пакета rgdal
Здесь проблема не совсем в том, как строить карты через R, как я уже нашел здесь довольно хороший пример, а в том, как заставить его работать. На самом деле, я не могу загрузить библиотеку rgdal
:
library(rgdal)
Error in library(rgdal) : there is no package called ‘rgdal’
Однако, когда я пытаюсь установить вышеупомянутый пакет вручную, я получаю следующую ошибку:
....
configure: error: proj_api.h not found in standard or given locations.
ERROR: configuration failed for package ‘rgdal’
* removing ‘/home/eualin/R/i686-pc-linux-gnu-library/2.15/rgdal’
Warning in install.packages : installation of package ‘/home/eualin/Downloads/rgdal_0.8-5.tar.gz’ had non-zero exit status
Любые пожелания приветствуются!
19 ответов
Если вы посмотрите на страницу пакета на CRAN, вы увидите следующее:
SystemRequirements: для сборки из источника: GDAL >= 1.7.1 библиотека из http://trac.osgeo.org/gdal/wiki/DownloadSource и PROJ.4 (proj >= 4.4.9) из http://trac.osgeo.org/proj/; Платформы GDAL OSX, созданные Уильямом Кинжсбери по адресу http://www.kyngchaos.com/ могут использоваться для установки исходного кода на OSX.
Поскольку вы, похоже, работаете под Linux, вы всегда собираете пакет из исходного кода, поэтому вам придется установить соответствующие библиотеки в вашей системе. Если вы работаете в Mint, Ubuntu или другом производном Debian, вы можете сделать:
$ sudo apt-get install libgdal1-dev libproj-dev
Один из советов, который может оказаться полезным в системе на основе Debian, - это установить apt-file
упаковать и запустить:
$ sudo apt-file update
Затем, когда вы получаете ошибку, такую как:
configure: error: proj_api.h not found in standard or given locations.
Вы можете использовать следующую команду, чтобы найти, какой пакет необходимо установить, чтобы получить отсутствующий файл:
$ apt-file search proj_api.h
libproj-dev: /usr/include/proj_api.h
Если вы используете OS X с менеджером пакетов Homebrew, и R установлен через homebrew-science tap, вы можете установить rgdal, сначала установив gdal.
brew install gdal
Вы можете сначала перечислить доступные опции, прежде чем запускать эту опцию, на случай, если вам понадобится что-то необычное, например, поддержка postgresql. Чтобы увидеть доступные варианты введите
brew options gdal
тогда для фантазии вы можете напечатать
brew install --with-postgresql gdal
через некоторое время вы должны хорошо разобраться с зависимостями, поскольку proj, включая необходимый вам файл proj_api.h, является зависимостями! К сожалению, rgdal по-прежнему не может найти pro_api.h сейчас, так как он не ищет в / usr / local / include. Чтобы исправить это и другие возможные проблемы с вашей установкой rgdal, используйте следующую команду R для установки rgdal:
> install.packages('rgdal', type = "source", configure.args=c('--with-proj-include=/usr/local/include','--with-proj-lib=/usr/local/lib'))
Это должно быть похоже на то, что вам также потребуется для MacPorts, за исключением шагов brew, и ваши библиотеки / заголовки, скорее всего, находятся в папках "/ opt / local / lib" и "/ opt / local / include" соответственно.
Примечание: для создания обновлений, если вы используете "--with-armadillo" в качестве опции с gdal и обновили armadillo до 7 с 6. Вам придется перекомпилировать gdal перед обновлением / переустановкой rgdal.
В системе Fedora 21 с использованием R-3.2.0 сработало следующее:
yum install gdal.x86_64 gdal-devel.x86_64 gdal-libs.x86_64
yum install proj.x86_64 proj-devel.x86_64
yum install proj-epsg.x86_64 proj-nad.x86_64
Очевидно, это было результатом повторных попыток получить:
install.packages("rgdal")
работать. Вы, вероятно, можете сделать все это за одну установку.
На Ubuntustudio 14.04 (то же самое для всех дистрибутивов Debian):
sudo apt-get install libproj-dev libgdal-dev
Тогда я мог бы установить пакет RGDAL
R info:
R version 3.0.2 (2013-09-25) -- "Frisbee Sailing"
Linux info:
Linux francois-K53SV 3.13.0-34-lowlatency #60-Ubuntu SMP PREEMPT Wed Aug 13 16:15:18 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Вот что я сделал на Centos7:
yum install gdal gdal-devel
yum install proj
yum install proj-nad
yum install proj-epsg
Тогда просто
install.packages("rgdal")
Работало нормально, но не совсем понятно.
Для Ubuntu 16.04 и R 3.5.1 это работает довольно быстро:
sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable
sudo apt update
sudo apt install gdal-bin python-gdal python3-gdal libgdal1-dev
Затем;
sudo apt-get install libudunits2-dev libgdal-dev libgeos-dev libproj-dev
Наконец в CRAN;
install.packages("rgdal")
В OSX я загружаю proj с http://www.kyngchaos.com/software/frameworks и запускаю следующую команду в R.
install.packages('rgdal', type = "source", configure.args=c('--with-proj-include=/Library/Frameworks/PROJ.framework/Headers', '--with-proj-lib=/Library/Frameworks/PROJ.framework/unix/lib'))
Это сработало для меня:
install.packages('rgdal',repos="http://www.stats.ox.ac.uk/pub/RWin")
Для пользователей Mac (OS.X Version10.12.6) это сработало для меня. Сначала перейдите в командную строку и установите gdal, используя >> brew install gdal
Во-вторых, попал в Rstuduio(консоль R) и установил пакет, используя install.packages("rgdal")
Для меня (Ubuntu 16.04, R 3.4.2), смесь вышеперечисленных решений работает:
sudo apt-get install libudunits2-dev libgdal-dev libgeos-dev libproj-dev
Тогда просто установил rgdal
из Крана.
Для людей в многопользовательских средах с несколькими установленными версиями proj (из исходного кода) я использовал следующий метод:
install.packages('rgdal',configure.args="--with-proj-include=/sw/proj/4.9.2/include --with-proj-lib=/sw/proj/4.9.2/lib")
Единственное, что работало в моей системе, - это скомпилировал PROJ4 из исходного кода, как описано здесь, а затем установил пакет rgdal как
install.packages("rgdal")
Если у кого-то все еще есть проблемы с этим, я получил версию rgdal с этого сайта:
https://cran.r-project.org/web/packages/rgdal/index.html
и установил его:
install.packages("filename.tar", repos = NULL, type = "source")
Чтобы это исправить, нужно install libgdal-dev:
$ sudo apt install libgdal-dev
Явное добавление пути включения в CFLAGS сработало для меня
install.packages('rgdal', type = "source", configure.args=c('CFLAGS=-I/apps/proj4/5.2.0/include'))
Не удалось заставить rgdal правильно установить, я пробовал все упомянутые и все предложения здесь R не находит пакет даже после установки пакета
library(rgdal)
rgdal: version: 1.4-3, (SVN revision 828)
Geospatial Data Abstraction Library extensions to R successfully loaded
Loaded GDAL runtime: GDAL 2.2.3, released 2017/11/20
Path to GDAL shared files: C:/Users/xxx/Documents/R/win-library/3.4/rgdal/gdal
GDAL binary built with GEOS: TRUE
Loaded PROJ.4 runtime: Rel. 4.9.3, 15 August 2016, [PJ_VERSION: 493]
Path to PROJ.4 shared files: C:/Users/xxx/Documents/R/win-library/3.4/rgdal/proj
Linking to sp version: 1.3-1
Warning message:
package ‘rgdal’ was built under R version 3.4.4
Я обновил свой R до 3.6.1
Попробуй снова:
batch_gdal_translate(x, desc, outsuffix = "4.img", of = "HFA", co="TILED=YES")
NULL
Warning messages:
1: In gdal_setInstallation() :
No GDAL installation found. Please install 'gdal' before continuing:
- www.gdal.org (no HDF4 support!)
- www.trac.osgeo.org/osgeo4w/ (with HDF4 support RECOMMENDED)
- www.fwtools.maptools.org (with HDF4 support)
2: In gdal_setInstallation() : If you think GDAL is installed, please run:
gdal_setInstallation(ignore.full_scan=FALSE)
Я попытался запустить это из Rstudio и командной строки R 3.6.1 GUI.
Каждый раз, когда я пробовал это, я получаю положительные результаты для устанавливаемых библиотек.
library(raster)
Loading required package: sp
library(rgdal)
rgdal: version: 1.4-4, (SVN revision 833)
Geospatial Data Abstraction Library extensions to R successfully loaded
Loaded GDAL runtime: GDAL 2.2.3, released 2017/11/20
Path to GDAL shared files: C:/Users/xxx/Documents/R/R-3.6.1/library/rgdal/gdal
GDAL binary built with GEOS: TRUE
Loaded PROJ.4 runtime: Rel. 4.9.3, 15 August 2016, [PJ_VERSION: 493]
Path to PROJ.4 shared files: C:/Users/xxx/Documents/R/R-3.6.1/library/rgdal/proj
Linking to sp version: 1.3-1
library(gdalUtils)
Registered S3 method overwritten by 'R.oo':
method from
throw.default R.methodsS3
файлы, которые я пытаюсь прочитать, являются файлами dted?
x <- list.files(path = src, pattern = ".dt", full.names = TRUE)
length(x)
batch_gdal_translate(x, desc, outsuffix = "4.img", of = "HFA", co="TILED=YES")
Я также пробовал это с форматом GTIFF .tif и получаю ту же ошибку. Но я не пытаюсь читать файлы.hdf, просто.dt0, .dt1, .dt2
это будет работать на другой машине, на которой у меня установлен R, однако я пытаюсь выяснить, что не так с установкой, установленной у меня на "этой" машине.
Если вы используете среду Conda, используйте:
conda install -c conda-forge r-rgdal
conda install -c conda-forge/label/broken r-rgdal
conda install -c conda-forge/label/cf201901 r-rgdal
conda install -c conda-forge/label/cf202003 r-rgdal
conda install -c conda-forge proj
Если вы используете MacPorts
это должно работать:
Установить
gdal
(proj6
будет установлен как зависимость)sudo port install gdal
Установить
pkg-config
sudo port installpkgconfig
Установлен
PKG_CONIFG_PATH
переменная, указывающая на каталог сproj.pc
файл. В моем случае это было:export PKG_CONFIG_PATH=/opt/local/lib/proj6/lib/pkgconfig
Ни один из приведенных выше ответов не помог мне (работаю с R 3.5.1 на Linux Mint 17.1). Версия GDAL в репозиториях Ubuntu - 1.11.3, это приводит к сбою установки rGDAL. Вот решение, которое сработало для меня (с этого сайта):
sudo apt-get install libexpat1-dev
Скачайте и установите GDAL
wget http://download.osgeo.org/gdal/2.1.1/gdal-2.1.1.tar.gz
tar xvf gdal-2.1.1.tar.gz
cd gdal-2.1.1
./configure
sudo make
sudo make install
Проверить версию
gdal-config --version
Затем я получил эту ошибку:
** testing if installed package can be loaded
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/usr/local/lib/R/site-library/rgdal/libs/rgdal.so':
libgdal.so.20: cannot open shared object file: No such file or directory
Error: loading failed
Execution halted
ERROR: loading failed
Это было исправлено обновлением привязок:
sudo ldconfig
Затем бег install.packages("rgdal")
в R работал нормально.