mapnik试用调研

0、以前在ubuntu14.04中,由于某些缘由,mapnik安装有问题,影响了后续进程python

next:熟悉mapnik的使用,搞懂其基本原理,打通相关关节linux

 

一、在mac中安装mapnik,遇到了些问题ubuntu

1.一、brew直接安装,安装的时v3,python相关的binding,只存在于v2api

next:先解除某些软连接,再安装v2,又报如下错误,python2.7

This formula is keg-only, which means it was not symlinked into /usr/local.ui

Conflicts with boost-python in main repository.this

Generally there are no consequences of this for you. If you build yourspa

own software and it requires this formula, you'll need to add to yourcode

build variables:orm

    LDFLAGS:  -L/usr/local/opt/boost-python159/lib

 

估计为,mapnik没有经过版本号来作区分,不一样版本在都安装到系统库时冲突,解决软连接也不真正解决问题,因此综合考虑下,采起了如下步骤

二、从新按顺序安装 mapnik2,mapnik

发现一个以前被忽略的问题,即使从新安装,此库所在位置也未加入到python的系统库路径,须要按照提示执行如下操做

$mkdir -p /Users/wangyao/Library/Python/2.7/lib/python/site-packages

$echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/wangyao/Library/Python/2.7/lib/python/site-packages/homebrew.pth

结果,python的绑定搞定了,可使用python写些代码验证了,由于mapnik其实是v3,一般的示例代码中,import mapnik2,会引起一个deprecated的warning,

wangyao:mapnik wangyao$ python

Python 2.7.10 (default, Oct 23 2015, 18:05:06) 

[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> import mapnik2

/usr/local/lib/python2.7/site-packages/mapnik2/__init__.py:27: DeprecationWarning:  mapnik2 module has been deprecated,

        please use 'import mapnik' 

  warnings.warn(msg, DeprecationWarning)

>>> 

>>> import mapnik

>>> exit()

 

next: 这个问题可分3个层次来看

1) 这个warning应该就是某文档中提到过的异常,其发生机理如上所示,解决方式可再翻阅文档(我也没记);

2) 这个warning是个warning,也能够无论,或者若是认为该库开发人员坚持使用同一个key(以致于先安装mapnik(3)就会阻碍后续mapnik2的安装),能够预判其v2和v3的接口在api层面是兼容的,简单的说,就是将import mapnik2改成import mapnik,先看下效果

3) 整个渲染体系似没有涉及到python,这个python-binding似没必要要,那就是直接使用系统自带的包管理系统安装mapnik便可?

 

三、以前的ubuntu问题,实际上是后续步骤中的cpp代码中,用到了这个库,但未能在path中找到。这个问题待解决

3.一、找到ubuntu中得默认安装路径,或者能够深刻研究一下为什么按包管理的方式安装仍然未能被包含在include/link path中,不出意外,也应该会与开发者不区分版本的安装方式有关

3.二、若是找到实际安装路径,甚至编译安装(有坑,icuuc总也安不上),能够在后续步骤的安装过程当中,额外指定mapnik的连接路径

 

四、修改默认连接

系统的link还在mapnik2得,能够经过如下方式改到连接mapnik

wangyao:mapnik wangyao$ brew link --overwrite mapnik

Linking /usr/local/Cellar/mapnik/3.0.9_1... 808 symlinks created

 

此期间,未遇到问题,如遇到文件权限问题,能够先试下

chmod 755 /usr/local/lib/pkgconfig

 

五、连接使用

使用Python,能够渲染出图片

但,使用C++遇到问题了,头文件mapnik/map.hpp,一路向下,会找不到一个unicode/uversion.hpp,该头文件是icu定义的,

something else

一、mapnik的编译,总遇到找不到icu的问题,期间安装icu若干次

在stackoverflow中,传送门,找到了(较大可能的)缘由,

The version number (used in the linkage) is set by the ICU headers, so it seems you are compiling against 4.8 but trying to link against something else (such as 4.6). uvernum.h (or in older versions, uversion.h) contains the version #.

 

next:

源码编译是王道。

开源项目,注意选取standalone的(啥都本身干,任劳任怨造各类轮子的),又或者考虑了各类可能性,像写程序同样写Makefile,又与时俱进的项目,也能够列入选择范围。

Java大法好,退C++保平安。

 

接下来,若是还须要熟悉mapnik的一些技术原理,暂时先用Python顶着。

相关文章
相关标签/搜索