mapnik样式表不适用于mapnilk v2.1.0

时间:2013-08-22 07:35:50

标签: openstreetmap mapnik

我使用命令行安装了mapnik

sudo apt-get install -y python-software-properties
echo 'yes' | sudo add-apt-repository ppa:mapnik/v2.1.0
sudo apt-get update
# install core mapnik
sudo apt-get install -y libmapnik mapnik-utils python-mapnik
# install the python binding
sudo apt-get install -y python-mapnik
# confirm mapnik-config returns 2.1.0
mapnik-config -v

当我运行python代码执行import mapnik时,它运行正常。当我尝试使用shape文件生成图像时,它会输出结果。但是当我尝试使用osm文件并使用此链接http://wiki.openstreetmap.org/wiki/Mapnik_Example中给出的样式表osm.xml时,它会给我错误

Traceback (most recent call last): File "render.py", line 6, in <module> mapnik.load_map(m, stylesheet) RuntimeError: Failed to parse expression: "NAME" in style 'CountryLabels' in TextSymbolizer at line 33 of 'mapnik_style2.xml'

我在这里使用TextSymbolizer来显示国家名称。

我在这里做错了什么。任何帮助将不胜感激。 在此先感谢。

1 个答案:

答案 0 :(得分:3)

您引用的示例不是最新的。

它用于mapnik 0.7

  

(注意:此示例中使用的代码不是最新的,用于mapnik 0.7。尝试使用mapnik 2.0+使用以下工作流程重现此图像将无效。]

版本2.1即使对于样式fomat也有很多变化。关于xml样式文件的“NAME”的解析错误来自于此。从Mapnik 2.0开始,使用TextSymbolizer的新语法:

<TextSymbolizer name="[label]" />

变为

<TextSymbolizer>[label]</TextSymbolizer>

此更改与更高版本中引入的文本格式的更改向前兼容。

你的xml样式文件可能更旧(这在你不合适的页面中):

<TextSymbolizer name="name" face_name="DejaVu Sans Bold" size="10" fill="#734a08" dy="18" halo_radius="1" wrap_width="0"/>

注意:节点TextSymbolizer的属性“name”没有方括号。 因此,如果要更改XML样式文件,则需要将[]添加到name - &gt;名称= “[名称]”。如果您需要有关TextSymbolizer的更多信息,可以参考:https://github.com/mapnik/mapnik/wiki/TextSymbolizer

如果您需要另一个示例样式文件来测试,也许这个osm.xml可以帮助: https://trac.openstreetmap.org/browser/subversion/applications/rendering/mapnik/osm.xml?order=name