首先总结一下,Linux(windows上没有测试过)上Mapnik的编译与测试就是一部心酸血泪史呀,如果您没有做好思想准备,那就出门左转,看点有意思的去吧,编译这个太煎熬了。

安装PostgreSQL

  apt-get install

  postrgresql \ #- core database server

  postgresql-client \ #- client libraries and client binaries

  postgresql-server-dev-all \ #- libraries and headers for C language backend development

  postgresql-contrib \ # - additional supplied modules

  libpq-dev \ #- libraries and headers for C language frontend development

  pgadmin3 \ #- pgAdmin III graphical administration utility

安装PostGIS

  apt-get install

postgresql-9.4-postgis
安装sqlite
apt-get install libsqlite-dev 安装proj4
apt-get install libproj-dev 安装tiff
apt-get install libtiff-dev 或者 libtiff5-dev

安装GDAL

  apt-get install libgdal-dev

1. Mapnik 简介

  Mapnik的官网做的那个简陋,我就不说了,在上面处理下载什么消息都得不到,我也是醉了,最后在githut的Mapnik wiki找到了简介相关文档,包括如何安装,如何测试。

https://github.com/mapnik/mapnik/wiki

Mapnik 编译安装过程

pkg-config

https://github.com/mapnik/mapnik/wiki/InstallationTroubleshooting

https://github.com/mapnik/mapnik/wiki/DebianInstallation

问题 1
   - freetype-config (freetype-config program | try setting FREETYPE_CONFIG SCons option or configure with FREETYPE_LIBS & FREETYPE_INCLUDES)
  freetype:http://download.savannah.gnu.org/releases/freetype/
  version:freetype-2.6.2.tar.gz

问题 2  - harfbuzz (HarfBuzz text shaping library | configure with HB_LIBS & HB_INCLUDES)

  harfbuzz : http://www.freedesktop.org/software/harfbuzz/release/

  version: harfbuzz-1.1.3.tar.bz2

在安装harfbuzz源码时总是不能将freetype编译进去,原因是编译器找不到开发版本的freetype环境,如果非要使用自己编译的源码freetype,可以参考:Debian 入门安装与配置2,其实在harfbuzz的目录中,官方提供了BUILD.md文件,其中提示相关依赖的安装方式,大家可以参考,如果是Debian系列,可以使用如下命令安装harfbuzz的依赖环境:

  sudo apt-get install libfreetype6-dev libglib2.0-dev libcairo2-dev

- icuuc (ICU C++ library | configure with ICU_LIBS & ICU_INCLUDES or use ICU_LIB_NAME to specify custom lib name  | more info: http://site.icu-project.org/)

  icu4c:http://sourceforge.net/projects/icu/files/ICU4C/55.1/icu4c-55_1-src.zip/download

  version:icu4c-55_1-src.zip

  问题解决:http://stackoverflow.com/questions/18239488/can-not-configure-mapnik-due-to-icuuc
   - boost development headers (more info see: https://github.com/mapnik/mapnik/wiki/Mapnik-Installation & http://www.boost.org)

  boost:官网下载地址

  version:boost_1_60_0.tar.bz2

sudo apt-get install \
g++ cpp \
libicu-dev libicu48 \
python-dev \
libboost-system-dev \
libboost-filesystem-dev \
libboost-iostreams-dev \
libboost-thread-dev \
libboost-python-dev \
libboost-program-options-dev \
libboost-regex-dev \
libxml2 libxml2-dev \
libfreetype6 libfreetype6-dev \
libjpeg8 libjpeg8-dev \
libpng12-0 libpng12-dev \
libtiff5 libtiff5-dev \
libltdl7 libltdl-dev \
libproj0 libproj-dev \
libcairo2 libcairo2-dev python-cairo python-cairo-dev \
libcairomm-1.0-1 libcairomm-1.0-dev \
ttf-dejavu ttf-dejavu-core ttf-dejavu-extra ttf-unifont \
postgresql postgresql-server-dev-9.1 postgresql-contrib \
libgdal1-dev python-gdal \
postgresql-9.1-postgis libsqlite3-dev \
subversion build-essential python-nose
2.python 测试
关于python的测试,在Mapnik的Github页面的wiki中给出了详细信息,大家可以去详细阅读,我这里只记录一些在测试过程出现问题的详细解决方法(还是前面提到了,最好能翻墙,否则就算知道方法,你也下载不到)。
问题1. ImportError: No module named mapnik
    在进行 python -c "import mapnik 步时报出了这个错误,意思就是我们找不到python的mapnik模块。
    其实在说明文档中,已经提示了,在Mapnik 3.x的版本中,Mapnik的python绑定模块不再包含在Mapnik的源代码中,需要另行下载,我们在Github的Mapink板块中可以找到python-mapnik的下载地址。
    Please also note that unlike Mapnik 2.x, version 3.x does not include Python bindings anymore. You can find the new Python bindings here.
    下载下来的python-mapnik需要安装,但是在安装过程中,又出现了问题。
问题2. ImportError: No module named setuptools
    在
python-mapnik的源代码中,我们需要按照README.md文件中的提示,根据自己需求进行安装,但是在执行 python setup.py install 的时候,出现了上述错误。这个错误是说没有setuptools模块,在网上搜索一下就可以知道,这个模块是用来为python安装第三方模块的,其中这篇博客给出了解决办法,但是,不好意思被墙了haha。最后在翻墙后的https://pypi.python.org/pypi/setuptools找到了关于setuptools的官方知道,又但是,尽管翻墙,还是不能使用官方提供的运行ez_setup.py文件进行安装,因为还是下载不到需要的文件(多么悲伤,想死的心都有了)。下面是python官方的推荐:
    The recommended way to bootstrap setuptools on any system is to download ez_setup.py and run it using the target Python environment. Different operating systems have different recommended techniques to accomplish this basic routine, so below are some examples to get you started(遇到我们的GFW,然并卵).
    但是这个其中页面下面还提供了setuptools的源代码,没办法我只能下载了setuptools-19.6.tar.gz (md5),然后解压后运行进入到源代码文件夹执行:python setup.py install 安装了这个工具(活着不易)。 到此我们终于能运行
python -c "import mapnik;print mapnik.__file__" 成功,并返回了正确的mapnik.py的路径。 相关学习网站:
  https://www.e-education.psu.edu/geog585/node/519

Mapnik 编译安装过程的更多相关文章

  1. 转-httpd 2.4.4 + mysql-5.5.28 + php-5.4.13编译安装过程

    一.编译安装apache 1.解决依赖关系 httpd-2.4.4需要较新版本的apr和apr-util,因此需要事先对其进行升级.升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包.这 ...

  2. LAMP环境源码编译安装过程

    LAMP环境源码编译安装过程 一.Apache的安装 1.1.apache软件包及依赖包准备 httpd-2.4.29.tar.bz2       apr-1.6.3.tar.gz      apr- ...

  3. mysql5.5编译安装过程(自己总结)

    一,安装过程 //创建mysql安装目录,创建数据存放目录,创建用户和用户组与赋予数据存放目录权限 mkdir -p /usr/local/mysql/ mkdir -p /data/mysql/ g ...

  4. php编译安装过程中遇到问题

    编译安装PHP时遇到的问题 问题1: configure: error: xml2-config not found. Please check your libxml2 installation. ...

  5. LAMP架构编译安装过程详解

    linux Git 安装 1.安装git依赖包 . yum install -y perl-ExtUtils-MakeMaker package . yum install -y tcl build- ...

  6. R 在linux redhat 6.5的编译安装过程

    下载源码包 在http://cran.r-project.org/mirrors.html,选择一个国内镜像下载需要的版本,比如:http://mirror.lzu.edu.cn/CRAN/src/b ...

  7. php 5.5.1 编译安装过程

    1.下载解压 wget http://au1.php.net/get/php-5.5.1.tar.gz/from/ch2.php.net/mirror tar zxvf php-5.5.1.tar.g ...

  8. mtd-utils编译安装过程

    git clone git://git.infradead.org/mtd-utils.git cd mtd-utils apt install -y libssl-dev libzlb libzst ...

  9. 不要着急改代码,先想想--centos 6.8下编译安装tmux

    诸位读者新年好,2017开年第一篇博客,请允许我先问候一下看到这篇博客的诸位.写博客是我2017年定下的目标之一,希望我会坚持下去. 最近打算尝试一下tmux这个神器,于是有了这一篇关于思维方式的Bl ...

随机推荐

  1. 尽量少用Include

    当我们使用EF写查询,尤其是关联到多个表的时候,我们一般习惯使用include关联,但是过多地使用include会带来性能问题.作为替代方法,可以使用多个toList来代替. 改造前:

  2. UITableViewStyleGrouped 模式下 headview 多出一块高度问题

    self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView ...

  3. [开发笔记]-DataGridView控件中自定义控件的使用

    最近工作之余在做一个百度歌曲搜索播放的小程序,需要显示歌曲列表的功能.在winform中采用DataGirdView来实现. 很久不写winform程序了,有些控件的用法也有些显得生疏了,特记录一下. ...

  4. C#常用实例

    1 時間 1.1 顯示在走的時間 控件:TextBox為顯示日期時間,命名為txtDateTimer Timer為時鐘,命名為time private void dtDateTimer_Tick(ob ...

  5. 如何在滚动报表时保持标题可见 (Reporting Services)

    From: https://msdn.microsoft.com/zh-cn/library/bb934257.aspx 对于跨多页的表或矩阵数据区域,可以控制滚动报表时是否始终显示包含列标题的初始行 ...

  6. Android 读写SD卡的文件

    今天介绍一下Android 读写SD卡的文件,要读写SD卡上的文件,首先需要判断是否存在SD卡,方法: Environment.getExternalStorageState().equals(Env ...

  7. [C/C++]C++声明

    [注]本文是Declarations的翻译和注解版. https://msdn.microsoft.com/en-us/library/f432x8c6.aspx 1.声明: 我们通过声明往C++程序 ...

  8. [rfc3261]sip - via header

    在很多情况下,sip并非直达目标主机的,而是要经过很多中间节点服务器.在request消息中,via头域表示当前已走过的节点(每经过一个节点,添加一个via头):在response消息中,via头域表 ...

  9. Oracle 12c与GoldenGate 12c的一些问答

    1. 如何知道一个12c DB是否为容器数据库?(1) container DBSQL> select cdb from v$database;CDB---YES (2) non contain ...

  10. JDK的下载与安装

    一.下载 在Oracle公司的官方网站(www.oracle.com)下载. 二.安装 1.双击运行JDK程序,弹出JDK安装导向窗口,点击“下一步” 2.点击“更改",将安装地址修改为 C ...