LBS
LBS是基于位置的服务,典型的场景如外卖,附近的人等。
常用的架构,方案
- MongoDB
- Mysql+GeoHash
- Redis+GeoHash
- Postgresql+gis 本文的采用的是Postgresql+gis+geodjango
django实现
这里记录一下实现记录,demo github地址:https://github.com/itswcg/geodjango
安装postgres
# 这里以centos7为例
$ yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
$ yum install postgresql10
$ yum install postgresql10-server
$ /usr/pgsql-10/bin/postgresql-10-setup initdb
$ systemctl start postgresql-10
$ 修改密码,建数据库略
安装PostGis插件
$ yum install postgis24_10
$ 进入数据库
gisdb=# CREATE EXTENSION postgis;
gisdb=# CREATE EXTENSION postgis_topology;
gisdb=# \dx # 查看是否安装成功
安装geodjango
# 使用geodjango需要安装额外的地理库
# 安装GEOS, X,Y,Z 指版本号,自己选择
$ wget https://download.osgeo.org/geos/geos-X.Y.Z.tar.bz2
$ tar xjf geos-X.Y.Z.tar.bz2
$ cd geos-X.Y.Z
$ ./configure
$ make
$ sudo make install
$ cd ..
# 安装PROJ.4
$ wget https://download.osgeo.org/proj/proj-X.Y.Z.tar.gz
$ wget https://download.osgeo.org/proj/proj-datumgrid-X.Y.tar.gz
$ tar xzf proj-X.Y.Z.tar.gz
$ cd proj-X.Y.Z/nad
$ tar xzf ../../proj-datumgrid-X.Y.tar.gz
$ cd ..
$ ./configure
$ make
$ sudo make install
$ cd ..
# 安装GDAL
$ wget https://download.osgeo.org/gdal/X.Y.Z/gdal-X.Y.Z.tar.gz
$ tar xzf gdal-X.Y.Z.tar.gz
$ cd gdal-X.Y.Z
$ ./configure
$ make # 有点久,大约半小时
$ sudo make install
$ cd ..
# 安装完需要在django settings中设置GEOS_LIBRARY_PATH和GDAL_LIBRARY_PATH
参考
https://docs.djangoproject.com/en/2.1/ref/contrib/gis/
https://realpython.com/location-based-app-with-geodjango-tutorial/#the-tools-you-will-be-using
https://rk.edu.pl/en/shops-near-you-geographic-features-geodjango/
https://www.slideshare.net/meituan/12lbs