mirror of
https://github.com/django/django.git
synced 2025-08-03 10:34:04 +00:00
Fixed #13315, #13430 -- Recreated django.contrib.gis.db.backend
module with SpatialBackend
alias and added Adaptor
alias for backwards-compatibility purposes; added GeoDjango 1.2 backwards-incompatibility documentation and release notes; added a section in the docs about how MySQL is a crippled spatial database; updated versions in install docs.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13097 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
41ccfa15d7
commit
402f8cede5
12 changed files with 226 additions and 26 deletions
|
@ -23,13 +23,16 @@ its functionality into full-fledged spatial database backends:
|
|||
* :mod:`django.contrib.gis.db.backends.oracle`
|
||||
* :mod:`django.contrib.gis.db.backends.spatialite`
|
||||
|
||||
Backwards-Compatibility
|
||||
-----------------------
|
||||
Database Settings Backwards-Compatibility
|
||||
-----------------------------------------
|
||||
|
||||
For those using the old database settings (e.g., the ``DATABASE_*`` settings)
|
||||
Django 1.2 will automatically use the appropriate spatial backend as long
|
||||
as :mod:`django.contrib.gis` is in your :setting:`INSTALLED_APPS`. For
|
||||
example, if you have the following in your settings::
|
||||
In :ref:`Django 1.2 <releases-1.2>`, the way
|
||||
to :ref:`specify databases <specifying-databases>` in your settings was changed.
|
||||
The old database settings format (e.g., the ``DATABASE_*`` settings)
|
||||
is backwards compatible with GeoDjango, and will automatically use the
|
||||
appropriate spatial backend as long as :mod:`django.contrib.gis` is in
|
||||
your :setting:`INSTALLED_APPS`. For example, if you have the following in
|
||||
your settings::
|
||||
|
||||
DATABASE_ENGINE='postgresql_psycopg2'
|
||||
|
||||
|
@ -41,9 +44,37 @@ example, if you have the following in your settings::
|
|||
...
|
||||
)
|
||||
|
||||
Then, :mod:`django.contrib.gis.db.backends.postgis` will automatically be used as your
|
||||
Then, :mod:`django.contrib.gis.db.backends.postgis` is automatically used as your
|
||||
spatial backend.
|
||||
|
||||
.. _mysql-spatial-limitations:
|
||||
|
||||
MySQL Spatial Limitations
|
||||
-------------------------
|
||||
|
||||
MySQL's spatial extensions only support bounding box operations
|
||||
(what MySQL calls minimum bounding rectangles, or MBR). Specifically,
|
||||
`MySQL does not conform to the OGC standard <http://dev.mysql.com/doc/refman/5.1/en/functions-that-test-spatial-relationships-between-geometries.html>`_:
|
||||
|
||||
Currently, MySQL does not implement these functions
|
||||
[``Contains``, ``Crosses``, ``Disjoint``, ``Intersects``, ``Overlaps``,
|
||||
``Touches``, ``Within``]
|
||||
according to the specification. Those that are implemented return
|
||||
the same result as the corresponding MBR-based functions.
|
||||
|
||||
In other words, while spatial lookups such as :lookup:`contains <gis-contains>`
|
||||
are available in GeoDjango when using MySQL, the results returned are really
|
||||
equivalent to what would be returned when using :lookup:`bbcontains`
|
||||
on a different spatial backend.
|
||||
|
||||
.. warning::
|
||||
|
||||
True spatial indexes (R-trees) are only supported with
|
||||
MyISAM tables on MySQL. [#fnmysqlidx]_ In other words, when using
|
||||
MySQL spatial extensions you have to choose between fast spatial
|
||||
lookups and the integrity of your data -- MyISAM tables do
|
||||
not support transactions or foreign key constraints.
|
||||
|
||||
Creating and Saving Geographic Models
|
||||
=====================================
|
||||
Here is an example of how to create a geometry object (assuming the ``Zipcode``
|
||||
|
@ -307,4 +338,12 @@ Method PostGIS Oracle SpatiaLite
|
|||
.. [#fngeojson] *See* Howard Butler, Martin Daly, Allan Doyle, Tim Schaub, & Christopher Schmidt, `The GeoJSON Format Specification <http://geojson.org/geojson-spec.html>`_, Revision 1.0 (June 16, 2008).
|
||||
.. [#fndistsphere14] *See* `PostGIS 1.4 documentation <http://postgis.refractions.net/documentation/manual-1.4/ST_Distance_Sphere.html>`_ on ``ST_distance_sphere``.
|
||||
.. [#fndistsphere15] *See* `PostGIS 1.5 documentation <http://postgis.refractions.net/documentation/manual-1.5/ST_Distance_Sphere.html>`_ on ``ST_distance_sphere``.
|
||||
.. [#] MySQL only supports bounding box operations (known as minimum bounding rectangles, or MBR, in MySQL). Thus, spatial lookups such as :lookup:`contains <gis-contains>` are really equivalent to :lookup:`bbcontains`.
|
||||
.. [#fnmysqlidx] *See* `Creating Spatial Indexes <http://dev.mysql.com/doc/refman/5.1/en/creating-spatial-indexes.html>`_
|
||||
in the MySQL 5.1 Reference Manual:
|
||||
|
||||
For MyISAM tables, ``SPATIAL INDEX`` creates an R-tree index. For storage
|
||||
engines that support nonspatial indexing of spatial columns, the engine
|
||||
creates a B-tree index. A B-tree index on spatial values will be useful
|
||||
for exact-value lookups, but not for range scans.
|
||||
|
||||
.. [#] Refer :ref:`mysql-spatial-limitations` section for more details.
|
||||
|
|
|
@ -150,13 +150,13 @@ 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.1.tar.bz2
|
||||
$ tar xjf geos-3.2.1.tar.bz2
|
||||
$ wget http://download.osgeo.org/geos/geos-3.2.2.tar.bz2
|
||||
$ tar xjf geos-3.2.2.tar.bz2
|
||||
|
||||
Next, change into the directory where GEOS was unpacked, run the configure
|
||||
script, compile, and install::
|
||||
|
||||
$ cd geos-3.2.1
|
||||
$ cd geos-3.2.2
|
||||
$ ./configure
|
||||
$ make
|
||||
$ sudo make install
|
||||
|
@ -273,9 +273,9 @@ supports :ref:`GDAL's vector data <ref-gdal>` capabilities [#]_.
|
|||
|
||||
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
|
||||
$ wget http://download.osgeo.org/gdal/gdal-1.7.2.tar.gz
|
||||
$ tar xzf gdal-1.7.2.tar.gz
|
||||
$ cd gdal-1.7.2
|
||||
|
||||
Configure, make and install::
|
||||
|
||||
|
@ -516,9 +516,9 @@ user. For example, you can use the following to become the ``postgres`` user::
|
|||
|
||||
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.
|
||||
PostGIS versions 1.3 and below use ``<pg_sharedir>/contrib/lwpostgis.sql``;
|
||||
whereas version 1.4 uses ``<sharedir>/contrib/postgis.sql`` and
|
||||
version 1.5 uses ``<sharedir>/contrib/postgis-1.5/postgis.sql``.
|
||||
|
||||
The example below assumes PostGIS 1.5, thus you may need to modify
|
||||
``POSTGIS_SQL_PATH`` and the name of the SQL file for the specific
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue