【问题标题】:mapnik stylesheet is not working with mapnilk v2.1.0mapnik 样式表不适用于 mapnilk v2.1.0
【发布时间】:2013-08-22 07:35:50
【问题描述】:

我使用命令行安装了 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

当我运行 import mapnik 的 python 代码时,它运行良好。当我尝试使用形状文件生成图像时,它会输出结果。但是当我尝试使用 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 来显示国家名称。

我在这里做错了吗。任何帮助将不胜感激。 提前致谢。

【问题讨论】:

    标签: openstreetmap mapnik


    【解决方案1】:

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

    它用于 mapnik 0.7

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

    2.1 版甚至在样式格式方面也发生了很大变化。 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 -> name="[name]"。如果需要更多关于TextSymbolizer的信息,可以参考:https://github.com/mapnik/mapnik/wiki/TextSymbolizer

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

    【讨论】:

    • 我正在使用相同的 xml 文件 osm.xml 但它给了我很多错误。 error on line 4 at column 11: PEReference: %entities; not founderror on line 2 at column 38: Entity 'srs900913' not defined
    • 它正在寻找变量“实体”。 %entities; ]> 检查目录“inc”中是否包含所有包含文件,例如“inc/entities.xml.inc”。通常,你有这个 " " 在这个“inc/entities.xml.inc”文件中。
    猜你喜欢
    • 2012-07-27
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多