目录
一、系统环境以及软件要求
gcc 升级到5.4以上,推荐升级至最新版
mapnik 安装
安装nodejs
安装node-mapnik
数据库: PostgreSQL
地图数据下载以及使用
启动服务器
二、gcc要求和mapnik安装
三、nodejs安装
四、安装node-mapnik
五、数据库安装 PostgreSQL以及启动
六、地图数据下载以及导入
七、启动服务器
在CentOS 7.2系统环境中搭建瓦片地图服务。
1、gcc推荐安装8.1版本,并检查gcc版本
$ gcc --version
gcc (GCC) 8.1.0
2.安装boost库
3.安装mapnik
1、 Github上的源码地址 https://github.com/mapnik/mapnik
2、 安装mapnik所需依赖库,感谢think8848
yum install freetype-devel libtool-ltdl-devel libpng-devel libtiff-devel libjpeg-devel python-devel harfbuzz-devel postgresql-devel proj-devel proj-epsg sqlite-devel libwebp-devel gdal-devel cairo-devel -y
3、安装步骤根据 https://github.com/mapnik/mapnik/blob/master/INSTALL.md
git clone https://github.com/mapnik/mapnik.git cd mapnik git submodule update --init ./configure make JOBS=4 make make install
查看mapnik版本
$ mapnik-config -v
3.1.0
安装命令
yum install nodejs -y
验证nodejs版本
$ node -v
v8.11.2$ npm -v
6.8.0
cd /usr/local/src mkdir node-mapnik && cd node-mapnik vim package.json
在打开创建package.json文件后,输入以下内容
{
"name": "nmtest",
"description": "node-mapnik test ",
"version": "0.0.1",
"private": true,
"dependencies": {
"mapnik": "3.*"
}
}
开始安装node-mapnik,通常而言,使用 npm install 即可安装好所有依赖包
在国内安装 npm 指定安装源,添加参数 --registry=https://registry.npm.taobao.org
npm install --registry=https://registry.npm.taobao.org
这个步骤结束后,可以测试node-mapnik是否安装成功。安装成功后,将node-mapnik添加到公共模块中
先将node-mapnik安装到公共模块的目录,默认情况下安装到 /usr/lib/node_modules
sudo npm install -g mapnik
添加 NODE_PATH 环境变量
export NODE_PATH=/usr/lib/node_modules:$PATH
再更新环境变量
source /etc/profile
本次安装使用的PostgreSQL的版本是11,PostGis的版本是2.5_11。
安装指令如下
sudo yum install postgis25_11* # 安装PostGis
sudo yum install pgrouting_11* # pgrouting_11
sudo yum install ogr_fdw11* # ogrfdw的全称是OGR Foreign Data Wrapper -详细内容github
sudo yum install psogresql11 # postgresql 11版本
安装完成之后切换用户为 postgres 以便对数据库配置和启动。
启动数据库之前需要对数据库初始化,配置数据存放目录(放在指定目录)
sudo mkdir /home/postgresData
sudo chown postgres:postgres /home/postgresData
sudo chmod 750 /home/postgresData
设置环境变量
注意 PGDATA 参数为 数据存放目录,由于数据量较大,推荐放在数据盘符内,不要放在系统盘里。
在 /etc/profile 文件尾部增加如下内容
export PATH=/usr/pgsql-11/bin/:$PATH
export LD_LIBRARY_PATH=/usr/pgsql-11/lib:$LD_LIBRARY_PATHexport PGDATA=/home/postgresData
切换用户,先切换root用户,再切换postgres用户。
sudo -s
su postgres
source /etc/profile
用命令initdb生成数据库簇。
initdb
若提示找不到指令,请确定安装目录是否正确、并更新环境: source /etc/profile 。
等待initdb指令完成之后,先修改数据库的配置,再启动数据库服务。
主要修改两个文件 pg_hba.conf 和 postgresql.conf
cd $PGDATA
vim pg_hba.conf
在此文件尾部增加一下内容 md5为访问时需要密码,local 的加密方式推荐使用 trust 或者 peer。不推荐用md5
host all all 0.0.0.0/0 md5
vim postgresql.conf
listen_addresses = '*' #监听地址
port = 10072 #数据库监听端口 默认为5432
max_connections = 300 #默认值为100,在从文件载入数据库时,大型地图数据可能不够用导致在载入数据时过程中失败。
至此,便可以启动数据库。这里并没有设置数据库的日志
pg_ctl start -D $PGDATA #启动数据库服务
pg_ctl status -D $PGDATA #查看启动状态
pg_ctl restart -D $PGDATA # 重启
pg_ctl stop # 关闭
数据库的客户端登陆
$ psql #若端口不是5432 需要指定端口
$ psql -p 10072
$ psql --help # psql使用帮助
进入数据库的一些基本设置
1.修改数据库用户的密码为postgres。
ALTER USER postgres WITH PASSWORD 'postgres';
2.新增用户
create user proot password 'password';
3.创建数据库mapdb,并将数据库的所有权限赋予用户proot。
CREATE DATABASE mapdb;
GRANT ALL ON DATABASE mapdb TO proot;
4.开启防火墙的端口
sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent sudo firewall-cmd --reload
5. 非postgres 用户在终端访问数据库的指令如下,需要指定用户,host,端口,数据库的库名,
psql -U proot-h localhost -p 10072 -d mapdb
6.安装PostGis扩展
CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology; CREATE EXTENSION ogr_fdw;
PostGis的扩展列表
-- Enable PostGIS (includes raster)
CREATE EXTENSION postgis;
-- Enable Topology
CREATE EXTENSION postgis_topology;
-- Enable PostGIS Advanced 3D
-- and other geoprocessing algorithms
-- sfcgal not available with all distributions
CREATE EXTENSION postgis_sfcgal;
-- fuzzy matching needed for Tiger
CREATE EXTENSION fuzzystrmatch;
-- rule based standardizer
CREATE EXTENSION address_standardizer;
-- example rule data set
CREATE EXTENSION address_standardizer_data_us;
-- Enable US Tiger Geocoder
CREATE EXTENSION postgis_tiger_geocoder;
验证安装结果
# SELECT postgis_full_version();
postgis_full_version----------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
POSTGIS="2.5.1 r17027" [EXTENSION] PGSQL="110" GEOS="3.7.0-CAPI-1.11.0 673b9939" SFCGAL="1.2.2" PROJ="Rel. 4.9.3, 15
August 2016" GDAL="GDAL 1.11.4, released 2016/01/25" LIBXML="2.9.1" LIBJSON="0.11" TOPOLOGY RASTER
(1 row)
到这里说明PostGis安装成功。
7.postgresql数据库的管理工具推荐使用pgAdmin4,下载的官方地址https://www.pgadmin.org/download/
下载比较慢,用 Navicat Premium 也可以作为GUI管理工具。
在pgAdmin4管理工具中可以查看已安装扩展。
1、地图数据来源: https://download.geofabrik.de/
选择 osm.pbf 文件用osm2pgsql工具导入数据库,
选择[.shp.zip]文件,选择shp2pgsql工具导入数据库。
2、数据导入工具,osm2pgsql和shp2pgsql。
这里介绍 osm2pgsql安装和使用,因为osm是单文件,导入过程比较便捷。shp2pgsql无需额外安装,在postgreSQL数据库安装目录的bin文件下( /usr/pgsql-11/bin )。
安装osm2pgsql可以使用源码安装或者yum安装,这里用yum方式安装
sudo yum install osm2pgsql -y
osm2pgsql 操作帮助文档指令如下,或百度查找。
osm2pgsql -h
3.导入数据操作,将下载好的文件导入数据库,导入过程依据数据量,上次下载的国内数据454MB,大约花费了一个多小时,占用的数据库有占用临时文件大小有12Gb之多。
osm2pgsql -s -U proot -H localhost -P 10072 -W -d mapdb /tmp/china-latest.osm.pbf
导入数据库完成后,就到了最后的一个阶段。
参照 使用node-mapnik生成openstreetmap-carto风格的瓦片