mapnik设置中文字体显示

mapnik设置中文字体显示

Mapnik 是一个开源的 Python/C++ 地图渲染引擎,他的功能是把数据形式的地图,包含一些地理对象,如地图、层、数据源、特征和地理几何等,通过一个样式表的定义,渲染成位图格式,用来提供 WMS 服务。其核心是一个 C++ 的共享库提供空间数据访问和可视化的算法和模式。该共享库支持多种操作系统,可以在多线程环境下很好的运行,主要面向一些提供 GIS 服务的 Web 应用开发

1、shp中文设置

shp图形需要报存为utf-8格式,arcgis报存的格式为utf-8,通常来说大部分的shp
报存的格式为utf-8

2、code

# coding:utf-8

import mapnik

stylesheet="textstyle.xml"
m=mapnik.Map(1200,800)
mapnik.load_map(m,stylesheet)
m.zoom_all()
mapnik.render_to_file(m,"map.png")

3、配置文件设置

<Map background-color="#c4dff6">
    <Style name="style">
        <Rule>
            <PolygonSymbolizer fill="#f2eff9" />
            <LineSymbolizer stroke="rgb(50%,50%,50%)" stroke-width="0.1" />
            <TextSymbolizer face-name="SimHei Regular" size="12">
            [NAME]
            </TextSymbolizer>
        </Rule>
    </Style>
    <Layer>
        <StyleName>style</StyleName>
        <Datasource>
            <Parameter name="type">shape</Parameter>
            <Parameter name="encoding">GBK</Parameter>
            <Parameter name="file">../data/擦汗ina_region.shp</Parameter>
        </Datasource>
    </Layer>
</Map>

4、成果

中文显示
tip:使用ogr可以避免编码问题

<Layer>
        <StyleName>polygon_style</StyleName>
        <Datasource>
            <Parameter name="type">ogr</Parameter>
            <Parameter name="file">../data/china_region.shp</Parameter>
            <Parameter name="layer">china_region</Parameter>
        </Datasource>
    </Layer>

5、写在最后

本文为自己实践所得结果,解决在实践过程中遇到的问题,文章存在错误请指正,谢谢你的阅读,转载请注征求我的同意,谢谢你的阅读!
linux下需安装SimHei字体库,直接copy到 usr\share\fonts 下使用

windows遇到的问题:

在这里插入图片描述

实践中遇到问题:windows下shape数据不能显示中文字体,同一字体Linux下可以显示中文字体
Windows显示中文字体
注:shape格式不支持中文字体!解析原因:
mapnik使用的版本为2.2.0(window下最高版本),使用gdal读取矢量数据时,不支持中文导致的,
解决方案:

  1. 修改源码,使gdal支持中文数据;(需自己编译代码)
  2. 使用一下代码解决:
<Datasource>
            <Parameter name="type">shape</Parameter>
            <Parameter name="file">../data/280cc7ff4866polygon.shp</Parameter>
</Datasource>

效果如图:

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值