SpatiaLite向SQLite添加了空间支持,将其转换为全功能空间数据库。
首先检查是否可以从系统软件包或二进制文件安装Spatialite。例如,在基于Debian的发行版上,尝试安装spatialite-bin包。对于Mac OS X,请按照下面的specific instructions below。对于Windows,您可以在Gaia-SINS主页上找到二进制文件。无论如何,您应始终能够install from source。
完成安装过程后,请跳至Creating a spatial database for SpatiaLite。
GEOS and PROJ.4应在构建SpatiaLite之前安装。
首先检查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库源代码和工具包:
$ 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
如果您决定使用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_dirs和library_dirs设置取消注释,并设置为适当的路径,如果SQLite头文件和库不分别在/usr/include和/usr/lib。
在适当地修改setup.cfg之后,请运行setup.py脚本来构建和安装:
$ python setup.py install
要安装SpatiaLite库和工具,Mac OS X用户可以选择KyngChaos packages和Homebrew。
首先,按照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'
当使用SQLite或SpatiaLite数据库运行manage.py migrate时,如果数据库文件不存在,将自动创建。Django还将确保在数据库中初始化空间元数据。
在Django 1.8之前,您必须通过手动运行“SELECT InitSpatialMetaData();”查询来初始化空间元数据表。
2015年5月13日