Таблица стилей 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