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>

效果如圖:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章