python操作多个图层的mapnik
来源:互联网 发布:mysql 数据库安全模式 编辑:程序博客网 时间:2024/05/22 11:33
操作单个图层的见之前的文章
vc调用python接口操作mapnik
0.准备工作
1.见之前的文章
2.中国地图包(文件夹里CHN_adm0为国界,CHN_adm1为省界,CHN_adm2为市界)
1.流程
1.新建map
2.创建新图层,包括数据源、样式和规则
3.添加新图层的样式、规则
4.向地图添加刚创建的图层
5.重复2-4步骤添加其他图层
6.渲染到文件
注意:mapnik采用的“画家规则”,即最后添加的图层覆盖之前添加的图层。
2.Python代码
import mapnik#----------create map---------------------m = mapnik.Map(800,600);m.background = mapnik.Color('steelblue');#----------create layer 1-----------------Boundries_layer = mapnik.Layer('Boundries');#----------create layer 1 datasource------Boundries_layer.datasource = mapnik.Shapefile(file='C:\mapnik-v2.2.0\demo\map\CHN_adm0.shp');#----------get layer 1 style & rule------Boundries_style = mapnik.Style();Boundries_rule = mapnik.Rule();#----------set layer 1 Polygon & Line color------Boundries_rule.symbols.append(mapnik.PolygonSymbolizer(mapnik.Color('#f2eff9')));Boundries_rule.symbols.append(mapnik.LineSymbolizer(mapnik.Color('rgb(50%,50%,50%)'),0.1));#----------set layer 1 style & rule------Boundries_style.rules.append(Boundries_rule);#----------append layer 1 style----------m.append_style('Boundries Style',Boundries_style);Boundries_layer.styles.append('Boundries Style');#----------append layer1 to map----------m.layers.append(Boundries_layer);#----------create layer 2-----------------Province_layer = mapnik.Layer('Province');#----------create layer 2 datasource------Province_layer.datasource = mapnik.Shapefile(file='C:\mapnik-v2.2.0\demo\map\CHN_adm2.shp');#----------get layer 2 style & rule-------Province_style = mapnik.Style();Province_rule = mapnik.Rule();#----------set layer 2 Line color---------Province_rule.symbols.append(mapnik.LineSymbolizer(mapnik.Color('rgb(50%,50%,50%)'),0.1));Province_style.rules.append(Province_rule);m.append_style('Province Style',Province_style);Province_layer.styles.append('Province Style');#----------append layer 2 to map----------m.layers.append(Province_layer);#----------create layer 3-----------------City_layer = mapnik.Layer('City');#----------create layer 3 datasource------City_layer.datasource = mapnik.Shapefile(file='C:\mapnik-v2.2.0\demo\map\CHN_adm1.shp');#----------get layer 3 style & rule-------City_style = mapnik.Style();City_rule = mapnik.Rule();#----------set layer 3 Line color---------City_rule.symbols.append(mapnik.LineSymbolizer(mapnik.Color('#ea5506'),0.5));City_style.rules.append(City_rule);m.append_style('City Style',City_style);City_layer.styles.append('City Style');#----------append layer 3 to map----------m.layers.append(City_layer);m.zoom_all();mapnik.render_to_file(m,"CHN_0+1+2.png", 'png');
3.得到结果图片
4.特殊说明
1.city图层边界包含有province边界。
2.图层province和city所指向的文件本来应该分别对应CHN_adm1和CHN_adm2,但这样的话后渲染的city图层曲线将会覆盖掉之前画的province图层,因此代码里改了顺序,先渲染city曲线,再渲染province曲线,这样就能看清楚province边界了。
0 0
- python操作多个图层的mapnik
- vc调用python接口操作mapnik
- python支持下的mapnik安装
- 【GIS】——使用Python bindings操作mapnik
- 用python测试mapnik
- mapnik库的安装
- mapnik的demo运行
- Python使用XML操作mapnik,实现复杂标注(Multi line text symbolizer)
- 【GIS】——使用XML操作mapnik
- mapnik的TextSymbolizer类的功能缺陷
- mapnik在ubuntu14.04上的安装
- mapnik在windows上运行demo python环境搭建
- 在Windows下编译Mapnik的依赖库
- 在Windows下编译Mapnik的依赖库
- Mapnik在CentOS7系统下的编译与安装
- Mapnik与mod_tile的安装及使用 (ubuntu 16.04LTS)
- 【GIS】——mapnik在windows上的安装
- 基于mapnik的地图符号编辑器功能介绍
- 9.zookeeper原理解析-选举之QuorumPeerMain加载
- 模拟新浪微博随便看看栏目
- sgu212:Data Transmission(HLPP最高标号预留推进)
- 在adt-bundle下创建模拟器sdcard,并向sdcard中添加图像文件
- 1139: 出栈序列统计
- python操作多个图层的mapnik
- 在命令行执行python脚本
- !function(){}()——立即执行
- 程序设计入门—Python之第二周作业
- 数据库学习1
- VMware Workstation下VMnet1等虚拟网卡与主机网卡之间的关系
- iOS学习之UIActionSheet的使用
- 90%装修业主都会轻信的10大装修谣言
- JavaScript学习笔记之浅析几种创建对象的方法