Таблица стилей mapnik не работает с mapnilk v2.1.0

Я установил 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 это работало нормально. Когда я попытался сгенерировать изображение, используя файл формы, он вывел результат. Но когда я попробовал то же самое с помощью файла osm и использовал таблицу стилей osm.xml, приведенную в этой ссылке http://wiki.openstreetmap.org/wiki/Mapnik_Example это выдает мне ошибку

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,7

(ПРИМЕЧАНИЕ. Код, используемый в этом примере, не является текущим и использовался для mapnik 0.7. Попытки воспроизвести это изображение с помощью mapnik 2.0+ с использованием следующего рабочего процесса не будут работать.]

Версия 2.1 получила много изменений даже для стиля. Отсюда возникает ошибка синтаксического анализа "NAME" файла стиля xml. Начиная с 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"/>

Внимание: атрибут 'name' узла TextSymbolizer не имеет квадратных скобок. Поэтому, если вы хотите изменить свой файл стиля 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

Другие вопросы по тегам