写在前面
系统环境: ubuntu16.04+Python3.5+Django2.1.7
几点解释
GIS
GIS的全名是Geographic Information System,中文全名是地理信息系统。它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。
WebGIS
WebGIS,就是将 GIS 这门学科所能提供的功能,以B/S技术展现给用户,使用户只需要在浏览器上便能使用这些GIS功能的一个应用方向。基于 B/S 的 GIS 系统越来越多的开始提供服务,并且在 RIA(富客户端)技术、AJAX(动态网页)技术的涌现和成熟,WebGIS 也基本能展现出与 C/S 一样的效果和功能,而WebGIS的大发展,更是用户的需求, Google 地图和百度地图等服务提供商的大规模扩张便是最好的证明。WebGIS 的数据大致可以分为三种,一种是地图、影像数据,一种是空间属性数据、一种是业务数据。地图、影像数据一般是一些png或者其他格式的数据组成
GeoDjango
GeoDjango是Django包含的一个 contrib 模块,使 Django 尽可能简单地创建地理 Web 应用程序,如基于位置的服务。
主要包含以下特点:用于 OGC 几何和栅格数据的 Django 模型字段;用于查询和处理空间数据的 Django 的 ORM 扩展;后台管理字段。
环境配置
配置说明
- 官方支持 MySQL、PostgreSQL、 Oracle、SQLite 四种数据库,而PostGIS 是官网推荐的空间数据引擎,使PostgreSQL更好地支持对空间数据的操作,所以我选择了PostgreSQL+PostGIS 的组合,除此之外还需要安装 GEOS、 GDAL、 PROJ.4 三种底层依赖库,这些都是开源 GIS 经常使用的库。
PostgreSQL (with PostGIS), MySQL (mostly with MyISAM engine), Oracle, and SQLite (with SpatiaLite) are the spatial databases currently supported.
Note:PostGIS is recommended, because it is the most mature and feature-rich open source spatial database.
安装操作
- 预装一些依赖的库
$ sudo apt-get install binutils libproj-dev gdal-bin
- 安装GEOS,GEOS简单来书就是判断两个几何形状之间关系和对两个几何形状进行操作以形成新的几何形状的库。
$ wget http://download.osgeo.org/geos/geos-3.5.1.tar.bz2
$ tar xjf geos-3.5.1.tar.bz2
$ cd geos-X.Y.Z
$ ./configure
$ make
$ sudo make install
$ cd ..
- 安装PROJ.4,Proj4是一个免费的GIS工具,它专注于地图投影的表达以及转换,采用一种非常简单明了的投影表达,比其它的投影定义简单,功能主要有经纬度与地理坐标系的转换,坐标系的转换,很容易就能看到各种地理坐标系和地图投影的参数。在 Linux下除了可以直接运行外,还可以作为库来进行更高功能的开发。
$ wget http://download.osgeo.org/proj/proj-4.9.1.tar.gz
$ wget http://download.osgeo.org/proj/proj-datumgrid-1.5.tar.gz
$ tar xzf proj-4.9.1.tar.gz
$ cd proj-4.9.1/nad
$ tar xzf ../../proj-datumgrid-1.5.tar.gz
$ cd ..
- 安装GDAL,Geospatial Data Abstraction Library (GDAL)是使用C/C++语言编写的用于读写空间数据的一套跨平台开源库。现有的大部分GIS或者遥感平台,不论是商业软件ArcGIS,ENVI还是开源软件GRASS,QGIS,都使用了GDAL作为底层构建库。GDAL库由OGR和GDAL项目合并而来,OGR主要用于空间要素矢量矢量数据的解析,GDAL主要用于空间栅格数据的读写。GDAL主要提供了三大类数据的支持:栅格数据,矢量数据以及空间网络数据(Geographic Network Model)。当我们在Python中调用GDAL的API函数时,其实底层执行的是C/C++编译的二进制文件。
$ wget http://download.osgeo.org/gdal/2.2.2/gdal-2.2.2.tar.gz
$ tar xzf gdal-2.2.2.tar.gz
$ cd gdal-2.2.2
$ ./configure
$ make # 大概需要7~8min
$ sudo make install
$ cd ..
- 安装开源关系型数据库postgresql
sudo apt-get install postgresql //安装完成后,PostgreSQL服务器会默认在本机的5432端口开启
sudo apt-get install pgadmin3 //安装图形管理界面
sudo -u postgres createuser --superuser user //创建数据库用户user,并指定其为超级用户
sudo -u postgres psql //登录数据库控制台
postgres=# \password user
Enter new password:
Enter it again: //设置dbuser用户的密码
postgres=# \q //完成后退出控制台
sudo -u postgres createdb -O user databasename //创建数据库databasename,并指定所有者为user
psql -U user -d databasename -h 127.0.0.1 -p 5432 //新用户的名义登录数据库,这时使用的是psql命令
- 安装postgis
sudo apt-get install postgis
故障排除
- 一定要注意版本问题,如果还有无法解决的错误,建议查看官方文档。
- 检验 GEOS:在 GDAL 目录下,执行
./configure
,如果出现GEOS support = yes
,安装成功; - 检验 GDAL:在终端输入
gdalinfo --version
命令显示GDAL 2.2.2, released 2017/09/15
,成功; - 配置 geodjango 环境时,因为操作系统无法加载从源构建的库目录,导致绝大多数错误是外部共享库不能被加载,参考官方提示,经过以下配置就好了?
// 将库路径user/local/bin加入到LD_LIBRARY_PATH
vi ~/bashrc
export LD_LIBRARY_PATH=/usr/local/lib
// 设置系统库路径
$ sudo echo /usr/local/lib >> /etc/ld.so.conf
$ sudo ldconfig
参考链接
GEOS库一些自己的见解和注意点
PROJ4初探
GDAL简介
PostgreSQL新手入门
高质量编码-GIS搜索框前端实现
shapefile数据文件组成