目的
- 记录安装部署过程,好记性不如烂笔头。
- 国内资料较少,使用版本也都比较老,希望对后续的人能有所帮助。
- 希望能找到和我一样对快显感兴趣的小伙伴。
- 练习写作,拓展个人视野,结交更多的朋友。
基础
官方资料
Mapnik GitHub首页 :传送门
Mapnik官方部署文档 :传送门
Mapnik官方资料:传送门
Python-Mapnik示例资料:传送门
Mapnik简介
Mapnik 是一个用来开发 GIS 应用程序的工具包,其核心是一个 C++ 的共享库提供空间数据访问和可视化的算法和模式。特别是包含一些地理对象,如地图、层、数据源、特征和地理几何等。该共享库支持多种操作系统,可以在多线程环境下很好的运行,主要面向一些提供GIS服务的Web应用开发。
Mapnik的使用案例
简单列举几个,如下:
- Mapbox
- OSM(OpenStreetMap)
- CartoDB
准备工作
部署环境
Ubuntu16.0.4_lts
相关工具
本文使用xshell,xftp操作Linux系统,您也阔以使用自己熟悉的Linux操作工具。
前置条件
- 安装部署需要对Linux常用的命令有个基础的了解,如果不会也不用怕,跟着本文一步一步来就阔以了,不懂的命令百度一下就好了(顺便学习学习Linux系统常用指令)。
- 胆大心细,要有耐心。(看到这里不要笑话我,哈哈哈)
软件部署
安装部署是个繁琐的活,即使是根据官网的指导也不一定能安装成功,遇到啥问题先Google一下,查不到再在GitHub上Mapnik项目上提问(会有大佬回答的),历经九九八一难,会成佛的。
当前最新版本为Mapnik 3.0.21 Release
Mapnik官方下载:传送门
Mapnik安装部署:传送门
Mapnik Ubuntu 安装部署:传送门
Python-Mapnik:传送门
Node-Mapnik:传送门
相关建议
- 不建议部署Windows版本,主要原因是Windows版本较低,官方已经不再维护,这块建议部署在Linux系统,本文主要针对Ubuntu16.04。
- 建议先申请一个外国的云服务器(比如亚马逊的AWS或Google的云服务器,都是阔以免费试用一年的),国内直接安装下载相关包的时候可能会失败,按照Mapnik官方提供的资料,无法安装成功(为嘛安装不成功,都懂的,墙外的世界不是那么容易欣赏的),这都是血泪的经验教训。
- Mapnik实现的绑定有好几种语言(C++、Python、Node.JS),这块我个人对Python版本了解多一点,多以我开始安装部署的Python-Mapnik。经过长时间的查找资料,发现Python版本的更新较慢,资料相对较老。这块我建议安装部署NodeJS版本,主要原因是Github上更新评率高,资料较多、较新,集群容易(网上有现成的框架),支持较新的Mapnik版本 (顺便阔以在Node.JS方面练练手 哈哈)。
- 如果要本地安装,建议先在国外服务器上把包下载下来,然后在本地的服务器在安装。
在线部署
免费云服务器申请
亚马逊云(AWS)
传送门(你需要用信用卡,抵押一美金)
Google云
传送门(需要有visa功能的信用卡或借记卡)
Mapnik安装
官方文档:传送门
安装步骤如下:
# 首先执行下面的语句,更新和升级一下apt-get
sudo apt-get update
sudo apt-get upgrade
# 更新clang
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update -y
sudo apt-get install -y gcc-6 g++-6 clang-3.8
export CXX="clang++-3.8" && export CC="clang-3.8"
# 安装 mapnik
git clone https://github.com/mapnik/mapnik mapnik --depth 10
cd mapnik
git submodule update --init
sudo apt-get install python zlib1g-dev clang make pkg-config curl
source bootstrap.sh
./configure CUSTOM_CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" CXX=${CXX} CC=${CC}
make
make test
sudo make install
其他一些需要注意的地方,详细请看官方Github帮助页。
Python-Mapnik安装
官方文档:传送门
安装步骤如下:
- apt-get install python-dev
- apt-get install python-pip
- apt-get install python-setuptools
- git clone https://github.com/mapnik/python-mapnik.git
- cd python-mapnik
- export BOOST_PYTHON_LIB=boost_python
- export BOOST_THREAD_LIB=boost_thread
- export BOOST_SYSTEM_LIB=boost_system
- python setup.py install
安装成功后
运行测试:
cd demo/python
python rundemo.py
查看是否成功生成切片图片,如果成功生成则安装成功!
Node-Mapnik安装
官方文档:传送门 (官网的安装需步骤要你有一个强力的FQ工具或者国外的云服务器)
参考博客:传送门A ,传送门B
本地部署
Mapnik安装
这块需要打包aws或者google云上已经安装好的mapnik包,然后拷贝到本地。
安装步骤如下:
- cd ~
- mkdir wwwroot
- cd wwwroot
- sudo apt-get install python zlib1g-dev clang make pkg-config curl
- 拷贝所提供文件目录下的mapnik.tar.bz2到wwwroot目录下
- tar jxvf mapnik.tar.bz2
- cd mapnik-3.x
- export PROJ_LIB=/root/wwwroot/mapnik-3.x/mason_packages/.link/share/proj
- export ICU_DATA=/root/wwwroot/mapnik-3.x/mason_packages/.link/share/icu/57.1
- export GDAL_DATA=/root/wwwroot/mapnik-3.x/mason_packages/.link/share/gdal
- export C_INCLUDE_PATH=/root/wwwroot/mapnik-3.x/mason_packages/.link/include
- export CPLUS_INCLUDE_PATH=/root/wwwroot/mapnik-3.x/mason_packages/include
- export LIBRARY_PATH=/root/wwwroot/mapnik-3.x/mason_packages/lib
- ./configure CUSTOM_CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" CXX= C X X C C = {CXX} CC= CXXCC={CC}
- make
- make test
- sudo make install
# 检查mapnik的版本号
mapnik-config -v
Python-Mapnik安装
安装步骤如下:
- apt-get install python-dev
- apt-get install python-pip
- apt-get install python-setuptools
- 拷贝文件python-mapnik.tar.gz到wwwroot目录下
- tar zxvf python-mapnik.tar.gz
- cd python-mapnik
- export BOOST_PYTHON_LIB=boost_python
- export BOOST_THREAD_LIB=boost_thread
- export BOOST_SYSTEM_LIB=boost_system
- python setup.py install
安装成功后
运行测试:
cd demo/python
python rundemo.py
查看是否成功生成切片图片,如果成功生成则安装成功!
Node-Mapnik安装
- 安装Node.js
# 安装nodejs & npm
apt-get install nodejs
apt-get install npm
# 由于npm访问国外网站过慢,可以切换成淘宝npm镜像:
npm config set registry https://registry.npm.taobao.org
# 升级npm
npm install -g n
# 安装lts版本,当然你也可以安装latest、stable、lts和指定版本等
n lts
# 查看node和npm的版本
node -v
npm -v
# 发现当前版本不是最新版本,可以按照下面的命令重新链接node和npm,确保链接最新版本。
rm /usr/bin/node
ln -s /usr/local/n/versions/node/8.11.3/bin/node /usr/bin/node
rm /usr/bin/npm
ln -s /usr/local/n/versions/node/8.11.3/bin/npm /usr/bin/npm
# npm 升级到最新版本
npm i -g npm
- 安装npm相关的包
# 全局安装node-gyp和node-pre-gyp
npm install -g node-gyp
npm install -g node-pre-gyp
- 安装Node-Mapnik(Node-Mapnik安装不依赖Mapnik)
# 创建文件夹
cd /home
mkdir node-mapnik
cd node-mapnik
# 安装node-mapnik模块(这块感觉不稳定,有的时候从亚马逊s3上下载资源会失败)
# 如果出现安装失败的情况,有的是因为一些资源下载失败,尝试科学上网、不断重试直到安装成功。
npm install mapnik
4. 验证安装是否成功
# 创建app.js文件
vim app.js
# 按字母i进入编辑模式,输入如下代码,编辑完按Esc + :wq! 保存。(记得拷贝一张demo.jpg的图片到当前目录)
var mapnik = require('mapnik');
new mapnik.Image.open('demo.jpg').save('demo.png');
# 执行js文件
node app.js
# 查看当前目录是否输出了demo.png图片,如果有就说明安装成功啦!
ls
安装部署文档下载
- Mapnik & Python-Mapnik安装部署文档:CSDN资源传送门
我在CSDN上传了Mapnik和Python-Mapnik详细的安装过程(做了详细的批注),感兴趣的小伙伴可以下载,有问题的可以留言也可以加Q联系我。 - Mapnik & Python-Mapnik包已上传百度云
链接:https://pan.baidu.com/s/1S-gGQAr4KoSP1QG7QJeUqA 提取码:baig
安装总结
- 建议申请个国外的服务器先安装试一下。
- 安装过程比较繁琐,按照步骤一步一步来,遇到啥问题goole解决啥问题,实在搞不定了可以留言或者在GitHub/StackOverFlow上给大佬提问题。
- 历经八十一难,总会成功的。