瓦片地图服务器搭建步骤

目录

一、系统环境以及软件要求

gcc 升级到5.4以上,推荐升级至最新版

mapnik 安装

安装nodejs

安装node-mapnik

数据库: PostgreSQL

地图数据下载以及使用

启动服务器

二、gcc要求和mapnik安装

三、nodejs安装

四、安装node-mapnik

五、数据库安装 PostgreSQL以及启动

六、地图数据下载以及导入

七、启动服务器


一、系统环境以及软件要求

在CentOS 7.2系统环境中搭建瓦片地图服务。

  1. gcc 升级到5.4以上,推荐升级至最新版

  2. mapnik 安装

  3. 安装nodejs

  4. 安装node-mapnik

  5. 数据库: PostgreSQL

  6. 地图数据下载以及使用

  7. 启动服务器

二、gcc要求和mapnik安装

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

三、nodejs安装

安装命令

yum install nodejs -y

验证nodejs版本

$ node -v
v8.11.2

$ npm -v
6.8.0

 

四、安装node-mapnik

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以及启动

本次安装使用的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_PATH

export 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风格的瓦片

 

 

 

 

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值