mapnik渲染raster tiff栅格图

2 篇文章 1 订阅

之前的文章写了怎么渲染shp格式的矢量地图,这里记录下怎么渲染栅格图tiff格式。

0.环境配置参考

1.mapnik的demo运行
2.python支持下的mapnik安装
3.几个shape格式、tiff格式地图免费下载网站
4.vc调用python接口操作mapnik
5.python操作多个图层的mapnik

1.需要的文件

1.shp格式1:50m全球海岸线
2.1:50m全球栅格图
注意
文件下载后解压缩的文件名为数字开头,并且有下划线,这些在python里做文件路径的时候跟在\后 ,容易形成转义字符,这里为了方便,改成Coastline.shp Coastline.tiff

2.python代码

import mapnik
#----------create map---------------------
m = mapnik.Map(10800,5400);

m.background = mapnik.Color('white');
#----------create layer 1-----------------
SHP_layer = mapnik.Layer('SHP');
#----------create layer 1 datasource------
SHP_layer.datasource = mapnik.Shapefile(file='C:\coastline\coastline.shp');
#----------get layer 1 style & rule------
SHP_style = mapnik.Style();
SHP_rule = mapnik.Rule();
#----------set layer 1 Polygon & Line color------
SHP_rule.symbols.append(mapnik.PolygonSymbolizer(mapnik.Color('#FFF5EE')));
SHP_rule.symbols.append(mapnik.LineSymbolizer(mapnik.Color('rgb(50%,50%,50%)'),0.1));
#----------set layer 1 style & rule------
SHP_style.rules.append(SHP_rule);
#----------append layer 1 style----------
m.append_style('SHP Style',SHP_style);
SHP_layer.styles.append('SHP Style');
#----------append layer1 to map----------
m.layers.append(SHP_layer);




#----------create layer 2-----------------
RASTER_layer = mapnik.Layer('RASTER');
#----------create layer 2 datasource------
RASTER_layer.datasource = mapnik.Gdal(file='C:\coastline\coastline.tif',band = 1);
RASTER_style = mapnik.Style();
RASTER_rule = mapnik.Rule();
RASTERsym = mapnik.RasterSymbolizer();
RASTERsym.colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_DISCRETE  ,mapnik.Color("transparent"))

for value, color in [
                ( 20, "#7FFFD4"),           
                ( 30, "#76EEC6"),           
                ( 40, "#66CDAA"),
                ( 50, "#458B74"),               
                ( 60, "#DAA520"),           
                ( 70, "#EEDD82"),           
                ( 80, "#7FFFD4"),
                ( 90, "#76EEC6"),
                ( 100, "#66CDAA"),
                ( 110, "#458B74"),            
                ( 200, "transparent"),
        ]:
            RASTERsym.colorizer.add_stop(value, mapnik.Color(color))
RASTER_rule.symbols.append(RASTERsym);
RASTER_style.rules.append(RASTER_rule);
#----------append layer 1 style----------
m.append_style('RASTER Style',RASTER_style);
RASTER_layer.styles.append('RASTER Style');

#----------append layer 2 to map----------
m.layers.append(RASTER_layer);


m.zoom_all();

mapnik.render_to_file(m,"SHPandRASTER.png", 'png');

3.结果截图

原始tiff图
渲染后的png图

4.结果说明

这里可以看到图片的颜色与原版差别很大,这是因为不知道原版用的渲染color数组,实在没办法还原。这里提现个大意即可。

5.参考文档

1.RasterColorizer

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值