Installing Spatialite

SpatiaLite向SQLite添加了空间支持,将其转换为全功能空间数据库。

首先检查是否可以从系统软件包或二进制文件安装Spatialite。例如,在基于Debian的发行版上,尝试安装spatialite-bin包。对于Mac OS X,请按照下面的specific instructions below对于Windows,您可以在Gaia-SINS主页上找到二进制文件。无论如何,您应始终能够install from source

完成安装过程后,请跳至Creating a spatial database for SpatiaLite

Installing from source

GEOS and PROJ.4应在构建SpatiaLite之前安装。

SQLite

首先检查SQLite是否使用R * Tree模块编译。运行sqlite3命令行界面并输入以下查询:

sqlite> CREATE VIRTUAL TABLE testrtree USING rtree(id,minX,maxX,minY,maxY);

如果您获得错误,您将必须从源重新编译SQLite。否则,只需跳过此部分。

要从源安装,请从SQLite下载页面下载最新的合并源归档文件,然后解压缩:

$ wget http://sqlite.org/sqlite-amalgamation-3.6.23.1.tar.gz
$ tar xzf sqlite-amalgamation-3.6.23.1.tar.gz
$ cd sqlite-3.6.23.1

接下来,运行configure脚本 - 但是需要定制CFLAGS环境变量,以便SQLite知道构建R * Tree模块:

$ CFLAGS="-DSQLITE_ENABLE_RTREE=1" ./configure
$ make
$ sudo make install
$ cd ..

SpatiaLite library (libspatialite) and tools (spatialite)

下载页面获取最新的SpatiaLite库源代码和工具包:

$ wget http://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-amalgamation-2.4.0-5.tar.gz
$ wget http://www.gaia-gis.it/gaia-sins/spatialite-tools-sources/spatialite-tools-2.4.0-5.tar.gz
$ tar xzf libspatialite-amalgamation-2.4.0-5.tar.gz
$ tar xzf spatialite-tools-2.4.0-5.tar.gz

在尝试构建之前,请阅读以下重要注意事项,了解是否需要自定义configure命令。如果没有,请运行SpatiaLite库的configure脚本,make和安装:

$ cd libspatialite-amalgamation-2.4.0-5
$ ./configure # May need to be modified, see notes below.
$ make
$ sudo make install
$ cd ..

最后,对SpatiaLite工具执行相同操作:

$ cd spatialite-tools-2.4.0-5
$ ./configure # May need to be modified, see notes below.
$ make
$ sudo make install
$ cd ..

注意

如果您已经从二进制包安装了GEOS和PROJ.4,则在运行configure脚本时,您必须指定它们的路径库和工具(配置脚本默认在/usr/local中查看)。例如,在具有GEOS和PROJ.4软件包的Debian / Ubuntu发行版上,命令将是:

$ ./configure --with-proj-include=/usr/include --with-proj-lib=/usr/lib --with-geos-include=/usr/include --with-geos-lib=/usr/lib

注意

对于从源代码构建的Mac OS X用户,SpatiaLite库工具需要配置其target

$ ./configure --target=macosx

pysqlite2

如果您决定使用newer version of pysqlite2而不是sqlite3 Python stdlib模组,那么您需要确保它可以加载外部扩展程序所需的enable_load_extension方法可用,因此可以加载SpatiaLite)。

这可能涉及自己建立。为此,下载pysqlite2 2.6,并untar:

$ wget https://pypi.python.org/packages/source/p/pysqlite/pysqlite-2.6.3.tar.gz
$ tar xzf pysqlite-2.6.3.tar.gz
$ cd pysqlite-2.6.3

接下来,使用文本编辑器编辑setup.cfg文件,如下所示:

[build_ext]
#define=
include_dirs=/usr/local/include
library_dirs=/usr/local/lib
libraries=sqlite3
#define=SQLITE_OMIT_LOAD_EXTENSION

或者如果您使用Mac OS X:

[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

注意

这里的重要事情是确保您注释掉define=SQLITE_OMIT_LOAD_EXTENSION标志,并且include_dirslibrary_dirs设置取消注释,并设置为适当的路径,如果SQLite头文件和库不分别在/usr/include/usr/lib

在适当地修改setup.cfg之后,请运行setup.py脚本来构建和安装:

$ python setup.py install

Mac OS X-specific instructions

要安装SpatiaLite库和工具,Mac OS X用户可以选择KyngChaos packagesHomebrew

KyngChaos

首先,按照KyngChaos packages部分中的说明进行操作。

Creating a spatial database for SpatiaLite时,需要使用spatialite程序。但是,不要尝试从源代码编译SpatiaLite工具,请下载OS X的SpatiaLite二进制文件,并将spatialite安装在PATH例如:

$ 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

最后,要让GeoDjango能够找到KyngChaos SpatiaLite库,请将以下内容添加到您的settings.py

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

Homebrew

Homebrew代表您处理所有与SpatiaLite相关的软件包,包括SQLite3,SpatiaLite,PROJ和GEOS。安装它们这样:

$ brew update
$ brew install spatialite-tools
$ brew install gdal

最后,要让GeoDjango能够找到SpatiaLite库,请将以下内容添加到您的settings.py

SPATIALITE_LIBRARY_PATH='/usr/local/lib/mod_spatialite.dylib'

Creating a spatial database for SpatiaLite

当使用SQLite或SpatiaLite数据库运行manage.py migrate时,如果数据库文件不存在,将自动创建。Django还将确保在数据库中初始化空间元数据。

在Django 1.8中更改:

在Django 1.8之前,您必须通过手动运行“SELECT InitSpatialMetaData();”查询来初始化空间元数据表。