Here we provide guidelines on how to build GDAL 3.0+ and PROJ 4 (6.X.X) from source for MacOS machines using Macports. For a variant to this using Anaconda click here.
For Linux installation instructions see here.
Make sure to run these in the specified order!
- MacPorts
- GDAL COMMANDLINE SETUP
- GDAL PYTHON bindings
- Jupyter Notebooks SETUP
- Return to back to ARIA-tools page
First install Macports following the instructions at Macports website.
Use the ports package manager to install python 3.X.X and associated packages, and compiler tools that are needed for PROJ 4 installation and ARIA-tools. The following instructions are tested using python 3.6.8. Note that below we default the python executable to python3.
sudo port -N install autoconf automake libtool json-c netcdf proj6
sudo port -N install python3X py3X-scipy py3X-matplotlib py3X-pandas py3X-shapely py3X-netcdf4 py3X-pkgconfig
sudo port select python python3XPlace macports install directories (/opt/local/...) ahead of system directories (/usr/...) so that compilers find the right libraries. e.g. for bash:
export PATH="/opt/local/bin:/opt/local/lib:/opt/local/sbin:$(getconf PATH)"cd /my/gdal
mkdir installClone the GDAL repository from github with a version of at least 3.0 (i.e. main branch).
git clone https://github.com/OSGeo/gdalWe will first build the GDAL package and command line tools. Note it is better not to build the python tools at the same time given library and compiler conflicts with NumPy.
cd /my/gdal/gdal/
./configure --prefix=/my/gdal/install --with-proj=/opt/local/lib/proj6 --with-sqlite3 --with-libjson-c=internalif configure fails, you might want to try and specify additional options, such as:
--with-kea=noNext make and install GDAL:
make -j4
make installNext you can inspect if the following passes without errors:
cd apps
make test_ogrsf
cd ..Before proceeding to the python bindings installation make sure your LD_LIBRARY_PATH, DYLD_LIBRARY_PATH and PATH in your shell to point to the new GDAL installation lib and bin folders. E.g for bash:
export LD_LIBRARY_PATH="/my/gdal/install/lib"
export DYLD_LIBRARY_PATH="/my/gdal/install/lib"
export PATH="/my/gdal/install/bin:$(getconf PATH)"Make sure your LD_LIBRARY_PATH, DYLD_LIBRARY_PATH and PATH are pointing to your GDAL installation.
echo $LD_LIBRARY_PATH
echo $DYLD_LIBRARY_PATH
echo $PATHTo install the python bindings:
cd swig/pythonEdit the setup.cfg file such that gdal-config is pointing to your install folder of GDAL.
vim setup.cfg
#update gdal_config=/my/gdal/install/bin/gdal-configThe GDAL python bindings are built here for the python executable. If you are having both python2 and 3 installed make sure you are installing it for python3. Here we assume python is an alias for python3 and specify the use of gcc and g++. Note the later should be the same as used for building NumPy. If the test provided below fail you could remove gcc and g++ specification and try again.
CC=gcc CXX=g++ python setup.py build >& blogNote if you re-run the build command make sure to delete the build folder.
Next, we will extract the library build paths:
grep lgdal blog > linkcmdsEdit this file and remove all '-L/opt/local/lib' occurrences and 'blog:' occurrences at beginning of line.
Once done you can execute the commands using:
chmod +x linkcmds
./linkcmdsTo set the location the installation for install add the python bindings to your PYTHONPATH and source the environment. E.g for bash:
export PYTHONPATH="/my/gdal/install/lib/python:${PYTHONPATH}"
mkdir /my/gdal/install/lib/pythonNow we will install them at the same location as out GDAL command line tools using:
python setup.py install --home=/my/gdal/install/To test your GDAL python bindings are correctly working with NumPy try:
python
> from osgeo import gdal_array
> import gdalnumericUse the ports package manager to install python 3.X and associated packages, the py3X-pip package mananger, and py3x-jupyter. Recommended is to use at least >=py36
sudo port install py3X-jupyter py3X-jupyter_client py3X-pipInstructions for installing contributed notebook extensions
sudo pip-3.X install jupyter_contrib_nbextensions
sudo jupyter-3.X contrib nbextension install --userInstructions for installing extension configurator
sudo pip-3.X install jupyter_nbextensions_configurator
sudo jupyter-3.X nbextensions_configurator enable --userhide_code plugin for hiding cells with code if needed
sudo pip-3.X install hide_code
sudo jupyter-3.X nbextension install --py hide_codeRISE plugin to turn notebooks into slideshow
sudo pip-3.X install RISE
sudo jupyter-nbextension-3.X install rise --py --sys-prefixAdd export PYTHONIOENCODING=utf-8 to your bash_profile (or equivalent for other shells) to prevent potential unicode problems in python