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下可以顯示中文字體
注:shape格式不支持中文字體!解析原因:
mapnik使用的版本爲2.2.0(window下最高版本),使用gdal讀取矢量數據時,不支持中文導致的,
解決方案:
- 修改源碼,使gdal支持中文數據;(需自己編譯代碼)
- 使用一下代碼解決:
<Datasource>
<Parameter name="type">shape</Parameter>
<Parameter name="file">../data/280cc7ff4866polygon.shp</Parameter>
</Datasource>
效果如圖: