mapnik试用调研

0、之前在ubuntu14.04中,因为某些原因,mapnik安装有问题,影响了后续进程

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

 

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

1.1、brew直接安装,安装的时v3,python相关的binding,只存在于v2

next:先解除某些软链接,再安装v2,又报以下错误,

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

Conflicts with boost-python in main repository.

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

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

build variables:

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

 

估计为,mapnik没有通过版本号来做区分,不同版本在都安装到系统库时冲突,解决软链接也不真正解决问题,所以综合考虑下,采取了以下步骤

2、重新按顺序安装 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即可?

 

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

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

3.2、如果找到实际安装路径,甚至编译安装(有坑,icuuc总也安不上),可以在后续步骤的安装过程中,额外指定mapnik的链接路径

 

4、修改默认链接

系统的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

 

5、链接使用

使用Python,可以渲染出图片

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

something else

1、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顶着。

 

转载于:https://my.oschina.net/mylbs/blog/692610

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值