switch2osm使用open street map离线地图中文乱码方框解决办法

----------written by shenwenkai-------------

ubuntu linux环境下,按照网址(https://switch2osm.org/serving-tiles/building-a-tile-server-from-packages/提供的方式,执行至sudo /etc/init.d/renderd restart

打开http://localhost/osm/slippymap.html就可以看到样例图;但是如果不出意外,中文会出现方框,无法正常显示。

下面说明解决方法:

  • 1)安装unifont字体

sudo apt-get install unifont

  • 2)修改/etc/mapnik-osm-data/inc/fontset-settings.xml.inc的内容为:

<!--Settings for Mapnik Fonts

To see the fonts you have installed with Mapnik do:

ls `python -c "import mapnik;print mapnik.fontscollectionpath"`-->

<FontSet name="book-fonts">

  <Font face-name="unifont Medium" />

</FontSet>

<FontSet name="bold-fonts">

  <Font face-name="unifont Medium" />

</FontSet>

<FontSet name="oblique-fonts">

  <Font face-name="unifont Medium" />

</FontSet>

修改/etc/renderd.conf的内容为:

[renderd]

stats_file=/var/run/renderd/renderd.stats

socketname=/var/run/renderd/renderd.sock

num_threads=4

tile_dir=/var/lib/mod_tile ; DOES NOT WORK YET

[mapnik]

plugins_dir=/usr/lib/mapnik/2.0/input

font_dir=/usr/share/fonts/truetype/unifont

font_dir_recurse=true

[default]

URI=/osm/

XML=/etc/mapnik-osm-data/osm.xml

DESCRIPTION=This is the standard osm mapnik style

;ATTRIBUTION=&copy;<a href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and <a href=\"http://wiki.openstreetmap.org/w\

iki/Contributors\">contributors</a>, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>

;HOST=tile.openstreetmap.org

;SERVER_ALIAS=http://a.tile.openstreetmap.org

;SERVER_ALIAS=http://b.tile.openstreetmap.org

;HTCPHOST=proxy.openstreetmap.org

  • 3)修改/etc/mapnik-osm-data/osm.xml的关键词,把配置文件中的FontSet name="bold-fonts"等字体集设置全部改为字符类型设置face-name="unifont Medium"。
  • 4)删除缓存文件 sudo rm -rf /var/lib/mod_tile/default/*

再次打开,中文名称应该就可以正常显示了。

附加:

可以根据如下命令的运行情况,来判断mapnik是否正确运行。

sudo su www-data

$ renderd –f

renderd[26014]: Rendering daemon started

renderd[26014]: Parsing section renderd

renderd[26014]: Parsing render section 0

renderd[26014]: Parsing section mapnik

renderd[26014]: Parsing section default

renderd[26014]: config renderd: unix socketname=/var/run/renderd/renderd.sock

renderd[26014]: config renderd: num_threads=4

renderd[26014]: config renderd: num_slaves=0

renderd[26014]: config renderd: tile_dir=/var/lib/mod_tile

renderd[26014]: config renderd: stats_file=/var/run/renderd/renderd.stats

renderd[26014]: config mapnik:  plugins_dir=/usr/lib/mapnik/2.0/input

renderd[26014]: config mapnik:  font_dir=/usr/share/fonts/truetype/unifont

renderd[26014]: config mapnik:  font_dir_recurse=1

renderd[26014]: config renderd(0): Active

renderd[26014]: config renderd(0): unix socketname=/var/run/renderd/renderd.sock

renderd[26014]: config renderd(0): num_threads=4

renderd[26014]: config renderd(0): tile_dir=/var/lib/mod_tile

renderd[26014]: config renderd(0): stats_file=/var/run/renderd/renderd.stats

renderd[26014]: config map 0:   name(default) file(/etc/mapnik-osm-data/osm.xml) uri(/osm/) htcp() host()

renderd[26014]: Initialising unix server socket on /var/run/renderd/renderd.sock

renderd[26014]: Created server socket 5

renderd[26014]: Renderd is using mapnik version 2.0.0

renderd[26014]: DEBUG: Loading font: /usr/share/fonts/truetype/unifont/unifont.ttf

Running in foreground mode...

renderd[26014]: Starting stats thread

时间: 2024-07-31 18:45:51

switch2osm使用open street map离线地图中文乱码方框解决办法的相关文章

详解get请求和post请求参数中文乱码的解决办法

首先出现中文乱码的原因是tomcat默认的编码方式是"ISO-8859-1",这种编码方式以单个字节作为一个字符,而汉字是以两个字节表示一个字符的. 一,get请求参数中文乱码的解决办法 对于get请求解决中文乱码有两种途径一种是修改tomcat默认的编码方式为"UTF-8" 在tomcat的server.xml里把 <Connector connectionTimeout="50000" port="8080" pro

C#中WebClient中文乱码的解决办法

原文:C#中WebClient中文乱码的解决办法 第一次尝试: string question = textBox1.Text.ToString(); WebClient youdao = new WebClient(); youdao.Encoding = System.Text.Encoding.GetEncoding("GB2312"); Uri uri = new Uri("http://xxxxxxxxxxxxxx"); textBox1.Text =yo

resin后台输出中文乱码的解决办法!

最近从tomcat移植到resin,发现这东西不错啊! 只是后台输出时有时候中文会乱码. 现在找到resin后台输出中文乱码的解决办法: 编辑conf/resin.con文件: <!--javac compiler="internal" args="-source 1.5"/--> 修改成这样: <javac compiler="javac" args="-encoding utf-8"/> 重启服务器

get请求和post请求参数中文乱码的解决办法

get请求参数中文乱码的解决办法 在tomcat的server.xml里的Connector加个URIEncoding="UTF-8",把 <Connector connectionTimeout="50000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/> 改为 <Connector connectionTimeout=&qu

Android 关于HttpClient上传中文乱码的解决办法

使用过HttpClient的人都知道可以通过addTextBody方法来添加要上传的文本信息,但是,如果要上传中文的话,或还有中文名称的文件会出现乱码的问题,解决办法其实很简单: 第一步:设置MultipartEntityBuilder的编码方式为UTF-8. builder.setCharset(Charset.forName(HTTP.UTF_8));//设置请求的编码格式 第二步:创建ContentType对象,指定UTF-8编码. ContentType contentType= Con

[MAC Eclipse] Eclipse for MAC 中文乱码的解决办法

笔者将在windows下的eclipse写的代码拷贝到MAC下,发现中文会出现乱码. 最初笔者遇到这个问题的时候,在网络上寻找了解决办法,出来的第一个网页(http://blog.csdn.net/woaifen3344/article/details/45023351),发现解决无效. 后来尝试得到其它办法.如下. 再回到页面,转换成功. 链接地址:http://www.ithao123.cn/content-9725229.html

关于HttpClient上传中文乱码的解决办法

使用过HttpClient的人都知道可以通过addTextBody方法来添加要上传的文本信息,但是,如果要上传中文的话,或还有中文名称的文件会出现乱码的问题,解决办法其实很简单: 第一步:设置MultipartEntityBuilder的编码方式为UTF-8. builder.setCharset(Charset.forName(HTTP.UTF_8));//设置请求的编码格式 第二步:创建ContentType对象,指定UTF-8编码. ContentType contentType= Con

Zabbix 图形中文乱码的解决办法

如图,图下方有□的地方本应该是中文字符,但是默认情况下不会正常显示 zabbix乱码是怎么照成的呢? zabbix使用DejaVuSan.ttf字体,不支持中文,导致中文出现乱码.解决方法很简单,把我们电脑里面字体文件传到zabbix服务器上. 这里我上传的微软雅黑字体. 上传目录是zabbix的web文件目录 /var/www/html/zabbix/fonts/    //该目录下默认就只有一个字体文件DejaVuSans.ttf 我这里上传的是 msyh.ttf (微软雅黑)字体. 上传完

CentOS中文乱码之解决办法

在学习Linux的过程中,最先碰到的是通过SSH终端连接时发现有乱码出现,使用这篇文章先从这里说起. 在 ssh , telnet 终端中文显示乱码解决办法#vim /etc/sysconfig/i18n 将原内容:LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" 修改为: LANG="zh_CN.GB18030" LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh