配置GeoDjango的具體過程可參考官方文檔:
https://docs.djangoproject.com/en/1.9/ref/contrib/gis/
1.安裝
(1)安裝GEOS
Database
Library Requirements
Supported Versions
Notes
PostgreSQL
GEOS, PROJ.4, PostGIS
9.1+
Requires PostGIS.
MySQL
GEOS
5.5+
Not OGC-compliant.
Oracle
GEOS
11.2+
XE not supported.
SQLite
GEOS, GDAL, PROJ.4, SpatiaLite
3.6.+
Requires SpatiaLite 2.4+, pysqlite2 2.5+
從上表可知:對於MySQL,只需安裝GEOS;
對於PostgreSQL,需要安裝PROJ.4、PostGIS
對於SQLite,需安裝PROJ.4、GDAL、SpatiaLite
GEOS是一個支持空間幾何運算C++庫,關於它的詳細介紹,可參考官方文檔:
MySQL沒有完全支持OGC標准,所以對空間數據的CRUD會有一些限制,詳細可參考文檔:
由於目前我們服務器上使用的是MySQL,所以按MySQL進行配置:安裝GEOS
先下載geos
$ wget http://download.osgeo.org/geos/geos-3.4.2.tar.bz2
$ tar xjf geos-3.4.2.tar.bz2
然后解壓、編譯、安裝
$ cd geos-3.4.2
$ ./configure
$ make
$ sudo make install
$ cd ..
執行完上述幾步,想知道GEOS是否安裝正確,可用下面的命令:
進入python shell,鍵入下面的命令,如果不報錯,則認為安裝正確。
fromdjango.contrib.gis.dbimportmodels
(2)修改settings.py
a.在INSTALLED_APPS中添加 'django.contrib.gis',
b.修改數據庫引擎為'ENGINE': 'django.contrib.gis.db.backends.mysql',
(3)在models.py中引入models
from django.contrib.gis.db import models
同時可以注釋掉from django.db import models
(4)測試:
在models.py(比如Person表)中,添加以下字段:
point = models.PointField(null=True,blank=True)
然后運行:
./manage.py makemigrations
如果不報錯,則視為正確。
除了PointField以外,還有多個空間類型,如下:
具體可參考GeoDjango Models API的文檔:
https://docs.djangoproject.com/en/1.9/ref/contrib/gis/model-api/#spatial-field-types