Commit 8a986cb5 authored by Ramiro Morales's avatar Ramiro Morales
Browse files

Fixed small errors in GeoDjango tutorial, enhanced code pygmentation in install document.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17497 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent c406b554
Loading
Loading
Loading
Loading
+38 −12
Original line number Diff line number Diff line
@@ -4,6 +4,8 @@
GeoDjango Installation
======================

.. highlight:: console

Overview
========
In general, GeoDjango installation requires:
@@ -157,7 +159,9 @@ Troubleshooting
Can't find GEOS Library
~~~~~~~~~~~~~~~~~~~~~~~

When GeoDjango can't find GEOS, this error is raised::
When GeoDjango can't find GEOS, this error is raised:

.. code-block:: text

    ImportError: Could not find the GEOS library (tried "geos_c"). Try setting GEOS_LIBRARY_PATH in your settings.

@@ -174,7 +178,9 @@ If using a binary package of GEOS (e.g., on Ubuntu), you may need to :ref:`binut
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 C library.  For example:

.. code-block:: python

    GEOS_LIBRARY_PATH = '/home/bob/local/lib/libgeos_c.so'

@@ -295,7 +301,9 @@ Can't find GDAL Library
~~~~~~~~~~~~~~~~~~~~~~~

When GeoDjango can't find the GDAL library, the ``HAS_GDAL`` flag
will be false::
will be false:

.. code-block:: pycon

    >>> from django.contrib.gis import gdal
    >>> gdal.HAS_GDAL
@@ -312,7 +320,9 @@ The solution is to properly configure your :ref:`libsettings` *or* set
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::
the GDAL library.  For example:

.. code-block:: python

    GDAL_LIBRARY_PATH = '/home/sue/local/lib/libgdal.so'

@@ -323,7 +333,9 @@ 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::
like this:

.. code-block:: text

    ERROR 4: Unable to open EPSG support file gcs.csv.
    ...
@@ -337,7 +349,9 @@ GDAL data files before invoking Python (typically ``/usr/local/share``; use
    $ python manage.py shell

If using Apache, you may need to add this environment variable to your configuration
file::
file:

.. code-block:: apache

    SetEnv GDAL_DATA /usr/local/share

@@ -457,7 +471,9 @@ Thus, download pysqlite2 2.6, and untar::
    $ cd pysqlite-2.6.0

Next, use a text editor (e.g., ``emacs`` or ``vi``) to edit the ``setup.cfg`` file
to look like the following::
to look like the following:

.. code-block:: ini

    [build_ext]
    #define=
@@ -627,7 +643,9 @@ 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::
``add_srs_entry`` function:

.. code-block:: pycon

    $ python manage shell
    >>> from django.contrib.gis.utils import add_srs_entry
@@ -814,7 +832,9 @@ __ http://www.kyngchaos.com/software/postgres

    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 following in your settings::
    to add the following in your settings:

    .. code-block:: python

        GEOS_LIBRARY_PATH='/Library/Frameworks/GEOS.framework/GEOS'
        GDAL_LIBRARY_PATH='/Library/Frameworks/GDAL.framework/GDAL'
@@ -841,7 +861,9 @@ pysqlite2
~~~~~~~~~

Follow the :ref:`pysqlite2` source install instructions, however,
when editing the ``setup.cfg`` use the following instead::
when editing the ``setup.cfg`` use the following instead:

.. code-block:: ini

    [build_ext]
    #define=
@@ -866,7 +888,9 @@ location available in your ``PATH``. For example::
    $ 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``::
add the following to your ``settings.py``:

.. code-block:: python

    SPATIALITE_LIBRARY_PATH='/Library/Frameworks/SQLite3.framework/SQLite3'

@@ -1216,7 +1240,9 @@ Modify Windows Environment
In order to use GeoDjango, you will need to add your Python and OSGeo4W
directories to your Windows system ``Path``, as well as create ``GDAL_DATA``
and ``PROJ_LIB`` environment variables.  The following set of commands,
executable with ``cmd.exe``, will set this up::
executable with ``cmd.exe``, will set this up:

.. code-block:: bat

     set OSGEO4W_ROOT=C:\OSGeo4W
     set PYTHON_ROOT=C:\Python27
+13 −12
Original line number Diff line number Diff line
@@ -284,7 +284,7 @@ This management command should produce the following output:
.. code-block:: sql

    BEGIN;
    CREATE TABLE "world_worldborders" (
    CREATE TABLE "world_worldborder" (
        "id" serial NOT NULL PRIMARY KEY,
        "name" varchar(50) NOT NULL,
        "area" integer NOT NULL,
@@ -299,16 +299,16 @@ This management command should produce the following output:
        "lat" double precision NOT NULL
    )
    ;
    SELECT AddGeometryColumn('world_worldborders', 'mpoly', 4326, 'MULTIPOLYGON', 2);
    ALTER TABLE "world_worldborders" ALTER "mpoly" SET NOT NULL;
    CREATE INDEX "world_worldborders_mpoly_id" ON "world_worldborders" USING GIST ( "mpoly" GIST_GEOMETRY_OPS );
    SELECT AddGeometryColumn('world_worldborder', 'mpoly', 4326, 'MULTIPOLYGON', 2);
    ALTER TABLE "world_worldborder" ALTER "mpoly" SET NOT NULL;
    CREATE INDEX "world_worldborder_mpoly_id" ON "world_worldborder" USING GIST ( "mpoly" GIST_GEOMETRY_OPS );
    COMMIT;

If satisfied, you may then create this table in the database by running the
``syncdb`` management command::

    $ python manage.py syncdb
    Creating table world_worldborders
    Creating table world_worldborder
    Installing custom SQL for world.WorldBorder model

The ``syncdb`` command may also prompt you to create an admin user; go ahead
@@ -547,7 +547,8 @@ and mapping dictionary created above, automatically:

.. code-block:: bash

    $ python manage.py ogrinspect world/data/TM_WORLD_BORDERS-0.3.shp WorldBorder --srid=4326 --mapping --multi
    $ python manage.py ogrinspect world/data/TM_WORLD_BORDERS-0.3.shp WorldBorder \
        --srid=4326 --mapping --multi

A few notes about the command-line options given above:

@@ -661,12 +662,12 @@ of abstraction::

    >>> qs = WorldBorder.objects.filter(mpoly__intersects=pnt)
    >>> print qs.query # Generating the SQL
    SELECT "world_worldborders"."id", "world_worldborders"."name", "world_worldborders"."area",
    "world_worldborders"."pop2005", "world_worldborders"."fips", "world_worldborders"."iso2",
    "world_worldborders"."iso3", "world_worldborders"."un", "world_worldborders"."region",
    "world_worldborders"."subregion", "world_worldborders"."lon", "world_worldborders"."lat",
    "world_worldborders"."mpoly" FROM "world_worldborders"
    WHERE ST_Intersects("world_worldborders"."mpoly", ST_Transform(%s, 4326))
    SELECT "world_worldborder"."id", "world_worldborder"."name", "world_worldborder"."area",
    "world_worldborder"."pop2005", "world_worldborder"."fips", "world_worldborder"."iso2",
    "world_worldborder"."iso3", "world_worldborder"."un", "world_worldborder"."region",
    "world_worldborder"."subregion", "world_worldborder"."lon", "world_worldborder"."lat",
    "world_worldborder"."mpoly" FROM "world_worldborder"
    WHERE ST_Intersects("world_worldborder"."mpoly", ST_Transform(%s, 4326))
    >>> qs # printing evaluates the queryset
    [<WorldBorder: United States>]