|
@@ -0,0 +1,1190 @@
|
|
|
+.. _ref-gis-install:
|
|
|
+
|
|
|
+======================
|
|
|
+GeoDjango Installation
|
|
|
+======================
|
|
|
+
|
|
|
+Overview
|
|
|
+========
|
|
|
+In general, GeoDjango installation requires:
|
|
|
+
|
|
|
+1. :ref:`python24` and :ref:`django`
|
|
|
+2. :ref:`spatial_database`
|
|
|
+3. :ref:`geospatial_libs`
|
|
|
+
|
|
|
+Details for each of the requirements and installation instructions
|
|
|
+are provided in the sections below. In addition, platform-specific
|
|
|
+instructions are available for:
|
|
|
+
|
|
|
+* :ref:`macosx`
|
|
|
+* :ref:`ubuntudebian`
|
|
|
+* :ref:`windows`
|
|
|
+
|
|
|
+.. admonition:: Use the Source
|
|
|
+
|
|
|
+ Because GeoDjango takes advantage of the latest in the open source geospatial
|
|
|
+ software technology, recent versions of the libraries are necessary.
|
|
|
+ If binary packages aren't available for your platform,
|
|
|
+ :ref:`installation from source <build_from_source>`
|
|
|
+ may be required. When compiling the libraries from source, please follow the
|
|
|
+ directions closely, especially if you're a beginner.
|
|
|
+
|
|
|
+Requirements
|
|
|
+============
|
|
|
+
|
|
|
+.. _python24:
|
|
|
+
|
|
|
+Python 2.4+
|
|
|
+-----------
|
|
|
+Because of heavy use of the decorator syntax, Python 2.4 is minimum
|
|
|
+version supported by GeoDjango. Python 2.5+ is recommended because the
|
|
|
+`ctypes`__ module comes included; otherwise, 2.4 users will need to
|
|
|
+`download and install ctypes`__.
|
|
|
+
|
|
|
+__ http://docs.python.org/lib/module-ctypes.html
|
|
|
+__ http://sourceforge.net/projects/ctypes/files/
|
|
|
+
|
|
|
+.. _django:
|
|
|
+
|
|
|
+Django
|
|
|
+------
|
|
|
+
|
|
|
+Because GeoDjango is included with Django, please refer to Django's
|
|
|
+:ref:`installation instructions <intro-install>` for details on how to install.
|
|
|
+
|
|
|
+.. _spatial_database:
|
|
|
+
|
|
|
+Spatial Database
|
|
|
+----------------
|
|
|
+PostgreSQL (with PostGIS), MySQL, Oracle, and SQLite (with SpatiaLite) are
|
|
|
+the spatial databases currently supported.
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ PostGIS is recommended, because it is the most mature and feature-rich
|
|
|
+ open source spatial database.
|
|
|
+
|
|
|
+The geospatial libraries required for a GeoDjango installation depends
|
|
|
+on the spatial database used. The following lists the library requirements,
|
|
|
+supported versions, and any notes for each of the supported database backends:
|
|
|
+
|
|
|
+================== ============================== ================== ==========================================================
|
|
|
+Database Library Requirements Supported Versions Notes
|
|
|
+================== ============================== ================== ==========================================================
|
|
|
+PostgreSQL GEOS, PROJ.4, PostGIS 8.1+ Requires PostGIS.
|
|
|
+MySQL GEOS 5.x Not OGC-compliant; limited functionality.
|
|
|
+Oracle GEOS 10.2, 11 XE not supported; not tested with 9.
|
|
|
+SQLite GEOS, GDAL, PROJ.4, SpatiaLite 3.6.+ Requires SpatiaLite 2.3+, pysqlite2 2.5+, and Django 1.1.
|
|
|
+================== ============================== ================== ==========================================================
|
|
|
+
|
|
|
+.. _geospatial_libs:
|
|
|
+
|
|
|
+Geospatial Libraries
|
|
|
+--------------------
|
|
|
+GeoDjango uses and/or provides interfaces for the the following open source
|
|
|
+geospatial libraries:
|
|
|
+
|
|
|
+======================== ==================================== ================================ ==========================
|
|
|
+Program Description Required Supported Versions
|
|
|
+======================== ==================================== ================================ ==========================
|
|
|
+:ref:`GEOS <ref-geos>` Geometry Engine Open Source Yes 3.2, 3.1, 3.0
|
|
|
+`PROJ.4`_ Cartographic Projections library Yes (PostgreSQL and SQLite only) 4.7, 4.6, 4.5, 4.4
|
|
|
+:ref:`GDAL <ref-gdal>` Geospatial Data Abstraction Library No (but, required for SQLite) 1.6, 1.5, 1.4
|
|
|
+:ref:`GeoIP <ref-geoip>` IP-based geolocation library No 1.4
|
|
|
+`PostGIS`__ Spatial extensions for PostgreSQL Yes (PostgreSQL only) 1.5, 1.4, 1.3
|
|
|
+`SpatiaLite`__ Spatial extensions for SQLite Yes (SQLite only) 2.4, 2.3
|
|
|
+======================== ==================================== ================================ ==========================
|
|
|
+
|
|
|
+.. admonition:: Install GDAL
|
|
|
+
|
|
|
+ While :ref:`gdalbuild` is technically not required, it is *recommended*.
|
|
|
+ Some features of GeoDjango (including the :ref:`ref-layermapping` and the geographic
|
|
|
+ admin) depend on its functionality.
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ The GeoDjango interfaces to GEOS, GDAL, and GeoIP may be used
|
|
|
+ independently of Django. In other words, no database or settings file
|
|
|
+ required -- just import them as normal from :mod:`django.contrib.gis`.
|
|
|
+
|
|
|
+.. _PROJ.4: http://trac.osgeo.org/proj/
|
|
|
+__ http://postgis.refractions.net/
|
|
|
+__ http://www.gaia-gis.it/spatialite/index.html
|
|
|
+
|
|
|
+.. _build_from_source:
|
|
|
+
|
|
|
+Building from Source
|
|
|
+====================
|
|
|
+
|
|
|
+When installing from source on UNIX and GNU/Linux systems, please follow
|
|
|
+the installation instructions carefully, and install the libraries in the
|
|
|
+given order. If using MySQL or Oracle as the spatial database, only GEOS
|
|
|
+is required.
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ On Linux platforms, it may be necessarry to run the ``ldconfig``
|
|
|
+ command after installing each library. For example::
|
|
|
+
|
|
|
+ $ sudo make install
|
|
|
+ $ sudo ldconfig
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ OS X users are required to install `Apple Developer Tools`_ in order
|
|
|
+ to compile software from source. This is typically included on your
|
|
|
+ OS X installation DVDs.
|
|
|
+
|
|
|
+.. _Apple Developer Tools: http://developer.apple.com/tools/xcode/
|
|
|
+
|
|
|
+.. _geosbuild:
|
|
|
+
|
|
|
+GEOS
|
|
|
+----
|
|
|
+
|
|
|
+GEOS is a C++ library for performing geometric operations, and is the default
|
|
|
+internal geometry representation used by GeoDjango (it's behind the "lazy"
|
|
|
+geometries). Specifically, the C API library is called (e.g., ``libgeos_c.so``)
|
|
|
+directly from Python using ctypes.
|
|
|
+
|
|
|
+First, download GEOS 3.2 from the refractions website and untar the source
|
|
|
+archive::
|
|
|
+
|
|
|
+ $ wget http://download.osgeo.org/geos/geos-3.2.0.tar.bz2
|
|
|
+ $ tar xjf geos-3.2.0.tar.bz2
|
|
|
+
|
|
|
+Next, change into the directory where GEOS was unpacked, run the configure
|
|
|
+script, compile, and install::
|
|
|
+
|
|
|
+ $ cd geos-3.2.0
|
|
|
+ $ ./configure
|
|
|
+ $ make
|
|
|
+ $ sudo make install
|
|
|
+ $ cd ..
|
|
|
+
|
|
|
+Troubleshooting
|
|
|
+^^^^^^^^^^^^^^^
|
|
|
+
|
|
|
+Can't find GEOS Library
|
|
|
+~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
+
|
|
|
+When GeoDjango can't find GEOS, this error is raised::
|
|
|
+
|
|
|
+ ImportError: Could not find the GEOS library (tried "geos_c"). Try setting GEOS_LIBRARY_PATH in your settings.
|
|
|
+
|
|
|
+The most common solution is to properly configure your :ref:`libsettings` *or* set
|
|
|
+:ref:`geoslibrarypath` in your settings.
|
|
|
+
|
|
|
+If using a binary package of GEOS (e.g., on Ubuntu 8.10), you may need to :ref:`binutils`.
|
|
|
+
|
|
|
+.. _geoslibrarypath:
|
|
|
+
|
|
|
+``GEOS_LIBRARY_PATH``
|
|
|
+~~~~~~~~~~~~~~~~~~~~~
|
|
|
+
|
|
|
+If your GEOS library is in a non-standard location, or you don't want to
|
|
|
+modify the system's library path then the :setting:`GEOS_LIBRARY_PATH` setting
|
|
|
+may be added to your Django settings file with the full path to the GEOS
|
|
|
+C library. For example::
|
|
|
+
|
|
|
+ GEOS_LIBRARY_PATH = '/home/bob/local/lib/libgeos_c.so'
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ The setting must be the *full* path to the **C** shared library; in
|
|
|
+ other words you want to use ``libgeos_c.so``, not ``libgeos.so``.
|
|
|
+
|
|
|
+.. _proj4:
|
|
|
+
|
|
|
+PROJ.4
|
|
|
+------
|
|
|
+
|
|
|
+`PROJ.4`_ is a library for converting geospatial data to different coordinate
|
|
|
+reference systems.
|
|
|
+
|
|
|
+First, download the PROJ.4 source code and datum shifting files [#]_::
|
|
|
+
|
|
|
+ $ wget http://download.osgeo.org/proj/proj-4.7.0.tar.gz
|
|
|
+ $ wget http://download.osgeo.org/proj/proj-datumgrid-1.5.zip
|
|
|
+
|
|
|
+Next, untar the source code archive, and extract the datum shifting files in the
|
|
|
+``nad`` subdirectory. This must be done *prior* to configuration::
|
|
|
+
|
|
|
+ $ tar xzf proj-4.7.0.tar.gz
|
|
|
+ $ cd proj-4.7.0/nad
|
|
|
+ $ unzip ../../proj-datumgrid-1.5.zip
|
|
|
+ $ cd ..
|
|
|
+
|
|
|
+Finally, configure, make and install PROJ.4::
|
|
|
+
|
|
|
+ $ ./configure
|
|
|
+ $ make
|
|
|
+ $ sudo make install
|
|
|
+ $ cd ..
|
|
|
+
|
|
|
+.. _postgis:
|
|
|
+
|
|
|
+PostGIS
|
|
|
+-------
|
|
|
+
|
|
|
+`PostGIS`__ adds geographic object support to PostgreSQL, turning it
|
|
|
+into a spatial database. :ref:`geosbuild` and :ref:`proj4` should be
|
|
|
+installed prior to building PostGIS.
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ The `psycopg2`_ module is required for use as the database adaptor
|
|
|
+ when using GeoDjango with PostGIS.
|
|
|
+
|
|
|
+.. _psycopg2: http://initd.org/projects/psycopg2
|
|
|
+
|
|
|
+First download the source archive, and extract::
|
|
|
+
|
|
|
+ $ wget http://postgis.refractions.net/download/postgis-1.5.1.tar.gz
|
|
|
+ $ tar xzf postgis-1.5.1.tar.gz
|
|
|
+ $ cd postgis-1.5.1
|
|
|
+
|
|
|
+Next, configure, make and install PostGIS::
|
|
|
+
|
|
|
+ $ ./configure
|
|
|
+
|
|
|
+Finally, make and install::
|
|
|
+
|
|
|
+ $ make
|
|
|
+ $ sudo make install
|
|
|
+ $ cd ..
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ GeoDjango does not automatically create a spatial database. Please
|
|
|
+ consult the section on :ref:`spatialdb_template` for more information.
|
|
|
+
|
|
|
+__ http://postgis.refractions.net/
|
|
|
+
|
|
|
+.. _gdalbuild:
|
|
|
+
|
|
|
+GDAL
|
|
|
+----
|
|
|
+
|
|
|
+`GDAL`__ is an excellent open source geospatial library that has support for
|
|
|
+reading most vector and raster spatial data formats. Currently, GeoDjango only
|
|
|
+supports :ref:`GDAL's vector data <ref-gdal>` capabilities [#]_.
|
|
|
+:ref:`geosbuild` and :ref:`proj4` should be installed prior to building GDAL.
|
|
|
+
|
|
|
+First download the latest GDAL release version and untar the archive::
|
|
|
+
|
|
|
+ $ wget http://download.osgeo.org/gdal/gdal-1.7.1.tar.gz
|
|
|
+ $ tar xzf gdal-1.7.1.tar.gz
|
|
|
+ $ cd gdal-1.7.1
|
|
|
+
|
|
|
+Configure, make and install::
|
|
|
+
|
|
|
+ $ ./configure
|
|
|
+ $ make # Go get some coffee, this takes a while.
|
|
|
+ $ sudo make install
|
|
|
+ $ cd ..
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ Because GeoDjango has it's own Python interface, the preceding instructions
|
|
|
+ do not build GDAL's own Python bindings. The bindings may be built by
|
|
|
+ adding the ``--with-python`` flag when running ``configure``. See
|
|
|
+ `GDAL/OGR In Python`__ for more information on GDAL's bindings.
|
|
|
+
|
|
|
+If you have any problems, please see the troubleshooting section below for
|
|
|
+suggestions and solutions.
|
|
|
+
|
|
|
+__ http://trac.osgeo.org/gdal/
|
|
|
+__ http://trac.osgeo.org/gdal/wiki/GdalOgrInPython
|
|
|
+
|
|
|
+.. _gdaltrouble:
|
|
|
+
|
|
|
+Troubleshooting
|
|
|
+^^^^^^^^^^^^^^^
|
|
|
+
|
|
|
+Can't find GDAL Library
|
|
|
+~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
+
|
|
|
+When GeoDjango can't find the GDAL library, the ``HAS_GDAL`` flag
|
|
|
+will be false::
|
|
|
+
|
|
|
+ >>> from django.contrib.gis import gdal
|
|
|
+ >>> gdal.HAS_GDAL
|
|
|
+ False
|
|
|
+
|
|
|
+The solution is to properly configure your :ref:`libsettings` *or* set
|
|
|
+:ref:`gdallibrarypath` in your settings.
|
|
|
+
|
|
|
+.. _gdallibrarypath:
|
|
|
+
|
|
|
+``GDAL_LIBRARY_PATH``
|
|
|
+~~~~~~~~~~~~~~~~~~~~~
|
|
|
+
|
|
|
+If your GDAL library is in a non-standard location, or you don't want to
|
|
|
+modify the system's library path then the :setting:`GDAL_LIBRARY_PATH`
|
|
|
+setting may be added to your Django settings file with the full path to
|
|
|
+the GDAL library. For example::
|
|
|
+
|
|
|
+ GDAL_LIBRARY_PATH = '/home/sue/local/lib/libgdal.so'
|
|
|
+
|
|
|
+.. _gdaldata:
|
|
|
+
|
|
|
+Can't find GDAL data files (``GDAL_DATA``)
|
|
|
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
+
|
|
|
+When installed from source, GDAL versions 1.5.1 and below have an autoconf bug
|
|
|
+that places data in the wrong location. [#]_ This can lead to error messages
|
|
|
+like this::
|
|
|
+
|
|
|
+ ERROR 4: Unable to open EPSG support file gcs.csv.
|
|
|
+ ...
|
|
|
+ OGRException: OGR failure.
|
|
|
+
|
|
|
+The solution is to set the ``GDAL_DATA`` environment variable to the location of the
|
|
|
+GDAL data files before invoking Python (typically ``/usr/local/share``; use
|
|
|
+``gdal-config --datadir`` to find out). For example::
|
|
|
+
|
|
|
+ $ export GDAL_DATA=`gdal-config --datadir`
|
|
|
+ $ python manage.py shell
|
|
|
+
|
|
|
+If using Apache, you may need to add this environment variable to your configuration
|
|
|
+file::
|
|
|
+
|
|
|
+ SetEnv GDAL_DATA /usr/local/share
|
|
|
+
|
|
|
+.. _spatialite:
|
|
|
+
|
|
|
+SpatiaLite
|
|
|
+----------
|
|
|
+.. versionadded:: 1.1
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ Mac OS X users should follow the instructions in the :ref:`kyngchaos` section,
|
|
|
+ as it is much easier than building from source.
|
|
|
+
|
|
|
+`SpatiaLite`__ adds spatial support to SQLite, turning it into a full-featured
|
|
|
+spatial database. Because SpatiaLite has special requirements, it typically
|
|
|
+requires SQLite and pysqlite2 (the Python SQLite DB-API adaptor) to be built from
|
|
|
+source. :ref:`geosbuild` and :ref:`proj4` should be installed prior to building
|
|
|
+SpatiaLite.
|
|
|
+
|
|
|
+After installation is complete, don't forget to read the post-installation
|
|
|
+docs on :ref:`create_spatialite_db`.
|
|
|
+
|
|
|
+__ http://www.gaia-gis.it/spatialite/index.html
|
|
|
+
|
|
|
+.. _sqlite:
|
|
|
+
|
|
|
+SQLite
|
|
|
+^^^^^^
|
|
|
+
|
|
|
+Typically, SQLite packages are not compiled to include the `R*Tree module`__ --
|
|
|
+thus it must be compiled from source. First download the latest amalgamation
|
|
|
+source archive from the `SQLite download page`__, and extract::
|
|
|
+
|
|
|
+ $ wget http://www.sqlite.org/sqlite-amalgamation-3.6.22.tar.gz
|
|
|
+ $ tar xzf sqlite-amalgamation-3.6.22.tar.gz
|
|
|
+ $ cd sqlite-3.6.22
|
|
|
+
|
|
|
+Next, run the ``configure`` script -- however the ``CFLAGS`` environment variable
|
|
|
+needs to be customized so that SQLite knows to build the R*Tree module::
|
|
|
+
|
|
|
+ $ CFLAGS="-DSQLITE_ENABLE_RTREE=1" ./configure
|
|
|
+ $ make
|
|
|
+ $ sudo make install
|
|
|
+ $ cd ..
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ If using Ubuntu, installing a newer SQLite from source can be very difficult
|
|
|
+ because it links to the existing ``libsqlite3.so`` in ``/usr/lib`` which
|
|
|
+ many other packages depend on. Unfortunately, the best solution at this time
|
|
|
+ is to overwrite the existing library by adding ``--prefix=/usr`` to the
|
|
|
+ ``configure`` command.
|
|
|
+
|
|
|
+__ http://www.sqlite.org/rtree.html
|
|
|
+__ http://www.sqlite.org/download.html
|
|
|
+
|
|
|
+.. _spatialitebuild :
|
|
|
+
|
|
|
+SpatiaLite Library (``libspatialite``) and Tools (``spatialite``)
|
|
|
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
+
|
|
|
+After SQLite has been built with the R*Tree module enabled, get the latest
|
|
|
+SpatiaLite library source and tools bundle from the `download page`__::
|
|
|
+
|
|
|
+ $ wget http://www.gaia-gis.it/spatialite/libspatialite-amalgamation-2.3.1.tar.gz
|
|
|
+ $ wget http://www.gaia-gis.it/spatialite/spatialite-tools-2.3.1.tar.gz
|
|
|
+ $ tar xzf libspatialite-amalgamation-2.3.1.tar.gz
|
|
|
+ $ tar xzf spatialite-tools-2.3.1.tar.gz
|
|
|
+
|
|
|
+Prior to attempting to build, please read the important notes below to see if
|
|
|
+customization of the ``configure`` command is necessary. If not, then run the
|
|
|
+``configure`` script, make, and install for the SpatiaLite library::
|
|
|
+
|
|
|
+ $ cd libspatialite-amalgamation-2.3.1
|
|
|
+ $ ./configure # May need to modified, see notes below.
|
|
|
+ $ make
|
|
|
+ $ sudo make install
|
|
|
+ $ cd ..
|
|
|
+
|
|
|
+Finally, do the same for the SpatiaLite tools::
|
|
|
+
|
|
|
+ $ cd spatialite-tools-2.3.1
|
|
|
+ $ ./configure # May need to modified, see notes below.
|
|
|
+ $ make
|
|
|
+ $ sudo make install
|
|
|
+ $ cd ..
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ If you've installed GEOS and PROJ.4 from binary packages, you will have to specify
|
|
|
+ their paths when running the ``configure`` scripts for *both* the library and the
|
|
|
+ tools (the configure scripts look, by default, in ``/usr/local``). For example,
|
|
|
+ on Debian/Ubuntu distributions that have GEOS and PROJ.4 packages, the command would be::
|
|
|
+
|
|
|
+ $ ./configure --with-proj-include=/usr/include --with-proj-lib=/usr/lib --with-geos-include=/usr/include --with-geos-lib=/usr/lib
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ For Mac OS X users building from source, the SpatiaLite library *and* tools
|
|
|
+ need to be linked into the existing ``iconv`` library. While this happens
|
|
|
+ automatically on Linux, the ``configure`` scripts need to know about the
|
|
|
+ specific location on Mac OS X (via modification of the ``CFLAGS`` and
|
|
|
+ ``LDFLAGS`` environment variables prior to configuration)::
|
|
|
+
|
|
|
+ $ CFLAGS=-I/usr/include LDFLAGS="-L/usr/lib -liconv" ./configure
|
|
|
+
|
|
|
+__ http://www.gaia-gis.it/spatialite/sources.html
|
|
|
+
|
|
|
+.. _pysqlite2:
|
|
|
+
|
|
|
+pysqlite2
|
|
|
+^^^^^^^^^
|
|
|
+
|
|
|
+Because SpatiaLite must be loaded as an external extension, it requires the
|
|
|
+``enable_load_extension`` method, which is only available in versions 2.5+.
|
|
|
+Thus, download pysqlite2 2.5, and untar::
|
|
|
+
|
|
|
+ $ wget http://pysqlite.googlecode.com/files/pysqlite-2.5.6.tar.gz
|
|
|
+ $ tar xzf pysqlite-2.5.6.tar.gz
|
|
|
+ $ cd pysqlite-2.5.6
|
|
|
+
|
|
|
+Next, use a text editor (e.g., ``emacs`` or ``vi``) to edit the ``setup.cfg`` file
|
|
|
+to look like the following::
|
|
|
+
|
|
|
+ [build_ext]
|
|
|
+ #define=
|
|
|
+ include_dirs=/usr/local/include
|
|
|
+ library_dirs=/usr/local/lib
|
|
|
+ libraries=sqlite3
|
|
|
+ #define=SQLITE_OMIT_LOAD_EXTENSION
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ The important thing here is to make sure you comment out the the
|
|
|
+ ``define=SQLITE_OMIT_LOAD_EXTENSION`` flag and that the ``include_dirs``
|
|
|
+ and ``library_dirs`` settings are uncommented and set to the appropriate
|
|
|
+ path if the SQLite header files and libraries are not in ``/usr/include``
|
|
|
+ and ``/usr/lib``, respectively.
|
|
|
+
|
|
|
+After modifying ``setup.cfg`` appropriately, then run the ``setup.py`` script
|
|
|
+to build and install::
|
|
|
+
|
|
|
+ $ sudo python setup.py install
|
|
|
+
|
|
|
+Post-Installation
|
|
|
+=================
|
|
|
+
|
|
|
+.. _spatialdb_template:
|
|
|
+
|
|
|
+Creating a Spatial Database Template for PostGIS
|
|
|
+------------------------------------------------
|
|
|
+
|
|
|
+Creating a spatial database with PostGIS is different than normal because
|
|
|
+additional SQL must be loaded to enable spatial functionality. Because of
|
|
|
+the steps in this process, it's better to create a database template that
|
|
|
+can be reused later.
|
|
|
+
|
|
|
+First, you need to be able to execute the commands as a privileged database
|
|
|
+user. For example, you can use the following to become the ``postgres`` user::
|
|
|
+
|
|
|
+ $ sudo su - postgres
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ The location *and* name of the PostGIS SQL files (e.g., from
|
|
|
+ ``POSTGIS_SQL_PATH`` below) depends on the version of PostGIS.
|
|
|
+ PostGIS versions 1.3 and below use ``<sharedir>/contrib/lwpostgis.sql``, whereas
|
|
|
+ versions 1.4 and 1.5 use ``<sharedir>/contrib/postgis-1.4/postgis.sql`` and
|
|
|
+ ``<sharedir>/contrib/postgis-1.5/postgis.sql``, respectively.
|
|
|
+
|
|
|
+ The example below assumes 1.5, thus you may need to modify
|
|
|
+ ``POSTGIS_SQL_PATH`` and the name of the SQL file for the specific
|
|
|
+ version of PostGIS you are using.
|
|
|
+
|
|
|
+Once you're a database super user, then you may execute the following commands
|
|
|
+to create a PostGIS spatial database template. If running Ubuntu :ref:`ibex`
|
|
|
+or Debian :ref:`lenny`, please refer to their specific documentation for
|
|
|
+modifications to these commands::
|
|
|
+
|
|
|
+ $ POSTGIS_SQL_PATH=`pg_config --sharedir`/contrib/postgis-1.5
|
|
|
+ # Creating the template spatial database.
|
|
|
+ $ createdb -E UTF8 template_postgis
|
|
|
+ $ createlang -d template_postgis plpgsql # Adding PLPGSQL language support.
|
|
|
+ # Allows non-superusers the ability to create from this template
|
|
|
+ $ psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='template_postgis';"
|
|
|
+ # Loading the PostGIS SQL routines
|
|
|
+ $ psql -d template_postgis -f $POSTGIS_SQL_PATH/postgis.sql
|
|
|
+ $ psql -d template_postgis -f $POSTGIS_SQL_PATH/spatial_ref_sys.sql
|
|
|
+ # Enabling users to alter spatial tables.
|
|
|
+ $ psql -d template_postgis -c "GRANT ALL ON geometry_columns TO PUBLIC;"
|
|
|
+ $ psql -d template_postgis -c "GRANT ALL ON spatial_ref_sys TO PUBLIC;"
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+These commands may be placed in a shell script for later use; for convenience
|
|
|
+the following scripts are available:
|
|
|
+
|
|
|
+=============== ==========================================
|
|
|
+PostGIS Version Shell Script
|
|
|
+=============== ==========================================
|
|
|
+1.3 :download:`create_template_postgis-1.3.sh`
|
|
|
+1.4 :download:`create_template_postgis-1.4.sh`
|
|
|
+1.5 :download:`create_template_postgis-1.5.sh`
|
|
|
+=============== ==========================================
|
|
|
+
|
|
|
+Afterwards, you may create a spatial database by simply specifying
|
|
|
+``template_postgis`` as the template to use (via the ``-T`` option)::
|
|
|
+
|
|
|
+ $ createdb -T template_postgis <db name>
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ While the ``createdb`` command does not require database super-user privileges,
|
|
|
+ it must be executed by a database user that has permissions to create databases.
|
|
|
+ You can create such a user with the following command::
|
|
|
+
|
|
|
+ $ createuser --createdb <user>
|
|
|
+
|
|
|
+.. _create_spatialite_db:
|
|
|
+
|
|
|
+Creating a Spatial Database for SpatiaLite
|
|
|
+-------------------------------------------
|
|
|
+
|
|
|
+After the SpatiaLite library and tools have been installed, it is now possible
|
|
|
+to create spatial database for use with GeoDjango. In order to do this, download
|
|
|
+the spatial database initialization SQL from the `SpatiaLite Resources`__ page::
|
|
|
+
|
|
|
+ $ wget http://www.gaia-gis.it/spatialite/init_spatialite-2.3.sql.gz
|
|
|
+ $ gunzip init_spatialite-2.3.sql.gz
|
|
|
+
|
|
|
+Now, the ``spatialite`` command can be used to initialize a spatial database::
|
|
|
+
|
|
|
+ $ spatialite geodjango.db < init_spatialite-2.3.sql
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ The parameter ``geodjango.db`` is the *filename* of the SQLite database
|
|
|
+ you want to use. Use the same in the :setting:`DATABASE_NAME`
|
|
|
+ inside your ``settings.py``.
|
|
|
+
|
|
|
+
|
|
|
+__ http://www.gaia-gis.it/spatialite/resources.html
|
|
|
+
|
|
|
+
|
|
|
+Add ``django.contrib.gis`` to ``INSTALLED_APPS``
|
|
|
+------------------------------------------------
|
|
|
+
|
|
|
+Like other Django contrib applications, you will *only* need to add
|
|
|
+:mod:`django.contrib.gis` to :setting:`INSTALLED_APPS` in your settings.
|
|
|
+This is the so that ``gis`` templates can be located -- if not done, then
|
|
|
+features such as the geographic admin or KML sitemaps will not function properly.
|
|
|
+
|
|
|
+.. _addgoogleprojection:
|
|
|
+
|
|
|
+Add Google Projection to ``spatial_ref_sys`` table
|
|
|
+--------------------------------------------------
|
|
|
+
|
|
|
+.. versionchanged:: 1.2
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ If running PostGIS 1.4 and above, the entry is already included in the
|
|
|
+ default ``spatial_ref_sys`` table. You can skip this step.
|
|
|
+
|
|
|
+In order to conduct database transformations to the so-called "Google"
|
|
|
+projection (a spherical mercator projection used by Google Maps),
|
|
|
+an entry must be added to your spatial database's ``spatial_ref_sys`` table.
|
|
|
+Invoke the Django shell from your project and execute the
|
|
|
+``add_srs_entry`` function::
|
|
|
+
|
|
|
+ $ python manage shell
|
|
|
+ >>> from django.contrib.gis.utils import add_srs_entry
|
|
|
+ >>> add_srs_entry(900913)
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ In Django 1.1 the name of this function is ``add_postgis_srs``.
|
|
|
+
|
|
|
+This adds an entry for the 900913 SRID to the ``spatial_ref_sys`` (or equivalent)
|
|
|
+table, making it possible for the spatial database to transform coordinates in
|
|
|
+this projection. You only need to execute this command *once* per spatial database.
|
|
|
+
|
|
|
+Troubleshooting
|
|
|
+===============
|
|
|
+
|
|
|
+If you can't find the solution to your problem here then participate in the
|
|
|
+community! You can:
|
|
|
+
|
|
|
+* Join the ``#geodjango`` IRC channel on FreeNode (may be accessed on the
|
|
|
+ web via `Mibbit`__). Please be patient and polite -- while you may not
|
|
|
+ get an immediate response, someone will attempt to answer your question
|
|
|
+ as soon as they see it.
|
|
|
+* Ask your question on the `GeoDjango`__ mailing list.
|
|
|
+* File a ticket on the `Django trac`__ if you think there's a bug. Make
|
|
|
+ sure to provide a complete description of the problem, versions used,
|
|
|
+ and specify the component as "GIS".
|
|
|
+
|
|
|
+__ http://www.mibbit.com/?server=irc.freenode.net&channel=%23geodjango
|
|
|
+__ http://groups.google.com/group/geodjango
|
|
|
+__ http://code.djangoproject.com/simpleticket
|
|
|
+
|
|
|
+.. _libsettings:
|
|
|
+
|
|
|
+Library Environment Settings
|
|
|
+----------------------------
|
|
|
+
|
|
|
+By far, the most common problem when installing GeoDjango is that the
|
|
|
+external shared libraries (e.g., for GEOS and GDAL) cannot be located. [#]_
|
|
|
+Typically, the cause of this problem is that the operating system isn't aware
|
|
|
+of the directory where the libraries built from source were installed.
|
|
|
+
|
|
|
+In general, the library path may be set on a per-user basis by setting
|
|
|
+an environment variable, or by configuring the library path for the entire
|
|
|
+system.
|
|
|
+
|
|
|
+``LD_LIBRARY_PATH`` environment variable
|
|
|
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
+
|
|
|
+A user may set this environment variable to customize the library paths
|
|
|
+they want to use. The typical library directory for software
|
|
|
+built from source is ``/usr/local/lib``. Thus, ``/usr/local/lib`` needs
|
|
|
+to be included in the ``LD_LIBRARY_PATH`` variable. For example, the user
|
|
|
+could place the following in their bash profile::
|
|
|
+
|
|
|
+ export LD_LIBRARY_PATH=/usr/local/lib
|
|
|
+
|
|
|
+Setting System Library Path
|
|
|
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
+
|
|
|
+On GNU/Linux systems, there is typically a file in ``/etc/ld.so.conf``, which may include
|
|
|
+additional paths from files in another directory, such as ``/etc/ld.so.conf.d``.
|
|
|
+As the root user, add the custom library path (like ``/usr/local/lib``) on a
|
|
|
+new line in ``ld.so.conf``. This is *one* example of how to do so::
|
|
|
+
|
|
|
+ $ sudo echo /usr/local/lib >> /etc/ld.so.conf
|
|
|
+ $ sudo ldconfig
|
|
|
+
|
|
|
+For OpenSolaris users, the system library path may be modified using the
|
|
|
+``crle`` utility. Run ``crle`` with no options to see the current configuration
|
|
|
+and use ``crle -l`` to set with the new library path. Be *very* careful when
|
|
|
+modifying the system library path::
|
|
|
+
|
|
|
+ # crle -l $OLD_PATH:/usr/local/lib
|
|
|
+
|
|
|
+.. _binutils:
|
|
|
+
|
|
|
+Install ``binutils``
|
|
|
+^^^^^^^^^^^^^^^^^^^^
|
|
|
+
|
|
|
+GeoDjango uses the ``find_library`` function (from the ``ctypes.util`` Python
|
|
|
+module) to discover libraries. The ``find_library`` routine uses a program
|
|
|
+called ``objdump`` (part of the ``binutils`` package) to verify a shared
|
|
|
+library on GNU/Linux systems. Thus, if ``binutils`` is not installed on your
|
|
|
+Linux system then Python's ctypes may not be able to find your library even if
|
|
|
+your library path is set correctly and geospatial libraries were built perfectly.
|
|
|
+
|
|
|
+The ``binutils`` package may be installed on Debian and Ubuntu systems using the
|
|
|
+following command::
|
|
|
+
|
|
|
+ $ sudo apt-get install binutils
|
|
|
+
|
|
|
+Similarly, on Red Hat and CentOS systems::
|
|
|
+
|
|
|
+ $ sudo yum install binutils
|
|
|
+
|
|
|
+Platform Specific Instructions
|
|
|
+==============================
|
|
|
+
|
|
|
+.. _macosx:
|
|
|
+
|
|
|
+Mac OS X
|
|
|
+--------
|
|
|
+
|
|
|
+Because of the variety of packaging systems available for OS X, users have
|
|
|
+several different options for installing GeoDjango. These options are:
|
|
|
+
|
|
|
+* :ref:`kyngchaos`
|
|
|
+* :ref:`fink`
|
|
|
+* :ref:`macports`
|
|
|
+* :ref:`build_from_source`
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ Currently, the easiest and recommended approach for installing GeoDjango
|
|
|
+ on OS X is to use the KyngChaos packages.
|
|
|
+
|
|
|
+This section also includes instructions for installing an upgraded version
|
|
|
+of :ref:`macosx_python` from packages provided by the Python Software
|
|
|
+Foundation, however, this is not required.
|
|
|
+
|
|
|
+.. _macosx_python:
|
|
|
+
|
|
|
+Python
|
|
|
+^^^^^^
|
|
|
+
|
|
|
+Although OS X comes with Python installed, users can use framework
|
|
|
+installers (`2.5`__ and `2.6`__ are available) provided by
|
|
|
+the Python Software Foundation. An advantage to using the installer is
|
|
|
+that OS X's Python will remain "pristine" for internal operating system
|
|
|
+use.
|
|
|
+
|
|
|
+__ http://python.org/ftp/python/2.5.4/python-2.5.4-macosx.dmg
|
|
|
+__ http://python.org/ftp/python/2.6.2/python-2.6.2-macosx2009-04-16.dmg
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ You will need to modify the ``PATH`` environment variable in your
|
|
|
+ ``.profile`` file so that the new version of Python is used when
|
|
|
+ ``python`` is entered at the command-line::
|
|
|
+
|
|
|
+ export PATH=/Library/Frameworks/Python.framework/Versions/Current/bin:$PATH
|
|
|
+
|
|
|
+.. _kyngchaos:
|
|
|
+
|
|
|
+KyngChaos Packages
|
|
|
+^^^^^^^^^^^^^^^^^^
|
|
|
+
|
|
|
+William Kyngesburye provides a number of `geospatial library binary packages`__
|
|
|
+that make it simple to get GeoDjango installed on OS X without compiling
|
|
|
+them from source. However, the `Apple Developer Tools`_ are still necessary
|
|
|
+for compiling the Python database adapters :ref:`psycopg2_kyngchaos` (for PostGIS)
|
|
|
+and :ref:`pysqlite2_kyngchaos` (for SpatiaLite).
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ SpatiaLite users should consult the :ref:`spatialite_kyngchaos` section
|
|
|
+ after installing the packages for additional instructions.
|
|
|
+
|
|
|
+Download the framework packages for:
|
|
|
+
|
|
|
+* UnixImageIO
|
|
|
+* PROJ
|
|
|
+* GEOS
|
|
|
+* SQLite3 (includes the SpatiaLite library)
|
|
|
+* GDAL
|
|
|
+
|
|
|
+Install the packages in the order they are listed above, as the GDAL and SQLite
|
|
|
+packages require the packages listed before them. Afterwards, you can also
|
|
|
+install the KyngChaos binary packages for `PostgreSQL and PostGIS`__.
|
|
|
+
|
|
|
+After installing the binary packages, you'll want to add the following to
|
|
|
+your ``.profile`` to be able to run the package programs from the command-line::
|
|
|
+
|
|
|
+ export PATH=/Library/Frameworks/UnixImageIO.framework/Programs:$PATH
|
|
|
+ export PATH=/Library/Frameworks/PROJ.framework/Programs:$PATH
|
|
|
+ export PATH=/Library/Frameworks/GEOS.framework/Programs:$PATH
|
|
|
+ export PATH=/Library/Frameworks/SQLite3.framework/Programs:$PATH
|
|
|
+ export PATH=/Library/Frameworks/GDAL.framework/Programs:$PATH
|
|
|
+ export PATH=/usr/local/pgsql/bin:$PATH
|
|
|
+
|
|
|
+__ http://www.kyngchaos.com/wiki/software:frameworks
|
|
|
+__ http://www.kyngchaos.com/wiki/software:postgres
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ Use of these binaries requires Django 1.0.3 and above. If you are
|
|
|
+ using a previous version of Django (like 1.0.2), then you will have
|
|
|
+ to add the the following in your settings::
|
|
|
+
|
|
|
+ GEOS_LIBRARY_PATH='/Library/Frameworks/GEOS.framework/GEOS'
|
|
|
+ GDAL_LIBRARY_PATH='/Library/Frameworks/GDAL.framework/GDAL'
|
|
|
+
|
|
|
+.. _psycopg2_kyngchaos:
|
|
|
+
|
|
|
+psycopg2
|
|
|
+~~~~~~~~
|
|
|
+
|
|
|
+After you've installed the KyngChaos binaries and modified your ``PATH``, as
|
|
|
+described above, ``psycopg2`` may be installed using the following command::
|
|
|
+
|
|
|
+ $ sudo python easy_install psycopg2
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ To use ``easy_install`` you'll need to install Python's `setuptools`_.
|
|
|
+
|
|
|
+.. _setuptools: http://pypi.python.org/pypi/setuptools
|
|
|
+
|
|
|
+.. _pysqlite2_kyngchaos:
|
|
|
+
|
|
|
+pysqlite2
|
|
|
+~~~~~~~~~
|
|
|
+
|
|
|
+Follow the :ref:`pysqlite2` source install instructions, however,
|
|
|
+when editing the ``setup.cfg`` use the following instead::
|
|
|
+
|
|
|
+ [build_ext]
|
|
|
+ #define=
|
|
|
+ include_dirs=/Library/Frameworks/SQLite3.framework/unix/include
|
|
|
+ library_dirs=/Library/Frameworks/SQLite3.framework/unix/lib
|
|
|
+ libraries=sqlite3
|
|
|
+ #define=SQLITE_OMIT_LOAD_EXTENSION
|
|
|
+
|
|
|
+.. _spatialite_kyngchaos:
|
|
|
+
|
|
|
+SpatiaLite
|
|
|
+~~~~~~~~~~
|
|
|
+
|
|
|
+When :ref:`create_spatialite_db`, the ``spatialite`` program is required.
|
|
|
+However, instead of attempting to compile the SpatiaLite tools from source,
|
|
|
+download the `SpatiaLite Binaries`__ for OS X, and install ``spatialite`` in a
|
|
|
+location available in your ``PATH``. For example::
|
|
|
+
|
|
|
+ $ curl -O http://www.gaia-gis.it/spatialite/spatialite-tools-osx-x86-2.3.1.tar.gz
|
|
|
+ $ tar xzf spatialite-tools-osx-x86-2.3.1.tar.gz
|
|
|
+ $ cd spatialite-tools-osx-x86-2.3.1/bin
|
|
|
+ $ sudo cp spatialite /Library/Frameworks/SQLite3.framework/Programs
|
|
|
+
|
|
|
+Finally, for GeoDjango to be able to find the KyngChaos SpatiaLite library,
|
|
|
+add the following to your ``settings.py``::
|
|
|
+
|
|
|
+ SPATIALITE_LIBRARY_PATH='/Library/Frameworks/SQLite3.framework/SQLite3'
|
|
|
+
|
|
|
+__ http://www.gaia-gis.it/spatialite/binaries.html
|
|
|
+
|
|
|
+.. _fink:
|
|
|
+
|
|
|
+Fink
|
|
|
+^^^^
|
|
|
+
|
|
|
+`Kurt Schwehr`__ has been gracious enough to create GeoDjango packages for users
|
|
|
+of the `Fink`__ package system. The following packages are available, depending
|
|
|
+on which version of Python you want to use:
|
|
|
+
|
|
|
+* ``django-gis-py26``
|
|
|
+* ``django-gis-py25``
|
|
|
+* ``django-gis-py24``
|
|
|
+
|
|
|
+__ http://schwehr.org/blog/
|
|
|
+__ http://www.finkproject.org/
|
|
|
+
|
|
|
+.. _macports:
|
|
|
+
|
|
|
+MacPorts
|
|
|
+^^^^^^^^
|
|
|
+
|
|
|
+`MacPorts`__ may be used to install GeoDjango prerequisites on Macintosh
|
|
|
+computers running OS X. Because MacPorts still builds the software from source,
|
|
|
+the `Apple Developer Tools`_ are required.
|
|
|
+
|
|
|
+Summary::
|
|
|
+
|
|
|
+ $ sudo port install postgresql83-server
|
|
|
+ $ sudo port install geos
|
|
|
+ $ sudo port install proj
|
|
|
+ $ sudo port install postgis
|
|
|
+ $ sudo port install gdal
|
|
|
+ $ sudo port install libgeoip
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ You will also have to modify the ``PATH`` in your ``.profile`` so
|
|
|
+ that the MacPorts programs are accessible from the command-line::
|
|
|
+
|
|
|
+ export PATH=/opt/local/bin:/opt/local/lib/postgresql83/bin
|
|
|
+
|
|
|
+ In addition, add the ``FALLBACK_DYLD_LIBRARY_PATH`` setting so that
|
|
|
+ the libraries can be found by Python::
|
|
|
+
|
|
|
+ export FALLBACK_DYLD_LIBRARY_PATH=/opt/local/lib:/opt/local/lib/postgresql83
|
|
|
+
|
|
|
+__ http://www.macports.org/
|
|
|
+
|
|
|
+.. _ubuntudebian:
|
|
|
+
|
|
|
+Ubuntu & Debian GNU/Linux
|
|
|
+-------------------------
|
|
|
+
|
|
|
+.. _ubuntu:
|
|
|
+
|
|
|
+Ubuntu
|
|
|
+^^^^^^
|
|
|
+
|
|
|
+.. _heron:
|
|
|
+
|
|
|
+8.04 and lower
|
|
|
+~~~~~~~~~~~~~~
|
|
|
+
|
|
|
+The 8.04 (and lower) versions of Ubuntu use GEOS v2.2.3 in their binary packages,
|
|
|
+which is incompatible with GeoDjango. Thus, do *not* use the binary packages
|
|
|
+for GEOS or PostGIS and build some prerequisites from source, per the instructions
|
|
|
+in this document; however, it is okay to use the PostgreSQL binary packages.
|
|
|
+
|
|
|
+For more details, please see the Debian instructions for :ref:`etch` below.
|
|
|
+
|
|
|
+.. _ibex:
|
|
|
+
|
|
|
+8.10
|
|
|
+~~~~
|
|
|
+
|
|
|
+Use the synaptic package manager to install the following packages::
|
|
|
+
|
|
|
+ $ sudo apt-get install binutils libgdal1-1.5.0 postgresql-8.3-postgis postgresql-server-dev-8.3 python-psycopg2 python-setuptools
|
|
|
+
|
|
|
+Afterwards, you may install Django with Python's ``easy_install`` script (the
|
|
|
+Ubuntu package ``python-django`` uses an older version missing several
|
|
|
+important bug fixes for GeoDjango)::
|
|
|
+
|
|
|
+ $ sudo easy_install Django
|
|
|
+
|
|
|
+That's it! For the curious, the required binary prerequisites packages are:
|
|
|
+
|
|
|
+* ``binutils``: for ctypes to find libraries
|
|
|
+* ``postgresql-8.3``
|
|
|
+* ``postgresql-server-dev-8.3``: for ``pg_config``
|
|
|
+* ``postgresql-8.3-postgis``: for PostGIS 1.3.3
|
|
|
+* ``libgeos-3.0.0``, and ``libgeos-c1``: for GEOS 3.0.0
|
|
|
+* ``libgdal1-1.5.0``: for GDAL 1.5.0 library
|
|
|
+* ``proj``: for PROJ 4.6.0 -- but no datum shifting files, see note below
|
|
|
+* ``python-psycopg2``
|
|
|
+* ``python-setuptools``: for ``easy_install``
|
|
|
+
|
|
|
+Optional packages to consider:
|
|
|
+
|
|
|
+* ``libgeoip1``: for :ref:`GeoIP <ref-geoip>` support
|
|
|
+* ``gdal-bin``: for GDAL command line programs like ``ogr2ogr``
|
|
|
+* ``python-gdal`` for GDAL's own Python bindings -- includes interfaces for raster manipulation
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ The Ubuntu ``proj`` package does not come with the datum shifting files
|
|
|
+ installed, which will cause problems with the geographic admin because
|
|
|
+ the ``null`` datum grid is not available for transforming geometries to the
|
|
|
+ spherical mercator projection. A solution is to download the
|
|
|
+ datum-shifting files, create the grid file, and install it yourself::
|
|
|
+
|
|
|
+ $ wget http://download.osgeo.org/proj/proj-datumgrid-1.4.tar.gz
|
|
|
+ $ mkdir nad
|
|
|
+ $ cd nad
|
|
|
+ $ tar xzf ../proj-datumgrid-1.4.tar.gz
|
|
|
+ $ nad2bin null < null.lla
|
|
|
+ $ sudo cp null /usr/share/proj
|
|
|
+
|
|
|
+ Otherwise, the Ubuntu ``proj`` package is fine for general use as long as you
|
|
|
+ do not plan on doing any database transformation of geometries to the
|
|
|
+ Google projection (900913).
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ The PostGIS SQL files are not placed the PostgreSQL share directory in the
|
|
|
+ Ubuntu packages. Use the :download:`create_template_postgis-debian.sh` script
|
|
|
+ instead when :ref:`spatialdb_template`.
|
|
|
+
|
|
|
+.. _debian:
|
|
|
+
|
|
|
+Debian
|
|
|
+------
|
|
|
+
|
|
|
+.. _etch:
|
|
|
+
|
|
|
+4.0 (Etch)
|
|
|
+^^^^^^^^^^
|
|
|
+The situation here is the same as that of Ubuntu :ref:`heron` -- in other words,
|
|
|
+some packages must be built from source to work properly with GeoDjango.
|
|
|
+
|
|
|
+Binary Packages
|
|
|
+~~~~~~~~~~~~~~~
|
|
|
+The following command will install acceptable binary packages, as well as
|
|
|
+the development tools necessary to build the rest of the requirements::
|
|
|
+
|
|
|
+ $ sudo apt-get install binutils bzip2 gcc g++ flex make postgresql-8.1 postgresql-server-dev-8.1 python-ctypes python-psycopg2 python-setuptools
|
|
|
+
|
|
|
+Required package information:
|
|
|
+
|
|
|
+* ``binutils``: for ctypes to find libraries
|
|
|
+* ``bzip2``: for decompressing the source packages
|
|
|
+* ``gcc``, ``g++``, ``make``: GNU developer tools used to compile the libraries
|
|
|
+* ``flex``: required to build PostGIS
|
|
|
+* ``postgresql-8.1``
|
|
|
+* ``postgresql-server-dev-8.1``: for ``pg_config``
|
|
|
+* ``python-ctypes``: Python 2.4 needs to have ctypes installed separately
|
|
|
+* ``python-psycopg2``
|
|
|
+* ``python-setuptools``: for ``easy_install``
|
|
|
+
|
|
|
+Optional packages:
|
|
|
+
|
|
|
+* ``libgeoip``: for :ref:`GeoIP <ref-geoip>` support
|
|
|
+
|
|
|
+Source Packages
|
|
|
+~~~~~~~~~~~~~~~
|
|
|
+You will still have to install :ref:`geosbuild`, :ref:`proj4`,
|
|
|
+:ref:`postgis`, and :ref:`gdalbuild` from source. Please follow the
|
|
|
+directions carefully.
|
|
|
+
|
|
|
+.. _lenny:
|
|
|
+
|
|
|
+5.0 (Lenny)
|
|
|
+^^^^^^^^^^^
|
|
|
+This version is comparable to Ubuntu :ref:`ibex`, so the command
|
|
|
+is very similar::
|
|
|
+
|
|
|
+ $ sudo apt-get install binutils libgdal1-1.5.0 postgresql-8.3 postgresql-8.3-postgis postgresql-server-dev-8.3 python-psycopg2 python-setuptools
|
|
|
+
|
|
|
+This assumes that you are using PostgreSQL version 8.3. Else, replace ``8.3``
|
|
|
+in the above command with the appropriate PostgreSQL version.
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ Please read the note in the Ubuntu :ref:`ibex` install documentation
|
|
|
+ about the ``proj`` package -- it also applies here because the package does
|
|
|
+ not include the datum shifting files.
|
|
|
+
|
|
|
+.. _post_install:
|
|
|
+
|
|
|
+Post-installation Notes
|
|
|
+~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
+
|
|
|
+If the PostgreSQL database cluster was not initiated after installing, then it
|
|
|
+can be created (and started) with the following command::
|
|
|
+
|
|
|
+ $ sudo pg_createcluster --start 8.3 main
|
|
|
+
|
|
|
+Afterwards, the ``/etc/init.d/postgresql-8.3`` script should be used to manage
|
|
|
+the starting and stopping of PostgreSQL.
|
|
|
+
|
|
|
+In addition, the SQL files for PostGIS are placed in a different location on
|
|
|
+Debian 5.0 . Thus when :ref:`spatialdb_template` either:
|
|
|
+
|
|
|
+* Create a symbolic link to these files::
|
|
|
+
|
|
|
+ $ sudo ln -s /usr/share/postgresql-8.3-postgis/{lwpostgis,spatial_ref_sys}.sql /usr/share/postgresql/8.3
|
|
|
+
|
|
|
+ If not running PostgreSQL 8.3, then replace ``8.3`` in the command above with the correct version.
|
|
|
+
|
|
|
+* Or use the :download:`create_template_postgis-debian.sh` to create the spatial database.
|
|
|
+
|
|
|
+.. _windows:
|
|
|
+
|
|
|
+Windows XP
|
|
|
+----------
|
|
|
+
|
|
|
+Python
|
|
|
+^^^^^^
|
|
|
+
|
|
|
+First, download the `Python 2.6 installer`__ from the Python website. Next,
|
|
|
+execute the installer and use defaults, e.g., keep 'Install for all users'
|
|
|
+checked and the installation path set as ``C:\Python26``.
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ You may already have a version of Python installed in ``C:\python`` as ESRI
|
|
|
+ products sometimes install a copy there. *You should still install a
|
|
|
+ fresh version of Python 2.6.*
|
|
|
+
|
|
|
+__ http://python.org/ftp/python/2.6.2/python-2.6.2.msi
|
|
|
+
|
|
|
+PostgreSQL
|
|
|
+^^^^^^^^^^
|
|
|
+
|
|
|
+First, select a mirror and download the latest `PostgreSQL 8.3 installer`__ from
|
|
|
+the EnterpriseDB website.
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ PostgreSQL 8.3 is required because PostGIS is not available yet for 8.4.
|
|
|
+
|
|
|
+After downloading, simply click on the installer, follow the
|
|
|
+on-screen directions, and keep the default options (e.g., keep the installation
|
|
|
+path as ``C:\Program Files\PostgreSQL\8.3``).
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ This PostgreSQL installation process will create both a new windows user to be the
|
|
|
+ 'postgres service account' and a special 'postgres superuser' to own the database
|
|
|
+ cluster. You will be prompted to set a password for both users (make sure to write
|
|
|
+ them down!). To see basic details on the 'service user' account right click on
|
|
|
+ 'My Computer' and select 'Manage' or go to: Control Panel -> Administrative Tools ->
|
|
|
+ Computer Management -> System Tools -> Local Users and Groups.
|
|
|
+
|
|
|
+If installed successfully, the PostgreSQL server will run in the background each time
|
|
|
+the system as started as a Windows service. When finished, the installer should launch
|
|
|
+the Application Stack Builder (ASB) -- use this to install PostGIS, see instructions
|
|
|
+below for more details. A 'PostgreSQL 8.3' start menu group should be created that
|
|
|
+contains shortcuts for the ASB and 'Command Prompt', which launches a terminal window
|
|
|
+in the PostgreSQL directory.
|
|
|
+
|
|
|
+__ http://www.enterprisedb.com/products/pgdownload.do#windows
|
|
|
+
|
|
|
+PostGIS
|
|
|
+^^^^^^^
|
|
|
+
|
|
|
+From the Application Stack Builder (Programs -> PostgreSQL 8.3), select
|
|
|
+'PostgreSQL Database Server 8.3 on port 5432' from the drop down menu. Next,
|
|
|
+select 'PostGIS 1.3.6 for PostgreSQL 8.3' from the 'Spatial Extensions' tree
|
|
|
+in the list. Select only the default options during install (do not uncheck
|
|
|
+the option to create a default PostGIS database).
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ You will be prompted to enter your 'postgres superuser' password in the
|
|
|
+ 'Database Connection Information' dialog.
|
|
|
+
|
|
|
+psycopg2
|
|
|
+^^^^^^^^
|
|
|
+
|
|
|
+The ``psycopg2`` Python module provides the interface between Python and the
|
|
|
+PostgreSQL database. Download the `Windows installer`__ (v2.0.10) and run
|
|
|
+using the default settings. [#]_
|
|
|
+
|
|
|
+__ http://www.stickpeople.com/projects/python/win-psycopg/psycopg2-2.0.10.win32-py2.6-pg8.3.7-release.exe
|
|
|
+
|
|
|
+GeoDjango Installer
|
|
|
+^^^^^^^^^^^^^^^^^^^
|
|
|
+
|
|
|
+Download the `GeoDjango Installer`__; this was created [#]_ to simplify the rest
|
|
|
+of the process for installing GeoDjango on Windows platforms. The installer
|
|
|
+automatically installs Django 1.1, GDAL 1.6.0, PROJ 4.6.1 (including datum grid
|
|
|
+files), and configures the necessary environment variables.
|
|
|
+
|
|
|
+Once the installer has completed, log out and log back in so that the
|
|
|
+modifications to the system environment variables take effect, and you
|
|
|
+should be good to go.
|
|
|
+
|
|
|
+.. note::
|
|
|
+
|
|
|
+ The installer modifies the system ``Path`` environment variable to
|
|
|
+ include ``C:\Program Files\PostgreSQL\8.3\bin`` and
|
|
|
+ ``C:\Program Files\GeoDjango\bin``. This is required so that Python
|
|
|
+ may find the GEOS DLL provided by PostGIS and the GDAL DLL provided
|
|
|
+ by the installer. The installer also sets the ``GDAL_DATA`` and
|
|
|
+ ``PROJ_LIB`` environment variables.
|
|
|
+
|
|
|
+__ http://geodjango.org/windows/GeoDjango_Installer.exe
|
|
|
+
|
|
|
+.. rubric:: Footnotes
|
|
|
+.. [#] The datum shifting files are needed for converting data to and from certain projections.
|
|
|
+ For example, the PROJ.4 string for the `Google projection (900913) <http://spatialreference.org/ref/epsg/900913/proj4>`_
|
|
|
+ requires the ``null`` grid file only included in the extra datum shifting files.
|
|
|
+ It is easier to install the shifting files now, then to have debug a problem caused by their absence later.
|
|
|
+.. [#] Specifically, GeoDjango provides support for the `OGR <http://gdal.org/ogr>`_ library, a component of GDAL.
|
|
|
+.. [#] See `GDAL ticket #2382 <http://trac.osgeo.org/gdal/ticket/2382>`_.
|
|
|
+.. [#] GeoDjango uses the `find_library <http://docs.python.org/library/ctypes.html#finding-shared-libraries>`_
|
|
|
+ routine from ``ctypes.util`` to locate shared libraries.
|
|
|
+.. [#] The ``psycopg2`` Windows installers are packaged and maintained by
|
|
|
+ `Jason Erickson <http://www.stickpeople.com/projects/python/win-psycopg/>`_.
|
|
|
+.. [#] The source code for the installer is available in the `nsis_installer <http://geodjango.org/hg/nsis_installer/>`_
|
|
|
+ GeoDjango mercurial repository.
|