RU:Maperitive book

From OpenStreetMap Wiki
Jump to navigation Jump to search

Исходное руководство расположено по адресу: http://maperitive.net/docs/manual/

Прим.: исходное руководство само местами недописано , не очень подробное и не совсем актуально.

Сайт программы: http://maperitive.net/

Страница wiki: RU:Maperitive

Maperitive- десктопное приложение для рендеринга карт из данных OpenStreetMap и GPS с использованием настраиваемых стилей.

Командная строка

Формат аргументов командной строки в общем виде:

Maperitive [ключи] [файл скрипта 1] [файл скрипта 2] ... [файл скрипта N]

Описание аргументов командной строки

Запуск произвольных скриптов

Запуск Maperitive с последующим выполнением одного или нескольких скриптов (script, сценарий, последовательность команд) осуществляется командой вида:

Maperitive script1.mscript script2.mscript script3.mscript

Скрипты будут выполняться в прямом порядке их следования в командной строке, т.е. "script1", потом "script2", и в конце "script3".

Отображение подсказки

Применение ключей "-h", или эквивалентного "-?", или эквивалентного"-help" приводит к отображению краткой подсказки по командной строке.

Maperitive -h

Скрипт по умолчанию при запуске

По умолчанию Maperitive при запуске выполняется скрипт "default.mscript" ,находящийся в папке "Scripts" в папке программы. При запуске с указанием выполнения пользовательских скриптов, скрипт по умолчанию не выполняется. Отключить выполнение скрипта по умолчанию при запуске или дать указание выполнить скрипт по умолчанию несмотря на определённые для запуска пользовательские скрипты можно с помощью ключей "-defscr" или эквивалентного "-defaultscript" со значениями "true" или "false" (если значение опущено- предполагается "true").

Maperitive -defaultscript=false

-запускает Maperitive без выполнения скрипта по умолчанию.

Maperitive myscript.mscript

-запускает Maperitive и выполнение скрипт "myscript.mscript" без выполнения скрипта по умолчанию.

Maperitive -defaultscript myscript.mscript

-запускает Maperitive и выполнение скрипт по умолчанию, затем "myscript.mscript".

Автозавершение работы Maperitive после выполнения скрипта

По умолчанию Maperitive продолжает работать после выполнения всех скриптов. Для задач автоматизации, возможно потребуется закрывать Maperitive после выполнения скрипта. Такое поведение определяется ключами "-exa" или эквивалентным "-exitafter" со значениями "true" или "false" (если значение опущено- предполагается "true").

Maperitive -exitafter myscript.mscript

-после выполнения "myscript.mscript" Maperitive закрывается.

Часто задаваемые вопросы

Контакты

Задать вопросы

Q: Где лучше задать вопросы о Maperitive?

В Maperitive's Google Group очень много хороших людей, которые будут рады помочь и ответить на Ваши вопросы.

Сообщить об ошибках

Q:Куда лучше всего сообщить о найденных в Maperitive ошибках?

Если в ходе работы программы появилось сообщение об ошибке, лучше всего будет нажать кнопку "Report Bug", после чего откроется почтовый клиент с готовым к отправке сообщением, содержащим техническую информацию.

Если вы заметили неправильное поведение программы, пошлите письмо кликнув "Send Feedback" в меню "Help" или сообщите об ошибке на Maperitive's User Feedback site.

Предложить функционал

Q:Я бы хотел иметь функцию X в Maperitive.

Функции, которые могли бы быть полезны и для других пользователей Maperitive, можете предложить на Maperitive's User Feedback site.

Насчёт специализированных функций, рекомендую обращаться непосредственно ко мне, и мы обсудим подробнее. Если вам это нужно для коммерческого использования, прочтите раздел "лицензирование для коммерческого использования и поддержка".

Связаться с автором

Вы можете связаться непосредственно со мной написав на адрес поддержки Maperitive ("Send Feedback" в меню "Help" в Maperitive) или через мой блог.

Вопросы начинающих

Мои правила рендеринга карты не найдены

Q:Запустил Maperitive и загрузил правила рендеринга (rendering rules, правила визуализации, графического представления данных OSM), но на карте ничего не изменилось?

По умолчанию, Maperitive показывает те же тайлы (tile, фрагмент растровой карты) карты OpenStreetMap, что и на главной странице сайта OSM.

Правила рендеринга могут быть применены к векторным данным, таким как файлы OSM и GPX. Так что сначала необходимо загрузить векторные данные через "Open map sources" из меню "File" или "Download OSM data" из меню "Map".

После загрузки данных отключите слой "Web map (OSM Mapnik)" в списке слоёв в окошке справа снизу.

Обычное использование

Установление связи через прокси- сервер

См. раздел "прокси- сервера".

Команды

Ошибка "Anonymous arguments are not allowed here"

Q:Когда ввожу команду, например:

set-setting map.decoration.copyright value=false

Получаю сообщение об ошибке "Anonymous arguments are not allowed here". Что не так?

Короткий ответ: необходимо указать имя аргумента команды:

set-setting name=map.decoration.copyright value=false

Длинный ответ: существует два типа команд в Maperitive:

  • команды с одним аргументом
  • команды с несколькими аргументами

Команда "set-setting" имеет несколько аргументов, так что Maperitive ожидает что будут указаны имена аргументов (так как некоторые аргументы могут быть необязательными).

Напротив, имена аргументов в команд с одним аргументом не указываются.

Я намереваюсь улучшить эту систему в ближайшем будущем, так как это причиняет головные боли многим пользователям.

Правила рендеринга

Как мне писать коментарии

Строка комментария начинается с символов "//".

// это комментарий

Как определить правила рендеринга для отношений

Указав на них при определении объектов рендеринга (features), например:

features
	lines
		cycling route : relation[type=route AND route=bicycle]
...
rules
	target : cycling route
...

Это пример для объектов которые должны быть отображены как линии. Площадные объекты должны быть определены в подсекции "areas".

Как выбрать какой текст будет отображаться

Установив в качестве свойства (property) символа (map symbol) текстовой надписи имя тэга (ключ) который должен быть отображён.

define
	text : int_name

По умолчанию, отображается значение тэга "name".

Обратите внимание, в ближайшем будущем функционал будет расширен возможностями более сложного построения текста.

Поддерживает ли Maperitive направление шрифтов справа налево

Ограниченно поддерживает. См. описание свойства "text-direction".

Могу ли я сделать переносы в тексте

В настоящий момент- нет, но скоро это будет возможно.

Могу ли я использовать иконки в формате SVG для рендеринга карты

К сожалению, для платформы .NET нет хороших библиотек для рендеринга SVG, так что единственный вариант- написать её с нуля. Это большой объём работы, так что поддержки SVG иконок пока не будет.

Альтернативный вариант- сконвертировать иконки из SVG в формат PNG и сохранить их в папку "Cache/Images directory". Так же я скоро добавлю поддержку загрузки иконок с диска.

Inkscape предоставляет интерфейс командной строки для такого преобразования: http://old.nabble.com/convert-pdf-to-svg-from-command-line-td17797689.html

Рендеринг в общем

Как мне увеличить максимальный уровень масштаба

Задав параметру "map.max-zoom" нужное значение условного масштаба (zoom level) командой вида:

 set-setting name=map.max-zoom value=21

В данном примере устанавливается максимальное значение условного масштаба 21. Возможно, потребуется перезапустить Maperitive чтобы изменения вступили в силу.

Я не рекомендую увеличивать максимальный масштаб до больших значений, поскольку это может повлиять на производительность или даже привести к крэшу программы.

Как мне исключить надписи при рендеринге карты

См. раздел "Стадии рендеринга карты" чтобы сделать это самым простым способом.

У меня на карте наводнение

См. раздел "рендеринг береговой линии и моря" о причинах этого.

Гипсометрический слой вместе с OSM

Q:Возможно ли наложить гипсометрический слой (hypsometric, карта высот в условных цветах) на веб- карту (Web Map layer)?

Maperitive не предоставляет такой возможности по простой причине- это будет выглядеть ужасно. Единственный способ показать оба слоя- смешать их (поскольку веб- карта OSM имеет непрозрачный фон). Это означало бы, что все элементы карты будут смешаны с другим слоем, включая надписи, дороги и пр., и их было бы сложно различить.

Генератор тайлов создаёт перемешанные друг с другом тайлы

Это, возможно, происходит из- за того, что Вы выключили слой "Map decoration". Этот слой отображает цвет фона, и без него Maperitive просто не очищая фон повторно использует ранее нарисованое изображение.

Веб- карты

Некоторые тайлы веб- карты отсутствуют в экспорте

Q:Иногда когда я экспортирую в виде растра изображение, включающее веб- карты, некоторые тайлы отсутствуют.

Maperitive ограничение количества тайлов веб- карты единовременно находящихся в памяти. Так что если Вы попытаетесь экспортировать большое изображение карты, при этом будет превышен этот предел, и Maperitive не сможет отобразить все тайлы.

Вы можете увеличить этот предел установив большее значение параметра "webmap.max-loaded-tiles" командой вида:

set-setting name=webmap.max-loaded-tiles value=1000

В данном примере Maperitive получает указание держать 1000 тайлов в памяти.

Экспорт в формат SVG

См. описание команды "export-svg".

Лицензирование и связанное с этим

Где исходный код?

Q:Я бы хотел увидеть исходный код Maperitive?

Не можете. Maperitive- не программа с открытым исходным кодом.

Q:Но Вы используете сторонние библиотеки с открытым исходным кодом!?

Лицензии всех сторонних библиотек находятся в папке "licenses" в папке программы. Ни одна из сторонних библиотек не лицензируется по GPL (или какой- либо другой требующей раскрытия исходного кода производной программы).

Если Вы считаете, что есть какие- либо несоответствия с лицензиями сторонних библиотек, свяжитесь со мной. Я- убеждённый сторонник уважительного отношения к тяжёлому труду других людей и соблюдаю условия лицензий сторонних библиотек.

Q:Почему исходный код Maperitive не открыт?

Хотя я верю в идеологию программного обеспечения с открытым исходным кодом, выпустил некоторое количество проектов с открытым кодом, я отказался от этого в случае с Maperitive. Существует несколько причин для этого:

  • Код нестабильный, много изменений вносится вежду релизами, поскольку Maperitive не достиг полного набора функциональных возможностей (и даже не близок к этому). Я просто не имею свободного времени чтобы гарантировать какую- либо обратную совместимость кода между версиями. Это не проблема только пока я один пишу код.
  • Код не очень хорошо документирован, частично из- за нестабильности, частично из- за лени. Я не верю в полезность опубликования недокументированного кода.
  • Опубликование исходного кода подразумевало бы, что большая часть времени будет посвящена дискуссиям и ответам на вопросы ("почему Вы сделали это так?", "я думаю, это можно улучшить", "как мне сделать это?"). Это сделало бы дальнейшую разработку Maperitive трудной из- за нехватки времени.
  • Maperitive был рожден из моего видения мощного и удобного программного обеспечения для картографии. Трудно сохранить видение и направление разработки как только проект становится совместным. Совместный проект требовал бы отказа от некоторых вещей (вроде свободы изменения кода, качества кода, свободного времени для работы над новыми функциями) в обмен на (предположительно) большую производительность разработки. В данный момент цена перевешивает выгоды.

Он действительно бесплатный?

Q:Вы говорите, Maperitive бесплатный. Он действительно бесплатный и будет оставаться бесплатным?

Да, он бесплатный в том смысле, что Вы не должны ничего платить за него. Моя долгосрочная цель состоит в том, чтобы сделать Maperitive первоклассным продуктом с двумя или более версиями. Основная- будет всегда свободна и будет включать все функциональные возможности для необходимые для картографов- любителей и OSM- картографов. Для пользователей, которым требуются более продвинутые вещи для профессиональной деятельности, я планирую выпустить профессиональное издание, за которое придётся платить. Но цена всё- же должна быть незначительной по сравнению с ценами на подобные программы.

Q:Почему Вам нужны деньги?

К сожалению, разработка не бесплатна. Хорошие средства разработки стоят денег, и без таких средств разработки не может быть хороших программ. Качественные знания так же стоят денег, я постоянно покупаю книги по картографии, геометрии, алгоритмам и графике. И пиво не бесплатно.

Мне действительно нравится разрабатывать программы типа Maperitive, и это само по себе награда для меня. Ещё большая награда- видеть как люди используют Maperitive чтобы делать красивые вещи. Однако, отсутствие возможности заработать на этом означает, что я должен делать другую, менее интересную работу, чтобы заработать на жизнь. Это досадно, у меня много идей, как можно было бы улучшить Maperitive, но моё свободное время ограничено. Поэтому я должен найти баланс между выпуском хороших продуктов и извлечением некоторого количества денег из этого. Посмотрим, как дело пойдёт.

Некоммерческое использование

Q:У меня есть проект с открытым кодом, и я хочу использовать в нём Maperitive. Это возможно?

Это зависит от многих вещей: лицензия Вашего проекта, цели, готовность многое делать самостоятельно и т.д.. Пожалуйста, свяжитесь со мной и расскажите о Вашем проекте, Ваших планах.

Q:Мы- некоммерческая/ гуманитарная организация и нуждаемся в Вашей помощи в области картографии.

Не стесняйтесь связаться со мной.

Коммерческое использование

Типичные случаи, что разрешено делать с Maperitive:

  • Можно рендерить тайлы для коммерческих веб- сервисов.
  • Можно запускать Maperitive на Вашем веб- сервере для предоставления коммерческих услуг.
  • Можно создавать с помощью Maperitive карты и использовать их любым образом, не противоречащим условиям лицензии на исходные картографические данные (лицензии OSM, например). Хотя Maperitive старается указывать принадлежность картографических данных с использованием которых он рендерит карту, Вы как пользователь ответственны за нарушение прав на интеллектуальную собственность.

Некоторые сценарии использования, которые лицензия Maperitive запрещает:

  • Запрещается распространять Maperitive в любой форме сторонним потребителям для коммерческого использования.
  • Нельзя брать деньги за Maperitive.
  • Нельзя дизассемблировать и производить обратную разработку кода Maperitive, и в дальнейшем использовать для коммерческих целей без моего явного разрешения. И, конечно, не стоит рассчитывать на мою помощь в таком случае.

Если сомневаетесь относительно своего случая использования Maperitive, свяжитесь со мной.

Лицензирование для коммерческого использования и поддержка

Q:Я хочу подключить Maperitiveк как библиотеку к своей программе и использовать некоторые его функции для коммерческих целей. Это возможно?

В принципе, да. Многое зависит от Ваших конкретных вариантов использования, так что лучше свяжитесь со мной.

Q:Могу я рассчитывать на документацию к Вашим библиотекам в таком случае?

Я не вижу смысла выпускать библиотеку без документации. Объём документации зависит от Вашего конкретного случая использования.

Q:Я использую Maperitive для коммерческих целей и нуждаюсь в помощи/ новой функции.

Если Вы используете Maperitive согласно лицензии описанной выше, можете связаться со мной, и мы обсудим Ваши потребности и проблемы. Если Вы нуждаетесь в помощи для коммерческого использования и Вы спешите, пожалуйста укажите это в вашем сообщении электронной почты.

Работа на заказ и консультации

Q:Занимаетесь ли Вы работой на заказ связаной с картографией (делаете карты, стили и т.п.)?

Да, свяжитесь со мной.

Содействие проекту

Содействие в разработке

Q:Я хочу помочь, писать код или делать вспомогательную работу. Возможно?

Хотя я очень благодарен любому желающему внести вклад в разработку Maperitive, я вынужден отказаться (по крайней мере на данном этапе разработки). См. раздел "лицензирование" и мои аргументы против раскрытия исходного кода Maperitive.

Содействие в документировании

Q:Документация по Maperitive плохая, многое отсутствует. Я хочу помочь в написании документации.

Документация содержится в комментариях в самодокументированном исходном коде программы. Во время компиляции они извлекаются из всех модулей программы и создаются файлы с wiki- подобным форматированием, которые впоследствии загружаются на сервер в виде статичных HTML- страничек, над которыми сложно организовать работу большого количества людей.

Это одна из причин, по которым редактирование "Maperitive Book" было бы непрактично. Так же, функциональные возможности меняются настолько часто на этой стадии разработки, что я не считаю практичным написание всеобъемлющей документации. Я предполагаю, качество и количество документации будет расти с ростом проекта.

Тем не менее, приглашаю помочь в написании документации и руководств на странице посвящённой Maperitive.

Выбор объектов для рендеринга

В правилах рендеринга выбрать объекты из числа определённых в секции "features" для рендеринга в секции "rules" можно следующими способами:

По имени объекта

Используется для выбора одного объекта.

target : motorway

Это начало правила рендеринга относящегося к объектам, которые были названы "motorway".

По общей части имени объекта

Используется для выбора объектов с похожими названиями для рендеринга одинаковым образом. Далее возможно разделить параметры отображения различных объектов этой группы выбирая их командами "if", "elseif", "for", "elsefor" и "else".

target : *road

В данном примере выбираются все объекты, чьё название оканчивается на "road", например "secondary road", "residential road".

if : *unpaved*

Это начало описания правила для объектов содержащих в названии слово "unpaved", например "horribly unpaved road", "unpaved dirt track".

Подходящие под регулярные выражения

Может пригодиться, например, для выбора нескольких объектов из множества.

if : $regex("(hiking path)|track")

Это начало описания правила для "hiking path" и "track".

Рекомендуется заключать регулярные выражения в кавычки, как в примере. В противном случае возможны проблемы при парсинге (parsing, анализ и интерпретация) текста правил рендеринга.

По типу объектов

Прилагающийся к Maperitive стиль "wireframe.mrules" -хороший пример когда такой способ выбора может быть удобным. Эти правила отображают все линейные объекты одинаковыми линиями.

target : $featuretype(line)

Это начало описания правила для всех линейных объектов.

target : $featuretype(point)

…точечных.

target : $featuretype(area)

…площадных.

target : $featuretype(any)

…всех.

Геопривязанные изображения

Введение

Геопривязанные изображения (изображения карт, аэрофотоснимки и пр. изображения проецируемые на поверхность земли, не геопривязанные фотографии сделаные с уровня земли) поддерживаются Maperitive как один из источников картографических данных. Геопривязанные изображения- это растровое изображение (в форматах PNG, JPEG, TIFF и некоторых других), сопровождённое world- файлом, содержащем информацию о том как расположено это изображение на карте (координаты, масштаб и поворот).

Различные команды, как то "export-bitmap" и "generate-relief-igor" создают такие геопривязанные изображения, которые впоследствии могут быть загружены на карту.

Проецирование изображений

Maperitive поддерживает только неповёрнутые геопривязанные изображения. В общем, поддерживаются только изображения совместимые с географическими проекциями Меркатора (Mercator, цилиндрическая проекция с сохранением углов и увеличением масштаба к полюсам) или эквидистантной (equirectangular, цилиндрическая с сохранением масштаба по одному из направлений), т.к. в настоящее время Maperitive не предоставляет никаких механизмов выпрямления изображений для их преобразования из других проекций. Информация о повороте из world- файла будет проигнорирована и изображение, возможно, не будет правильно расположено на карте.

В world- файле не содержится сведений о картографической проекции в которой изображение было создано. При загрузке геопривязанных изображений созданных не в Maperitive, убедитесь что они в поддерживаемых проекциях.

Экспорт геопривязанных изображений

Команда "export-bitmap" создаёт так же ещё два файла привязки других типов:

  • Google Earth KML -файл. При клике по этому файлу изображение будет отображено на карте в программе Google Earth.
  • OziExplorer MAP -файл привязки программы OziExplorer.

GeoTIFF

GeoTIF -продвинутый формат геопривязанных изображений. Он содержит много больше информации по сравнению с world- файлами. К сожалению, в настоящее время Maperitive не читает и не сохраняет данные о привязке в формат GeoTIFF.

Существуют программы, которые могут сгенерировать world- файл на основе информации, содержащейся в GeoTIFF (сам формат GeoTIFF обратно совместим с TIFF, и Maperitive может открывать содержащееся в нём изображение). В отношении этого так же действуют ограничения связанные с поддерживаемыми географическими проекциями.

Планы на будущее

Надеюсь добавить возможности выпрямления изображений и поддержку формата GeoTIFF в будущем. К сожалению, платформа .NET плохо укомплектована библиотеками для подобных задач, так что реализация потребует большого количества времени.

Прокси- серверы

Обратите внимание, эти функции не были тщательно проверены. Если обнаружатся проблемы, дайте мне знать.

Если Вы подключаетесь через HTTP- прокси, необходимо настроить несколько параметров:

  • Установить в параметры "web.proxy.host" и "web.proxy.port" адрес и порт Вашего прокси- сервера.
  • Если прокси требует аутентификации, необходимо так же установить "web.proxy.username" и "web.proxy.password".
  • Наконец, необходимо включить режим использования прокси- сервера установив в "web.proxy.use-proxy" значение "true".

Единожды настроенные, эти установки будут сохранены в файл пользовательских настроек, и будут использоваться и при последующих запусках Maperitive.

Пример скрипта, настраивающего HTTP- подключение через прокси с аутентификацией:

 set-setting name=web.proxy.host value=myproxy.com
 set-setting name=web.proxy.port value=553
 set-setting name=web.proxy.username value=john
 set-setting name=web.proxy.password value=nobodyknows
 set-setting name=web.proxy.use-proxy value=true

Введение в правила рендеринга

Наборы правил рендеринга (ruleset) хранятся в текстовых файлах с расширением ".mrules" и могут содержать правила рендеринга множества различных объектов. Можно редактировать существующие или создавать и загружать в Maperitive новые.

Встроенные наборы правил

Maperitive идёт с несколькими встроенными наборами правил рендеринга, хранящимися в папке "Rules" в папке программы:

  • default набор по умолчанию (хранящийся в файле "Default.mrules" и зарегистрированный под внутренним именем alias = 'default')
  • wireframe каркасный (Wireframe.mrules ,alias = 'wireframe')
  • стиль Google Maps (GoogleMaps.mrules ,alias = 'googlemaps')
  • hiking стиль туристической карты (Hiking.mrules ,alias = 'hiking')

Стиль по умолчанию

Похож на стиль рендеринга Mapnik, основной на сайте OpenStreetMap. Если не выбран другой, этот стиль используется по умолчанию для рендеринга данных.

Каркасный стиль

Этот набор правил рендеринга отображает все объекты в простом каркасном стиле. Все линейные объекты отображаются простыми тонкими линиями. Все площадные объекты- зелёными полигонами (polygon, многоугольник). Этот стиль может быть полезен чтобы увидеть объекты, не отображаются другими наборами правил рендеринга (стиль default, например, отображает лишь часть типов объектов OSM).

Стиль Google Maps

Похож на стиль Google Maps.

Стиль туристических карт

Напоминает стиль бумажных карт Alpine Association of Slovenia.

Переключение между наборами правил

Чтобы переключить на набор правил рендеринга, например, wireframe, необходимо ввести команду:

use-ruleset alias=wireframe
apply-ruleset

Первая команда, "use-ruleset", указывает Maperitive использовать для рендеринга загружаемых следом данных набор правил под внутренним именем "wireframe". Для применения правил к уже загруженным данным, используется команда "apply-ruleset".

Этими командами можно снова включить стиль default:

use-ruleset alias=default
apply-ruleset

Внутренние имена наборов правил

Наборам правил рендеринга можно (но не обязательно) назначить внутренние имена (alias, псевдонимы). Встроенным наборам правил уже назначены внутренние имена.

Создание собственных наборов правил рендеринга

Первый шаг- это создать новый текстовый файл, скажем, "MyOwn.mrules" в папке "Rules" в папке программы (не обязательно в папке "Rules", но это хороший способ сохранить порядок).

Второй шаг заключается собственно в написании правил в этом файле. За дополнительной информацией см. раздел "введение в правила рендеринга". Мы пропустим этот шаг просто скопировав содержимое некоторых других наборов правил в наш. Например, из wireframe.mrules:

features
	lines
		all lines : 
	areas
		all areas : 
properties
	map-background-color : #181818
rules
	target : all areas
		define
			fill-color : green
			fill-opacity : 0.1
		draw : fill
	target : all lines
		define
			line-color : lightgray
			line-width : 0.5
		draw : line

Теперь чтобы, например, изменить толщину линий, необходимо заменить соответствующую строчку на:

line-width : 5

Следующей командой можно загрузить наш набор правил и применить его к данным:

use-ruleset location=Rules/MyOwn.mrules
apply-ruleset

Набор будет зарегистрировано в списке наборов правил рендеринга Maperitive, и впоследствии его можно будет выбрать без указания пути к файлу.

Список зарегистрированных наборов правил

Единожды зарегистрированный набор правил можно впоследствии выбрать без указания пути к файлу. Просмотреть список зарегистрированных наборов правил можно введя команду:

list-rulesets

Ответ должен быть похож на:

1: D:\Programs\Maperitive\Rules\Default.mrules (default)
2: D:\Programs\Maperitive\Rules\Wireframe.mrules (wireframe)
3: D:\Programs\Maperitive\Rules\GoogleMaps.mrules (googlemaps)
4: Rules/MyOwn.mrules - ACTIVE
Done

Здесь:

  • каждая строка соответствует одному набору, указано так же расположение файла набора правил и его внутреннее имя (если назначено)
  • используемые в настоящее время наборы помечен "ACTIVE"

Назначение внутренних имён правилам

Назначение нашему набору имени "myrules":

use-ruleset location=Rules/MyOwn.mrules as-alias=myrules

Теперь если вывести список наборов правил, он будет выглядеть так:

1: D:\Programs\Maperitive\Rules\Default.mrules (default)
2: D:\Programs\Maperitive\Rules\Wireframe.mrules (wireframe)
3: D:\Programs\Maperitive\Rules\GoogleMaps.mrules (googlemaps)
4: Rules/MyOwn.mrules (myrules) - ACTIVE
Done

Для чего нужны внутренние имена

Такой скрипт, например, не придётся переписывать при изменении имён или расположения файлов правил рендеринга, а только переназначить соответствие внутреннего имени и файла правил:

load-source mymap.osm
use-ruleset alias=myrules
apply-ruleset

Переназначение внутренних имён

Можно в любое время изменить внутреннее имя зарегистрированного набора правил командой вида:

use-ruleset index=4 as-alias=newalias

В этом примере набору правил под номером 4 назначается имя "newalias". Можно таким образом сменить соответствие имени различных файлов наборов правил.

Нельзя назначить встроенным наборам другие имена, и нельзя другим наборам правил назначить имена встроенных.

Удаление наборов правил

Команда "remove-ruleset" позволяет удалить из списка зарегистрированных указанный набор правил. Сам файл набора правил при этом не удаляется.

remove-ruleset alias=sameoldstuff

В данном примере исключён набор с внутренним именем "sameoldstuff".

Расстановка надписей

Расстановка надписей на линейных объектах

Это краткое описание того, как Maperitive расставляет надписи на линейных объектах (улицах, реках и т.п.). Вероятно, в будущем в эти алгоритмы будут вноситься изменения.

В настоящее время, Maperitive пытается расположить текст в пределах ширины улицы, но существует несколько параметров (см. Default.mrules в качестве примера), которые управляют этим.

  1. Maperitive игнорирует возможности расположить текст вдоль линии, если при этом он окажется слишком изломанным. Свойство "lflp.max-allowed-corner-angle" -это максимальный угол (в градусах) на который может загибаться текст на углах.
  2. Свойство "lflp.min-buffer-space" -минимальное свободное пространство (в пикселях) между надписью и концом линии.
  3. Если нет возможности расположить надпись соблюдая вышеперечисленные условия, Maperitive попробует сжать текст по горизонтали. Минимальное значение отношения ширины сжатого текста к нормальной задаётся параметром "lflp.max-compression" (например, значение "1" соответствует запрету сжатия, значение "0.5" -сжатию максимум в 2 раза).

Если все эти условия не могут быть удовлетворены, надпись не отображается. Вы не можете дать указание Maperitive принудительно отобразить определённую надпись, но можете понизить критерии качества и таким образом попытаться добиться отображения надписей.

Можно задать эти установки глобально, для всего набора правил рендеринга, и так же менять их в правилах для отдельных объектов. Таким образом, можно задать разные параметры качества для разных объектов.

В настоящее время Maperitive не распознаёт наложение близко расположенных надписей и дублирующиеся надписи. В ближайшем будущем это планируется улучшить.

Слои карты

Введение

В этом разделе дано краткое описание того, как Maperitive распределяет по слоям (layer) элементы карты при рендеринге. Распределение по слоям влияет на то, какие элементы будут отображены сверху и какие элементы будут закрыты другими.

При написании правил рендеринга, Вы можете влиять на это в значительной степени. Но есть так же некоторые встроенные механизмы, которые позволяют избежать проблем, например, наложения полигона леса поверх текстовой надписи с названием деревни.

Символы карты и распределение по слоям

Каждый символ карты (map symbol) имеет собственный приоритет отображения. Нет никакого смысла отображать текстовую надпись закрытую травяным полем. Поэтому все текстовые символы карты отображаются поверх всех остальных элементов. Следующий приоритет имеют иконки (icon), текст может накладываться поверх них но не наоборот. Следом идут линии (line), контуры (contour), и низший приоритет имеет заливка (fill).

Существуют так же символы карты фон (background) и вода (sea), которые отображаются на самом нижнем уровне.

На что можно повлиять

Выше были описаны основные правила, которые Вы не можете поменять. Можно повлиять на порядок отображения символов одного типа.

  • Порядок следования правил рендеринга (в секции rules набора правил): если правило A определено раньше (выше по тексту) чем правило B, объекты подпадающие под A отображаются поверх объектов B.
  • Порядок следования объектов рендеринга (в секции features) влияет на порядок отображения объектов в рамках правила рендеринга, если оно относится к объектам сразу нескольких типов. Если объект (feature) A определён раньше (выше по тексту) чем объект B, объект A будет (грубо говоря) отображён поверх объекта B.
Вместе с тем нужно учитывать другие упомянутые правила распределения объектов по слоям.

Уровни OSM

OSM тэг "layer" имеет приоритет над упомянутыми выше порядком следования правил и порядком следования объектов. Так что мост с OSM тэгом "layer=1" будет отображён поверх канала с "layer=0", меньшим или не определённым значением этого тэга.

Существует способ переопределить это поведение установив значение свойства "TopmostLayer" равным "true". При этом все объекты будут отображаться как если бы они имели одинаковое и максимально возможное значение тэга "layer". Это особенно полезно для рендеринга отношений, поскольку отношения обычно не имеют тэга "layer", и Maperitive будет использовать значения (а они могут различаться) этого тэга объектов входящих в отношение. Если Вы хотите быть уверенными в том что участники отношений будут отображены на верхнем слое, установите значение свойства "TopmostLayer" равным "true".

Примеры и хитрости

Автор ещё не закончил

Этапы рендеринга

Введение

В ходе каждого этапа изображение карты рисуется поверх полученного на предыдущем. Стадии рендеринга в прямом порядке выполнения:

  1. Фон карты (MapBackground): если на карте нет моря, на этом этапе рисуется фон земли. Если на карте присутствует море, на этом этапе рисуются полигоны моря.
  2. Суша (Landmass): если на карте присутствует море, на этом этапе рисуется земля (поверх полигонов моря).
  3. Растровый фон (BitmapBackground): рисуются растровые изображения подложки и тайлы веб- карты (но только если они сконфигурированы рисоваться на подложке).
  4. Заливка площадных объектов (LandUse).
  5. Растровые изображения переднего плана (BitmapForeground), если они сконфигурированы рисоваться на переднем плане.
  6. Линейные объекты и контуры (Infrastructure).
  7. Иконки и геометрические фигуры (Symbols).
  8. Текстовые надписи (Labels).
  9. Тайлы веб- карты на верхнем слое (BitmapOverlay), если они сконфигурированы рисоваться на переднем плане.
  10. Шкала и масштаб карты (MapLegend).

Приёмы

Присваивая параметрам "map.min-painting-stage", "map.max-painting-stage" и "map.hidden-painting-stages" имена начального этапа, конечного и исключаемых из процесса рендеринга, можно исключить соответствующие элементы карты. Это может быть полезно чтобы, например, сделать карту без надписей не переписывая набор правил рендеринга.

set-setting name=map.hidden-painting-stages value=labels,symbols

В данном примере исключены этап рендеринга надписей и этап рендеринга иконок и геометрических фигур.

Выбор данных для рендеринга

Введение

Как описано в разделе "введение в правила рендеринга", правила рендеринга работают с объектами (feature), определёнными в секции "features" набора правил. Maperitive предоставляет простой язык запросов, используемый чтобы определить, что объект собой представляет. Рассмотрим пример определения объекта (feature):

street : way [highway=residential]

Это определение объекта рендеринга, названного "street", включающего все линии (way) обозначенные OSM тэгом "highway=residential". Текст после двоеточия называется определением (spatial specification). В приведённом примере определение состоит из двух частей:

  • Указание (target) на тип объекта. В данном случае линия (way).
  • Дополнительные условия (spatial condition), уточняющие какие именно объекты OSM будут выбраны. В данном случае, условие- это простое совпадение тэга (пары ключ- значение).

Выбор типа объектов

Существуют следующие типы объектов (target):

  • точка (node), соответствуют точкам OSM (OSM node).
  • линии (way), соответствующие линиям OSM (OSM way).
  • отношения (relation), соответствующие отношениям OSM (OSM relation).
  • контуры (contour), соответствующие горизонталям сечения рельефа по высоте.
  • GPS треки (gpstrack).
  • маршруты (gpsroute).
  • путевые точки (gpswaypoint).
  • точка трека (gpspoint). Может использоваться только на втором уровне вложенных запросов.

Необходимо ли выбирать тип объектов?

Зависит от ситуации. Не обязательно. В некоторых случаях Maperitive может сам понять, какие объекты Вы выбираете.

features
	...
	areas
		parking : amenity=parking
	...

В этом примере определение написано совершенно правильно и будет работать. Здесь объект рендеринга (feature) определён в подсекции площадных объектов (areas), и Maperitive будет выбирать только замкнутые линии с тэгом "amenity=parking". Если же написать определение так:

features
	...
	parking : amenity=parking
	...

Это будет означать, что под определение объекта с названием "parking" будут подпадать и точки, и замкнутые линии, и, что плохо, незамкнутые линии. Чтобы избежать этого, можно явно указать типы:

features
	...
	parking : node[amenity=parking] area[amenity=parking]
	...

Как видите, можно использовать несколько определений (spatial specification) для определения одного объекта рендеринга (feature). В данном примере даётся указание выбирать объекты обоих типов, точки и площадные объекты.

Дополнительные условия

Определяют каким условиям должны удволетворять OSM объекты, чтобы их отобрали для рендеринга. Обычно, эти условия- это соответствие OSM тэга (ключ- значение). Например:

amenity=parking

…означает, что будут выбраны объекты имеющие тэг "amenity" со значением "parking".

Существует несколько способов описать условие:

  • совпадение тэга (ключ- значение).
  • проверка наличия определённого тэга (ключа).
  • сравнение значения тэга с числом.
  • вызов функций.
  • инверсия условия.
  • комбинация нескольких условий с использованием логических операций.

Комбинация тэг- значение

Примеры:

highway=motorway
name="New York"
name:de=Muenchen
"strange key"="strange value"

Необходимо заключать в скобки ключи или значения, содержащие пробелы или другие символы, зарезервированные для языка запросов Maperitive.

Комбинация ключ- несколько значений

Например:

amenity=restaurant OR amenity=fast_food

…выбирает и объекты помеченные тэгом "amenity=restaurant ", и "amenity=fast_food". Для той же цели можно использовать функцию "isOneOf":

@isOneOf(amenity, restaurant, fast_food)

Проверка наличия тэга с любым значением

В определении условия нужно написать только название тэга (ключ).

Highway

Сравнение с числовым значением

Если значение тэга представляет собой число, в описании условия его можно сравнить с константой используя обычные операторы сравнения ">", ">=", "<" и "<=".

population >= 100000

…будут выбраны объекты с тэгом "population" со значением большим или равным 100000. Так же можно сравнивать и нецелые числа:

width > 2.5
Если вдруг значение тэга окажется не числом, условие будет считаться не выполненным, и объект не будет отобран для рендеринга.

Функции

Функции могут быть использованы в описании условий (spatial conditions). Функции могут принимают аргументы и возвращают значение, свидетельствующее о том, выполнено условие или нет.

Функция @isTrue

@isTrue (tag name)

Проверяет равно ли значение тега, чьё название передано в аргументе, одному из значений:

  • true
  • yes
  • 1

Если объект не имеет этого тэга или его значение не равно ни одному из перечисленных, функция возвращает отрицательный ответ.

@isTrue(oneway)
@istrue(trailblazed)
Функция @isFalse

@isFalse (tag name)

Проверяет равно ли значение тега, чьё название передано в аргументе, одному из значений:

  • false
  • no
  • 0
  • объект не имеет такого тэга вообще
@isFalse(oneway)
@isfalse(trailblazed)
Функция @isOneOf Function

@isOneOf (tag name, tag value 1, tag value 2, ..., tag value N)

Проверяет равно ли значение тэга одному из списка следующих аргументов. Если совпадение не найдено , возвращает отрицательный ответ.

@isOneOf(highway, motorway, trunk, primary)
Функция @isMatch

@isMatch (tag name, regular expression)

Проверяет подходит ли значение указанного тэга под регулярное выражение.

@isMatch(name, ".*wald$")

В данном примере отбираются объекты, чьё значение тэга "name" оканчивается на "wald".

Функция @isMulti

@isMulti (tag name, multiplier numeric value)

Проверяет делится ли без остатка значение тэга на переданное во втором аргументе число. Если не делится или значение тэга нечисловое, возвращает отрицательный ответ.

@isMulti(elevation, 100)

В данном примере отбираются объекты, чьё значение тэга "elevation" равно 100 или 200, или 300, или 400 и т.д.

Вложенные запросы

Maperitive поддерживает вложенные запросы (nested queries), как например:

 node[barrier=gate].way[highway=footpath]

Запрос состоит из двух условий:

 node[barrier=gate]

…ищет точки представляющие ворота, и:

.way[highway=footpath]

…действует на результат первого запроса, так что для каждых ворот Maperitive ищет линии которым они принадлежат, и выбирает те что помечены тэгом "highway=footpath".

Можно делать дальнейшие вложения используя синтаксис ".".

Работа над обработкой вложенных запросов всё- ещё не завершена, так что возможно присутствуют баги и не до конца реализованные вещи.

Команды поиска

В дополнение к определению объектов (feature) в правилах рендеринга, Вы можете использовать язык запросов чтобы искать их в интерактивном режиме. Для этого предназначены команды "find" и "find-here". Если, например, в командной строке Maperitive ввести:

find way[highway=residential AND NOT name]

Maperitive будет искать линии "highway=residential" не имеющие тэга "name". Когда первая такая дорога будет найдена, Maperitive выделит её на карте. Для перехода к следующей такой дороге можно использовать команду "find-next", а к предыдущему- "find-prev".

Примеры запросов

 way[]

…находит все линии.

 node[]

…находит все точки.

area [landuse=forest OR natural=wood]

…находит все области, обозначенные как леса.

relation[type=route and route=bicycle and network=icn]

…находит велосипедные маршруты.

node[amenity=parking] area[amenity=parking]

…находит парковки обозначенные точками и парковки обозначенные замкнутыми линиями.

contour[elevation_multiplier=50]

…находит горизонтали с шагом 50метров.

Highway

…находит все линии с тэгом "highway" независимо от его значения.

NOT highway

…находит все линии кроме помеченных тэгом "highway" с любым значением.

way[highway and not name]

…находит все линии "highway" не помеченные тэгом "name".

way[highway=footpath].node[barrier=gate]

…находит все ворота на пешеходных дорожках.

 node[barrier=gate].way[highway=footpath]

…находит все пешеходные дорожки, на которых стоят ворота.

 gpstrack[].gpspoint[]

…находит все точки трэка.

Выборка GPS данных

Данные GPS в Maperitive обрабатываются похожим образом, как и данные OSM. Вы можете выполнять запросы на треках, маршрутах и путевых точках так же как Вы делали бы это на OSM точках, линиях и отношениях.

Выборка трэков

Трэки могут быть выбраны путём указания в качестве типа объекта (target) "gpstrack".

 gpstrack[]

В данном примере будут отобраны все из загруженных источников данных (map source).

gpstrack[].gpspoint[]

В данном примере будут отобраны все точки всех треков.

GPS треки так же имеют следующие тэги, которые могут быть использованы для фильтрования результатов поиска:

  • name
  • comment
  • description
  • sourceOfData
  • trackNumber
  • trackType
Эти тэги в настоящее время не очень полезны для фильтрования. Следующие версии Maperitive будут иметь более совершенную систему фильтрования, которая будет включать скорости, высоты и прочее.

Выборка маршрутов

GPS маршруты могут быть выбраны путём указания "gpsroute" в качестве объекта для рендеринга (target).

gpsroute[]

…будут отобраны все маршруты.

 gpsroute[].gpspoint[]

…будут отобраны все точки всех маршрутов.

GPS маршруты имеют те же тэги, что и треки, и они могут быть использованы для фильтрования результатов поиска.

Выборка путевых точек

GPS путевые точки (отдельные точки, не те из которых состоят треки и маршруты) могут быть выбраны путём указания "gpswaypoint" в качестве объекта для рендеринга (target).

 gpswaypoint[]

…будут отобраны все путевые точки из загруженных источников картографических данных.

GPS путевые точки имеют следующие тэги, которые могут быть использованы для фильтрования результатов поиска:

  • name
  • comment
  • description
  • sourceOfData
  • elevation
  • magneticVariation
  • geoidHeight
  • symbol
  • pointType
  • fixType
  • numberOfSatellites
  • hdop
  • vdop
  • pdop
  • ageOfGpsData
  • dgpsId

Рендеринг береговой линии и моря

Для рендеринга моря снаружи линии берега, Maperitive использует OSM тэг "natural=coastline". Это может быть сделано корректно только если полигон береговой линии замкнут. Во многих случаях это приводит к проблемам, потому что пользователи загружают выгрузки регионов, которые содержат только часть данных о линии берега. В этих случаях Maperitive рендерит частично затопленные карты.

Проблему можно обойти изменив поведение обработчика береговой линии. Его определяет параметр "map.coastline.mode", который может принимать следующие значения:

  • "ignore" -береговая линия будет проигнорирована и море не будет отображено.
  • "loose" -если данные содержат хотя бы один замкнутый полигон береговой линии, море будет отображено. Но при этом если присутствуют ещё другие незамкнутые береговые линии, территория ограничиваемая ими будет затоплена.
  • "strict" -море будет отображено только если все полигоны береговых линий будут замкнутыми.

Правила рендеринга (продвинутое объяснение)

Может показаться что всё очень сложно, но нет, всё просто. Правила рендеринга в Maperitive можно описать различными путями с одинаковым результатом, а можно и с чуть- чуть или совсем другим…

Свойства правил рендеринга и потоки

Если Вы хотите что- нибудь нарисовать, необходимо решить какой цвет использовать, какую толщину линий и т.п. Это задаётся через свойства рендеринга (Rendering Properties), такие как "line-color", "border-width" и прочие.

Важно знать, что все свойства (Rendering Properties) имеют значения по умолчанию, которые будут использоваться если вы не зададите явно другие значения. Обработку каждого правила Maperitive начинает с присваивания свойствам значений по умолчанию.

Например, нет необходимости назначать свойству текстовой надписи ключ OSM тэга "name", поскольку это и есть значение по умолчанию. Если же необходимо выводить, например, название на другом языке, надо написать так:

define
	text : name

Чтобы не писать это в каждом правиле, можно переназначить свои значения по умолчанию в секции "properties":

properties
	text : name:fr

Внутри каждого правила можно изменять значение свойств используя команду "define". Границы действия этого изменения:

  • начинает действовать на команды идущие после команды "define" изменения свойства
  • заканчивает действовать после последней команды в текущем правиле

Пример (опущено определение объектов рендеринга "place country" и "place city "):

...
properties
	font-family : Tahoma
	
target : place country
	define
		font-family : Times New Roman
	draw : text
	
target : place city
	draw : text

Результат будет таков:

  • надписи на объектах "place country" будут написаны шрифтом "Times New Roman", поскольку он явно назначен в теле правила до команды отображения текста
  • надписи на объектах "place city" будут написаны шрифтом "Tahoma", поскольку после завершения предыдущего правила шрифт сбрасывается на значение по умолчанию

Условное ветвление потока и деревья принятия решения

Внутри отдельного правила возможно ветвить назначение свойств или выполнение команд рендеринга. Для этого используются команды "if", "elseif", "for", "elsefor" и "else".

Features
	major road: …
	medium road: …
	minor road: …

target : *road
	if : major road				
		define					(A)
			line-width : 20
	else
		define					(B)
			line-width : 10
	draw : line					(C)
Буквы в скобках вставлены только для обозначения команд в дальнейших пояснениях. Это не поддерживаемый формат комментариев и в тексте набора правил их быть не должно.

Результат:

  • для "major road" будут выполнены команды A и C
  • для "medium road"- B и C
  • для "minor road"- B и C

Тот же результат (изображение карты) может быть достигнут другим путём:

...

target : *road
	if : major road				
		define					(A)
			line-width : 20
		draw : line				(B)
	else
		define					(C)
			line-width : 10
		draw : line				(D)

Но команды при этом будут выполняться следующим образом:

  • для "major road" будут выполнены команды A и B
  • для "medium road"- C и D
  • для "minor road"- C и D

Можно вложить условные команды:

...

target : *road
	if : major road				
		define						(A)
			line-width : 20
	else
		if : medium road
			define					(B)
				line-width : 15
		else
			define					(C)
				line-width : 10
	draw : line						(D)

Результат:

  • для "major road" будут выполнены команды A и D
  • для "medium road"- B и D
  • для "minor road"- C и D

Можно остановить некоторые потоки выполнения правила:

...

target : *road
	if : major road				
		define						(A)
			line-width : 20
	else
		if : medium road
			define					(B)
				line-width : 15
		else
			stop					(C)
	draw : line						(D)

Результат:

  • для "major road" будут выполнены команды A и D
  • для "medium road"- B и D
  • для "minor road"- C и команда рендеринга "draw" выполнена не будет

Выше были представлены примеры использования возможности условного ветвления внутри других условных команд. Но более правильный и удобочитаемый способ добиться того же эффекта таков:

...

target : *road
	if : major road				
		define						(A)
			line-width : 20
	elseif : medium road
		define						(B)
			line-width : 15
			
	elseif : ...
		...
			
	else
		define						(C)
			line-width : 10
	draw : line						(D)

Результат:

  • для "major road" будут выполнены команды A и D
  • для "medium road"- B и D
  • для "minor road"- C и D

Правила рендеринга (введение)

Что такое правила рендеринга

В правилах рендеринга определяется что и как будет отображено на карте. Написание набора правил начинается с определения объектов рендеринга (features), к которым впоследствии будут применены правила (rules).

Наборы правил рендеринга представляют собой простые текстовые файлы, которые можно редактировать текстовыми редакторами.

Зачем нужно вводить объектов рендеринга

Некоторые люди могут быть удивлены, зачем вводить новые категории объектов, если они уже классифицированы через OSM тэги. Есть несколько причин:

  1. Верно, что Maperitive в настоящее время работает главным образом на OSM данных. Но в будущем возможности будут расширяться. Вы уже сейчас можете использовать другие типы географических данных: контуры горизонталей рельефа. И будут другие вещи, которые можно будет рендерить: например GPS треки и маршруты, карты рельефа и т.д.
  2. Можно в правиле указать (target) несколько связанных объектов рендеринга (features)
  3. В OSM очень либеральные и не всегда строго определённые правила тэгирования и возможно потребуется переопределить или уточнить классификацию объектов. Вместе с тем, Вы возможно захотите ввести свою классификацию. И это можно сделать на промежуточном этапе определения объектов рендеринга (features).
  4. Возможно отделить определение объектов рендеринга (features) от описания правил (rules) в соответствии с которыми они отображаются. Т.о. можно легко создавать новые стили рендеринга не определяя заново классификацию объектов вместе с правилами.

Определение объектов рендеринга

Типы объектов рендеринга

Типы объектов рендеринга (features):

  1. Points точечные объекты (например, вершины гор). В OSM точечные объекты определяются установкой тэгов на точки (OSM node).
  2. Lines линейные объекты (например, дороги). Линейным объектам соответствуют OSM линии (OSM way).
  3. Areas площадные объекты (например, леса). Им соответствуют замкнутые OSM линии, полигоны (OSM polygon).

Описание объектов

Допустим, требуется сделать туристическую карту, на которой будут отображены горные вершины, пешеходные дорожки и леса. Тогда определение объектов рендеринга должно выглядеть так:

features
	points
		mountain peak : natural=peak
	lines
		hiking path : highway=footway
	areas
		forest : landuse=forest OR natural=wood

Объекты рендеринга определяются в секции features. Подсекции points, lines и areas определяют типы объектов из которых далее будут выбраны объекты рендеринга (features) (объекты других типов, отличных от типа соответствующей подсекции, не будут выбраны в качестве объекта рендеринга даже если они имеют указанные тэги). Слева от двоеточия ":" располагается название (feature name) (произвольное иназвание, отражающее сущность объекта) объекта рендеринга (не должно переназначаться далее в пределах всего набора правил), справа- указание (target) на объекты в терминах исходных картографических данных, которые далее в правилах будут обозначаться этим именем (в данном случае условие выбора- совпадение OSM тэгов).

Отступы важны для правильной интерпретации текста набора правил Maperitive.

Если, например, в исходных данных тэг "natural=wood" будет стоять на незамкнутой линии, она не будет отобрана в "forest".

Более сложное описание

В данном примере в качестве "forest" отбираются OSM объекты имеющие тэг "natural=wood" или "landuse=forest". Еще более сложные возможности отбора описаны в разделе "выбор данных для рендеринга".

Написание правил рендеринга

В качестве указаний на объекты в отношении которых следует применять соответствующее правило рендеринга можно указывать имена определённых выше объектов рендеринга (features).

Описание правил рендеринга должно располагаться в секции rules.

...

rules

	target : hiking path
		define
			line-color : red
			line-width : 3
		draw : line

Описание отдельного правила начинается с "target:", за которым следует имя объекта рендеринга или они могут быть выбраны другим образом, как описано в разделе "выбор объектов рендеринга".

Далее до определения следующего правила следует тело правила, в котором содержатся команды.

Команда "define" назначает значения свойствам (rendering properties) "line-color" (цвет) и "line-width" (ширина 3 пикселя) символа карты (map symbol) "line", которым впоследствии, при выполнении команды "draw" будут отображены выбранные объекты. См. раздел "символы карты".

В результате красной линией шириной 3 пикселя будут отображены OSM объекты обозначенные тэгом "highway=footway".

Обработка правил

"define" и "draw" -это команды правил отрисовки (Rule Commands). В примере выше выполнение правила было линейным. Пример с условным ветвлением потока исполнения правила рендеринга (conditional flow):

features
	hard hiking path : ...
	medium hiking path : ...
	easy hiking path : ...
	
rules
	
	target : *hiking path
		define
			line-width : 3
		
		if : hard hiking path
			define
				line-color : red
		else
			define
				line-color : blue		
			
		draw : line

Все три объекта рендеринга будут отображены в соответствии с данным правилом т.к. в качестве указания (target) на объекты указано окончание названия объекта "hiking path". Для всех трёх типов объектов будет выполнена команда "define".

Команда if

"if" -это условная команда. Она имеет внутренний блок, который исполняется только для объектов удовлетворяющих указанному далее, через двоеточие ":" условию совпадения названия объекта рендеринга.

В данном примере для "hard hiking path" устанавливается красный цвет линии, и далее управление передаётся на команду "draw:line".

После "if" может следовать команда "else", чей блок исполняется во всех не удовлетворяющих условию случаях, и не исполняется если условие "if" удовлетворено.

В данном примере для "medium hiking path" и "easy hiking path" устанавливается синий цвет линии, и далее управление передаётся на команду "draw:line".

Чтобы после проверки условия проверить другое, используется команда "elseif".

target : *hiking path
		define
			line-width : 3
			
		if : hard hiking path
			define
				line-color : red
		elseif : medium hiking path
			define
				line-color : green
		else
			define
				line-color : blue		
				
		draw : line

В данном примере "medium hiking path" будет иметь зелёный цвет.

Команда stop

Команда "stop" останавливает обработку правила и передаёт управление на следующее. Это можно использовать совместно с "if" чтобы дать указание Maperitive не отобрачать что- либо:

target : *hiking path
		define
			line-width : 3
			
		if : hard hiking path
			define
				line-color : red
		elseif : medium hiking path
			define
				line-color : green
		else
			stop
				
		draw : line

В данном примере "easy hiking path" не будут отображены на карте, т.к. они подпадают под условие "else" и далее выполнение правила прекращается (команда "draw" не исполняется).

Команда for

В то время как командой "if" можно ветвить поток выполнения правила в зависимости от названия объекта (feature), командой "for" можно проверить выполнение условий (spatial conditions) в отношении тэгов объекта в исходных данных.

target : *hiking path
	
	for : trailblazed=yes
		define
			line-width : 5
	else
		define
			line-width : 3			
	
	if : hard hiking path
		define
			line-color : red
	elseif : medium hiking path
		define
			line-color : green
	else
		define
			line-color : blue		
			
	draw : line

В данном примере для всех объектов "*hiking path" проверяется наличие тэга "trailblazed=yes" и в зависимости от этого устанавливается ширина линии и управление передаётся на следующую команду "if", которая в зависимости от конкретного названия объекта (feature) устанавливает цвет линии. После этого для всех объектов "*hiking path" выполняется команда "draw".

Команда "if" может быть дополнена командой "elsefor", которая в случае невыполнения условия "if" проверяет другое условие и в зависимости от этого исполняется её блок.

target : *road
	define
		line-color : yellow
		border-color : black
		border-style : solid
		border-width : 40%
	for : bridge=yes
		define
			border-width : 120%  
	elsefor : tunnel=yes
		define
			border-style : dash
	draw : line

В данном примере мосты будут отображены линией с утолщённой границей, туннели- штриховой линией. Если на дороге стоят оба тэга, она всё- равно будет отображена как мост, т.к. при выполнении условия "for", "elsefor" не исполняется, а управление передаётся на следующую команду "draw".

Заключение

См. раздел. "правила рендеринга (подробное объяснение)".

Работа с границами

Некоторые команды принимают в качестве параметра границы (bounds), которые ограничивают рабочую область команды определённой областью карты. Этот параметр обычно необязателен, и в зависимости от того определили ли Вы его, поведение при выполнении команды может быть различным:

  1. Если Вы определили параметр границы (bounds), они и будут использоваться.
  2. Если опустить этот параметр, будут использованы или текущие границы области просмотра карты, или "зафиксированные" (locked) границы (если фиксирование границ было выполнено ранее).

Фиксирование границ

Если требуется выполнить несколько команд на одной области карты, можно зафиксировать границы этой области. Пример:

bounds-set 14,20,16,30
download-osm
generate-relief-igor

В данном примере фиксируется область от 14 до 16 градусов долготы, от 20 до 30 широты. Далее идут команды загрузить данные OSM и сгенерировать затенение рельефом, которые в данном случае будут использовать зафиксированные границы. В области просмотра карты зафиксированные границы будут отображены штрихованным квадратом.

То же самое без фиксирования границ, а с их явным указанием в качестве параметра команд:

download-osm bounds=14,20,16,30
generate-relief-igor bounds=14,20,16,30

Использование границ источника данных

Можно так же в качестве границ для фиксирования использовать границы источника картографических данных (map source).

load-source maps\MyMap.osm
bounds-use-source

Отмена фиксации границ

Так:

bounds-reset

Масштабируемые значения

Масштабируемые значения (zoomable values) позволяют определить как определённые свойства будут менять свои значения с изменением условного масштаба (zoom level). Указываются значения свойств (properties) для нескольких уровней масштаба (zoom level), а остальные Maperitive интерполирует.

line-width : 5:1;9:1.5;17:6

В данном примере для уровня масштаба 5 устанавливается ширина линии 1 пиксель, для 9- 1.5 пикселя, 17- 6. Промежуточные значения интерполируются. Например, для уровня масштаба 12 ширина будет 3.1875

Для уровней масштаба выше или ниже указанных, свойство принимает значение такое же как на соответственно максимальном или минимальном указанном уровне масштаба. Т.е. в данном примере для уровня масштаба 3 будет взята ширина линии 1 пиксель, для 20- 6 пикселей.

Постоянное значение свойства можно задать так:

line-width : 5

Тот же эффект будут иметь и следующие варианты:

line-width : 1:5

И:

line-width : 10:5

Справочник по командам и свойствам

Команды

add-web-map

Добавляет на карту новый слой веб- карты.

Формат в общем:

add-web-map [parameters]

Параметры, все необязательны:

  • provider задаёт источник карт из числа предопределённых. Возможные значения: "mapnik", "osmarender", "cyclemap", "mapquest.osm" и "mapquest.aerial". По умолчанию "mapnik".
В ранних версиях вместо "cyclemap" было "osmcyclemap"
  • intensity задаёт прозрачность слоя. Может принимать вещественные значения от 0 до 1. При 0 слой будет невиден на карте, значения около 0 соответствует почти полной прозрачности и слой будет едва различим, около 1 -едва различимы будут подстилающие слои. По умолчанию- 1, слой полностью закроет нижние слои.
  • background задаёт будет он помещён на нижний слой. Принимает значения "true" или "false". Значение по умолчанию "true", это позволяет рисовать интересующие данные на фоне готовой веб- карты и т.о. не перегружать свои наборы правил рендеринга правилами для прочих объектов.

После выполнения этой команды добавленный слой становится текущим источником (current map source).

MapQuest Open Aerial предоставляет глобальное покрытие на уровнях масштаба (zoom level) с 0 по 11. Уровни масштаба от 12 доступны только в United States (ниже 48 градусов широты).
add-web-map

...добавляет слой веб- карты Mapnik.

add-web-map provider=osmarender intensity=0.5

...добавляет наполовину прозрачный слой веб- карты Osmarender.

apply-ruleset

Даёт указание применить текущий набор правил рендеринга (ruleset) ко всем загруженным источникам картографических данных (map source) или только к одному из них.

apply-ruleset <source index>

Параметры:

  • source index задает номер источника данных к которому должен быть применён набор правил. Необязательный параметр. Если не задан, применяется ко всем данным.
use-ruleset alias=wireframe
apply-ruleset

...использовать набор правил под внутренним именем (alias) "wireframe" и применить его к загруженным данным.

use-ruleset location=myrules/hiking.mrules
apply-ruleset 2

...использовать набор правил из файла "hiking.mrules" в папке "myrules" в папке программы и применить его ко второму источнику данных.

bounds-reset

Отменяет фиксацию (bounds locking) границы (области действия команд с опущенным параметром границы области действия).

bounds-reset

bounds-set

Фиксирует (bounds locking) границу области действия (команд с опущенным параметром границы области действия), переданную в аргументе или текущие границы области просмотра карты.

bounds-set <bounds>

Параметры:

  • bounds задаёт ограниченную двумя параллелями и двумя меридианами (в порядке: минимальная_долгота, минимальная_широта, максимальная_долгота, максимальная_широта) квадратную область. Необязательный параметр. Если опущен, фиксируются текущие границы области просмотра.
bounds-set 36,55,39,57

... фиксирует область вокруг Москвы.

bounds-set

...фиксирует область, в настоящий момент находящуюся в окне просмотра карты.

bounds-use-source

Фиксирует (bounds locking) границы источника данных (map source) в качестве границ области действия команд (с опущенным параметром границы области действия).

bounds-use-source <source index>

Параметры:

  • source index номер источника картографических данных (map source). Необязательный параметр. Если не задан, берутся границы последнего использованного источника.
load-source maps\greenland.osm
bounds-use-source

...загружается выгрузка данных OSM по Гренландии, и по ней фиксируются границы.

bounds-use-source 3

...фиксируются границы по источнику под номером 3.

change-dir

Меняет рабочую папку (current directory) (использующуюся при указании относительного пути к файлам).

change-dir <directory>

Параметры:

  • directory задаёт путь к новой рабочей папке. Если папки не существует, Maperitive сообщит об ошибку и рабочая папка изменена не будет.
change-dir c:\mydata
export-bitmap file=images\output.png

...сохранит "output.png" в папку "c:\mydaya\images".

download-file

Скачивает файл из инета и сохраняет его на диск.

 download-file
	url=<download url>
	[file=<output file>]
	[timeout=<download timeout>]

Параметры:

  • url адрес (включая "http://")
  • file имя под которым он будет сохранён. Необязательный параметр. Если не указан, имя не будет изменено.
  • timeout задаёт максимальное время ожидания ответа сервера до того как Maperitive сообщит об ошибке и отменит выполнение команды. Время задаётся в формате D.hh:mm:ss (D можно опустить). Необязательный параметр. Если не задано, принимается значение по умолчанию 1 минута.
download-file url=http://download.geofabrik.de/osm/europe/montenegro.osm.bz2

...загружает выгрузку Черногории с Geofabrik.de

download-file url=http://download.geofabrik.de/osm/europe/montenegro.osm.bz2 file=test.osm.bz2

...загружает выгрузку Черногории с Geofabrik.de и изменяет имя файла на "test.osm.bz2"

download-file url=http://download.geofabrik.de/osm/europe/montenegro.osm.bz2 timeout=2:0:0

...загружает выгрузку Черногории с Geofabrik.de с настройкой таймаута 2 часа

download-osm

Загружает данные OSM через OSM XAPI.

Загруженные данные держатся в памяти. Чтобы использовать их позже, необходимо сохранить их на диск командой "SaveSource".

Иногда XAPI серверы могут быть недоступны, так что стоит повторить попытку если команда вернёт ошибку. Так же постарайтесь не скачивать большие области, поскольку это может занять много времени.
 download-osm
	[bounds=<bounds>]
	[xapi-url=<download url>]

Параметры:

  • bounds задаёт ограниченную двумя параллелями и двумя меридианами (в порядке: минимальная_долгота, минимальная_широта, максимальная_долгота, максимальная_широта) квадратную область. Необязательный параметр. Если опущен, используются текущие границы области просмотра.
  • xapi-url адрес сервера (включая "http://"). Необязательный параметр. Если не задан, используется www.informationfreeway.org
download-osm bounds=36,55,39,57

... скачивает область вокруг Москвы.

download-osm

... скачивает данные из области просмотра карты.

download-osm xapi-url="http://www.informationfreeway.org/api/0.6/*"

... скачивает данные из области просмотра карты с указанного сервера.

dump-python-log

Выводит лог ошибок Python -скриптов область лога команд.

Каждая запись представляет одну ошибку Python -скрипта, произошедшую в процессе рендеринга карты. Каждая запись включает:

  • время
  • описание ошибки
  • переменные контекста выполнения
dump-python-log

export-bitmap

Сохраняет растровое изображение карты в файл.

export-bitmap 
   [file=<output file>] 
   [bounds=<map bounds>] 
   [width=<bitmap width>] 
   [height=<bitmap height>] 
   [zoom=<zoom>] 
   [map-scale=<map scale>]
   [scale=<scale>] 
   [aspect=<true/false>] 
   [kml=<true/false>] 
   [ozi=<true/false>]

Параметры, все необязательны:

  • file задаёт имя файла. Может включать абсолютный или относительный путь к папке в которую файл будет сохранён. Если указанной папки не существует, она будет создана. Если не указано, будет использоваться "output/output.png"
  • bounds задаёт ограниченную двумя параллелями и двумя меридианами (в порядке: минимальная_долгота, минимальная_широта, максимальная_долгота, максимальная_широта) квадратную область. Если опущен, используются зафиксированные границы (locked boundaries), а если они не зафиксированы, то текущие границы области просмотра.
  • width задаёт ширину растрового изображения в пикселях. Если не задана, будет использоваться ширина области просмотра карты.
  • height задаёт высоту растрового изображения в пикселях. Если не задана, будет использоваться высота области просмотра карты.
  • zoom задаёт уровень условного масштаба (zoom level). Если не задан, используется текущий масштаб в области просмотра карты.
  • map-scale позволяет задать числовой масштаб (отношение длин на карте к реальным) отображаемый на карте рядом со шкалой расстояний. Если не задано, масштаб будет рассчитан автоматически. См. описание команды "zoom-map-scale".
  • scale задаёт коэффициент графического масштабирования. Если не задан, принимается равным 1.
  • aspect определяет будет ли сохранено соотношение сторон при определении размеров выходного изображения. Принимает значения "true" или "false". По умолчанию сохраняется.
  • kml определяет будет ли создан файл привязки KML для Google Earth. Принимает значения "true" или "false". По умолчанию создаётся.
  • ozi определяет будет ли создан файл привязки MAP для OziExplorer. Принимает значения "true" или "false". По умолчанию создаётся.

Создаётся так же файл со списком созданных файлов, который последующими командами вроде "ftp-upload" и "zip" может быть отправлен дальше.

Поддерживаемые форматы

Формат задаётся расширением имени файла, указанным в параметре "file".

export-bitmap file=output.tiff

...сохранит изображение карты в формате TIFF в рабочую папку.

Задание уровня условного масштаба или масштаба карты

Если Вы задаёте "zoom" или "map-scale", Maperitive автоматически из них и "bounds" рассчитывает размер изображения в пикселях. Допустим, экспортируемый участок занимает на экране монитора область 1000 на 800 пикселей при уровне масштаба 10, тогда в результате действия команды:

export-bitmap zoom=11

...будет экспортировано изображение размером 2000 на 1600 пикселей, т.к. одна ступень условного масштаба соответствует увеличению масштаба в 2 раза.

Нельзя одновременно задать "zoom" и "map-scale".

Задание ширины или высоты

Если Вы задаёте "width" или "height" выходного изображения,Maperitive подстроит под них и "bounds" условный уровень масштаба. Если, например, экспортируемый участок занимает на экране монитора область 1000 на 800 пикселей при уровне масштаба 10, тогда в результате действия команды:

export-bitmap width=500

...будет экспортировано изображение размером 500 на 400 пикселей, и при рендеринге карты будет использоваться уровень масштаба 9.

Графическое масштабирование

Параметр "scale" позволяет изменять разрешение выходного изображения относительно определяемого уровнем условного масштаба и границами разрешения на пиксель. При этом происходит не просто растягивание изображения, а его расчёт в новом разрешении из исходных векторных данных. Это позволяет создавать изображения с запасом разрешения для печати или просто хорошо выглядящие вблизи. Альтернативный вариант- экспортировать изображения в векторном формате командой "export-svg".

Веб- карты

При экспорте данной командой, выходное изображение будет рендериться из всех зарегистрированных и включённых источников картографических данных, в т.ч. веб- карты, скачивание которых может занять много времени. Так же чтобы не перегружать серверы OSM, Maperitive ограничивает максимальную скорость скачивания тайлов веб- карт.

Проблема слишком больших изображений

Со слов Боба Пауэла (Bob Powel), большого специалиста по GDI+ (графического движка используемого в Maperitive), "максимальный размер экспортируемого изображения ограничивается доступной приложению оперативной памятью. Даже в лучшем случае если приложение использует очень мало ресурсов, адресное пространство памяти ограничено (2Гб для 32-битных процессов)."

Если этот предел достигнут, GDI+ генерирует исключение, которое потом обрабатывается и выдаётся сообщение "Could not generate the bitmap, it is probably too big".

Чтобы несколько увеличить максимальный размер экспортируемых изображений, можно попытаться сделать это:

  1. Перезапустить Maperitive и сразу же попытаться экспортировать изображение, стараясь не предпринимать лишних действий с программой.
  2. Уменьшить фрагментацию памяти перезагрузив компьютер и не запускать другие программы.
  3. Установить в компьютер больше оперативной памяти.

Подробнее об этой проблеме:

export-svg

Экспортирует изображение карты в векторном формате SVG.

export-svg 
   [file=<output file>] 
   [bounds=<map bounds>] 
   [zoom=<zoom>]
   [map-scale=<map scale>]
   [compatibility=<Inkscape/Illustrator>]
   [compressed=<true/false>]
   [copy-images=<true/false>]
   [scale=<scale>] 
   [ai-autorescale=<true/false>]
   [precision-typo=<true/false>]

Параметры:

  • file задаёт имя файла. Может включать абсолютный или относительный путь к папке в которую файл будет сохранён. Если указанной папки не существует, она будет создана. Если не указано, будет использоваться "output/output.svg"
  • bounds задаёт ограниченную двумя параллелями и двумя меридианами (в порядке: минимальная_долгота, минимальная_широта, максимальная_долгота, максимальная_широта) квадратную область. Если опущен, используются зафиксированные границы (locked boundaries), а если они не зафиксированы, то текущие границы области просмотра.
  • zoom задаёт уровень условного масштаба (zoom level). Если не задан, используется текущий масштаб в области просмотра карты.
  • map-scale позволяет задать числовой масштаб (отношение длин на карте к реальным) отображаемый на карте рядом со шкалой расстояний. Если не задано, масштаб будет рассчитан автоматически. См. описание команды "zoom-map-scale".
  • compatibility задаёт режим совместимости формата выходного изображения. Может принимать значения "Inkscape" (по умолчанию) или "Illustrator".
  • compressed задаёт включать ли сжатие SVG или нет. Сжатые SVG имеют расширение ".svgz" и их нельзя непосредственно редактировать в текстовых редакторах, но они занимают значительно меньше места на диске.
  • copy-images задаёт будут ли используемые в SVG файле растровые изображения скопированы в конечную папку, или будут вставлены ссылки с абсолютным путём до их текущего расположения. По умолчанию копируются.
  • scale задаёт коэффициент графического масштабирования. Если не задан, принимается равным 1.
  • ai-autorescale когда включён режим совместимости "Illustrator", этот параметр позволяет автоматически масштабировать карту под максимальный размера области рисования в Adobe Illustrator. По умолчанию "false", и для масштабирования используется значение "scale".
  • precision-typo задаёт будет ли текст вдоль кривых линий размещён посимвольно.

Создаётся так же файл со списком созданных файлов, который последующими командами вроде "ftp-upload" и "zip" может быть отправлен дальше.

Обрезка данных по границам

Команда "export-svg" не обрезает данные точно по границам экспортируемой области, а включает заходящие в неё объекты (линии и полигоны) целиком. Но в выходном файле так же будет содержаться область ограничивающая видимость (clipping rectangle) объектов за пределами границ экспортируемой области.

Вложенные и связанные растровые изображения

Экспортируемая в формат SVG карта может содержать два типа растровых изображений:

  • иконки (icons) сохраняются в самом SVG- файле. Это оправдано потому что они имеют небольшой размер и используются в изображении несколько раз для отображения однотипных объектов. Это так же означает, что при перемещении SVG- файла в другое место, иконки останутся доступными переместившись вместе (внутри) с ним.
  • прочие растровые изображения (тайлы веб- карты, тени от рельефа, карта высот в условных цветах и т.д.) сохраняются в отдельных файлах, а в SVG- изображении содержатся ссылки на них. Если параметру "copy-images" присвоено значение "false", изображения остаются на месте (в папке кэша тайлов веб- карты и т.п.), а в SVG- файл вставляются ссылки на них с абсолютным путём. Это означает, что SVG- файл может быть перемещён в другое место, но если будут перемещены или удалены связанные изображения, они не будут отображены при просмотре SVG- файла. Если этот параметр не задан или присвоено значение "true", связанные изображения копируются в папку с выходным SVG- файлом и вставляются относительные пути, что означает что при перемещении SVG- файла связанные изображения должны быть перемещены в ту же папку.

При копировании связанных изображений Maperitive следит за тем чтобы не удалить уже находящиеся в выходной папке изображения с такими же названиями (особенно это касается тайлов веб- карт). В таких случаях к именам файлов добавляются суффиксы ".1", ".2" и т.д.

Как сделать SVG переносимыми

Если Вы хотите перенести SVG- изображения на другой компьютер или переслать через инет, рекомендуется:

  • задать параметр "copy-images" равным "true"
  • экспортировать SVG в отдельную пустую папку
  • заархивировать получившийся SVG и связанные файлы в один архив, который впоследствии может быть легко перемещён.
Совместимость

Adobe Illustrator довольно- таки плохо поддерживает формат SVG, поэтому если предполагается в дальнейшем редактировать в нём экспортируемые изображения, необходимо задать параметру режима совместимости "compatibility" значение "illustrator" (протестировано с версией CS5). Но такие файлы могут оказаться несовместимыми с другими редакторами и просмотрщиками.

Напротив, если необходима совместимость с различными браузерами и редактором Inkscape, необходимо задать параметру режима совместимости "compatibility" значение "inkscape". Но такие файлы могут оказаться несовместимыми с редактором Adobe Illustrator.

Точная расстановка надписей

При нанесении надписей вдоль линий, Maperitive может точно следовать линии разбивая текст на символы (precision typography). Такое поведение задаётся параметром "precision-typo" со значением "true". Но проблема состоит в том, что другие программы при этом и интерпретируют эти надписи как отдельные символы.

По умолчанию режим точной расстановки отключён. При этом текст не разбивается или разбивается на крупные части, каждая из которых располагается вдоль соответствующего участка линии. Такие надписи будут выглядеть не очень аккуратно, особенно в случае с неразделённым пробелами текстом.

Существующие ограничения

Некоторые программы (как Inkscape и Illustrator) не имеют хорошего алгоритма масштабирования растровых изображений, так что они (в частности, затенение рельефом, которое имеет низкое разрешение) будут выглядеть зернистыми (будут заметны пиксели), в то время как в Maperitive выглядят сглажено. В дальнейшем я попытаюсь реализовать автоматическое масштабирование изображений при экспорте.

Проблема невозможности загрузки SVG в Inkscape/Illustrator

Существуют ограничения на размер открываемого SVG- файла в Inkscape и Illustrator. Это определяется столько размером файла, сколько количеством графических элементов. И наибольшее влияние, из моего опыта, оказывает количество текстовых элементов. Пытался работать с изображением карты с 25000 отдельных текстовых элементов. Их количество может стать большим из- за разбиения надписей на изгибах улиц. Полное число текстовых элементов оказалось проблемой- ни Inkscape, ни Illustrator не открывали карту. Существует несколько возможностей сделать возможным редактирование экспортируемых изображений в Inkscape/Illustrator, но ни одна из них не является идеальным решением:

  1. Отключить точную расстановку текста вдоль линий установив "precision-typo" равным "false"
  2. Уменьшить количество текстовых элементов отказавшись от рендеринга менее значимых
  3. Разделить карту на несколько частей
  4. Разделить карту на несколько частей по этапам рендеринга, и затем наложить их в редакторе
Проблема смещения изображения в Illustrator

Adobe Illustrator имеет ограничение 16345пикселей на максимальную ширину или высоту области рисования (canvas). По умолчанию Maperitive использует масштаб 1:1 при рендеринге SVG- элементов, так что фактические координаты элементов соответствуют положению на экране. Если карта очень большая, этот предел может быть достигнут. Существует два способа решить эту проблему:

  1. Установить значение параметра "scale" меньше 1. Это не окажет видимого влияния на карту, но сожмёт координаты в соответствии с заданным коэффициентом.
  2. Установить значение параметра "ai-autorescale" равным "true". При этом Maperitive автоматически рассчитает и применит нужных коэффициент графического масштабирования чтобы подогнать карту.

find

Ищет объекты соответствующие запросу на всей карте.

find <search query>

Язык запросов описан в разделе "Выбор данных для рендеринга".

find way[highway=residential AND NOT name]

...ищет дороги с тэгом "highway=residential" не помеченные тэгом "name".

find oneway=yes

...ищет односторонние дороги.

find-here

Ищет объекты соответствующие запросу в текущей области просмотра карты или в зафиксированных границах.

find-here <search query>

Язык запросов описан в разделе "Выбор данных для рендеринга".

find-here oneway=yes

...ищет односторонние дороги в области просмотра или в зафиксированных границах, если заданы.

ftp-upload

Выгружает файлы на FTP- сервер.

ftp-upload [parameters]

Параметры:

  • host задаёт адрес или IP сервера.
  • port задаёт номер порта. Если не задано, используется порт 21.
  • user задаёт имя пользователя для аутентификации.
  • pwd задаёт пароль пользователя для аутентификации.
  • remote-dir задаёт папку на FTP- сервере в которую будут копироваться файлы.
  • files задаёт через разделитель ";"список выгружаемых файлов (относительные пути). Если не задано, будут выгружены файлы созданные последней создавшей файлы командой. Если такого не было, команда выполнена не будет.
  • base-dir задаёт папку на локальном компьютере из которой будут выгружаться файлы. Если не задано, будет использоваться папка последней создавшей файлы командой. Если такого не было, будет использоваться текущая рабочая папка.

Будет сохранена исходная структура каталогов.

export-svg
 ftp-upload host=myftp.com user=me pwd=secret remote-dir=uploadplace

...экспортирует карту в формат SVG, создаёт несколько типов файлов привязки, копирует все использующиеся растровые изображения в папку "output" в папке программы. Затем все получившиеся файлы выгружает в папку "uploadplace" на FTP- сервере.

ftp-upload host=myftp.com port=333 user=me pwd=secret remote-dir=uploadplace files=file1.txt;file2.txt;other/image.bmp compression=8

...в папку на FTP- сервере "uploadplace" выгружает два файла из исходной папки и один файл из папки "other" в исходной папке. В папке "uploadplace" на сервере будет создана папка "other", в которую будет скопирован файл "image.bmp".

generate-hypsometric

Генерирует карту высот в условных цветах (hypsometric).

generate-hypsometric [parameters]

Параметры (все необязательны):

  • bounds задаёт границы. Если не задано, используются зафиксированные границы. Если зафиксированные границы не заданы, используется текущая область просмотра карты.
  • ramps задаёт шкалу преобразования высоты в цвет. Если не задано, используется шкала по умолчанию.


Задание шкалы преобразования

Задаётся путём назначения соответствия нескольким значениям высоты цветов. Промежуточные значения интерполируются, значения на краях продляются за границы заданной шкалы.

elevation1:color1;elevation:color2;...;elevationN:colorN

Например, задание шкалы 0 метров- зелёный, 1000 метров- светло коричневый, 2000- белый; осуществляется так:

ramps=0:green;1000:#FFCB77;2000:white

Шкала 300 метров и ниже- белый, 1500 метров и выше- чёрный, промежуточные значения- градации серого:

 generate-hypsometric ramps=300:white;1500:black

Гипсометрический слой с затенением рельефом:

 generate-hypsometric
 generate-relief-igor

generate-relief-igor

Генерирует затенение рельефом в текущей области просмотра карты. Этот метод создаёт мягкое затенение, стараясь минимизировать влияние на читаемость остальных элементов карты.

generate-relief-igor [parameters]

Параметры (все необязательны):

  • bounds задаёт границы.
  • color задаёт цвет затенения. По умолчанию- чёрный (#000000). Цвет задаётся в формате как в HTML (например, blue или #0000ff).
  • intensity задаёт прозрачность слоя затенения. Может принимать вещественные значения от 0 до 1 включительно. Значения около 0 соответствует лёгкому затенению. По умолчанию принимается равным 1, что соответствует реальным яркостям поверхностей при данных условиях освещения.
  • sun-altitude задаёт высоту (угол в градусах) солнца над горизонтом. Может принимать значения от 0 до 90. По умолчанию 25 градусов.
  • sun-azimuth задаёт азимут направления на солнце. Отсчитывается от севера на восток. По умолчанию "-45", так что затенены юговосточные склоны, в соответствии с соглашением.
generate-relief-igor color=blue

...тени синего цвета.

 generate-relief-igor
 save-source 3 relief.png

...генерирует затенение и сохраняет его в виде изображения. Номер соответствующего затенению источника картографических данных (map source) зависит от предшествовавших действий и может отличаться.

generate-tiles

Генерирует тайлы, которые впоследствии могут быть использованы на веб- картсервере. Размер тайлов 256 на 256 пикселей. Схема именования и структура каталогов совместима с OpenLayers и OpenStreetMap.

generate-tiles [parameters]

Параметры (все необязательны):

  • bounds задаёт границы. Если не задано, используются зафиксированные границы. Если зафиксированные границы не заданы, используется текущая область просмотра карты.
  • minzoom и maxzoom задают диапазон уровней условного масштаба (zoom level). Если не задано, Maperitive решит сам.
  • tilesdir задаёт путь (абсолютный или относительно текущей рабочей папки) к папке в которую будут сохранены тайлы. Если не задано, будет использована папка "Tiles" в текущей рабочей папке.
  • min-tile-file-size задаёт минимальный размер тайлов (в байтах), которые будут сохранены. Если размер тайла окажется меньше, он не будет сохранён. Это позволяет исключать пустые и ненасыщенные деталями тайлы. По умолчанию сохраняются все.
  • use-fprint включает механизм определения наличия изменений (fingerprint, чувствительное к изменениям отображение большого объёма данных изображения тайла на небольшую хэш- сумму) тайлов при повторной их генерации. По умолчанию отключён.

В результате действия команды составляется список созданных файлов, который может быть использован последующими командами как то "ftp-upload" или "zip".

Производительность и требующееся пространство на диске

Будьте осторожны задавая максимальный уровень условного масштаба (zoom level). Количество тайлов каждого следующего уровня масштаба в 4 раза больше чем предыдущего, и примерно так же соотносятся время рендеринга и требующееся дисковое пространство.

Например, если на уровне масштаба 10 карта помещается на экране (приблизительно Лондон и ближние окрестности):

  • на уровне масштаба 10 количество тайлов 15
  • 11- 60 тайлов
  • 12- 240
  • 13- 960

...

  • 17- 245760 тайлов (займёт 40 минут времени и 10Гб дискового пространства)
  • 18- 983040 (5 часов и 40Гб)
  • 19- 3932160 (сутки и 160Гб)
Данные из примера очень приблизительны, зависят от производительности компьютера и насыщенности карты деталями.
Источник веб- карты при генерировании тайлов

При генерировании тайлов используются все зарегистрированные включённые источники картографических данных, в т.ч. и веб- карты. И чтобы сформировать изображение каждого генерируемого тайла, необходимо загрузить из инета использующиеся для его рендеринга тайлы веб- карты, что может занять очень много времени. Так же для снижения нагрузки на сервер OSM, Maperitive ограничивает максимальную скорость загрузки тайлов.

Прозрачность тайлов

Существуют различные способы сделать тайлы карты прозрачными. Самый общий путь состоит в том, чтобы сделать фон прозрачным, в то время как всё остальное- непрозрачным. Это достигается путём задания свойству "map-background-opacity" в правилах рендеринга значения меньше 1 (значение 0 соответствует полной прозрачности фона).

properties
	...
	map-background-opacity : 0
	...
Это работает только если все источники картографических данных (map sources) поддерживают прозрачность. Если среди них появляется веб- карта, она (будучи непрозрачной) перекрывает фон.

В области просмотра прозрачный фон будет отображаться чёрным цветом, но в выходных тайлах это будут прозрачные области.

Выгрузка на сервер и контроль наличия изменений

В результате действия команды составляется список созданных файлов, который может быть использован последующими командами как то "ftp-upload" или "zip" для выгрузки на FTP- сервер.

 generate-tiles minzoom=5 maxzoom=8
 ftp-upload host=myftp.com user=me pwd=secret remote-dir=uploadplace

...создаёт тайлы и выгружает на FTP- сервер.

Если Вы поддерживаете веб- картсервер и хотите периодически обновлять тайлы, Вы возможно захотите не выгружать тайлы, которые не изменялись. Для этой цели существует механизм контроль наличия изменений (fingerprint). Вместе с тайлом создаётся небольшой файл содержащий чувствительную к изменениям хэш- сумму тайла, по которой Maperitive может определить отличается ли тайл от сгенерированного ранее. Если окажется что тайл не изменился, он не будет добавлен в список созданных файлов и не будет выгружен на сервер следующей командой.

generate-tiles use-fprint=true
ftp-upload host=myftp.com user=me pwd=secret remote-dir=uploadplace
Сами файлы хэша не будут включены в список созданных файлов и не будет выгружаться на сервер.
Использование тайлов

См. OpenLayers Simple Example#Extensions

go-home

Перемещает область просмотра карты на позицию, заданную командой "set-home".

Клавиатурное сокращение: Ctrl+H

go-home

list-settings

Выводит значения пользовательских настроек (user settings) и краткие пояснения.

list-settings [filter]

Параметры, все необязательны:

  • filter задаёт фильтр поиска по совпадению части названия пользовательской установки с переданным в аргументе.
list-settings

...выводит все пользовательские установки.

list-settings proxy

...выводит установки, в названии которых присутствует "proxy".

list-sources

Выводит список зарегистрированных источников картографических данных (map sources).

list-sources
Некоторые из них встроены в Maperitive.

load-file-list

Загружает список файлов из текстового файла. Впоследствии этот он может быть использован с командами принимающими список файлов.

load-file-list file=<list file name> [base-dir=<base directory>]

Параметры:

  • file имя файла со списком.
  • base-dir рабочая папка, от которой в списке файлов указываются относительные пути. Необязательный параметр.
load-file-list file=list.txt
 ftp-upload host=myftp.com user=me pwd=secret remote-dir=uploadplace

...на FTP- сервер выгружаются файлы из списка "list.txt".

load-image

Загружает изображение в качестве и добавляет в конец списка источников картографических данных (map source).

 load-image 
   file=<image file>
   [background=<true/false>]

Параметры:

  • file имя файла изображения. Изображение должно быть сопровождено world- файлом привязки.
  • background будет ли изображение помещено на задний план если "true" (значение по умолчанию), или на передний если "false".

После выполнения команды текущим источником данных (current map source index) станет загруженное изображение.

Необходимо загружать набор правил рендеринга (ruleset) до загрузки изображений, иначе команда выполнена не будет. Это особенно важно при использовании скриптов.
load-image file=hypso.png

...загружает "hypso.png" и помещает его на задний план. В той же папке должен быть файл привязки "hypso.pwg".

load-image file=relief/hillshading.jpg background=false

...загружает "hillshading.jpg" из папки "relief" в рабочей папке, и помещает его на передний план.

Отображение на переднем плане или на заднем

Выбор может зависеть от того что на изображении:

  • Полупрозрачные изображения (например, затенение рельефом) лучше помещать на передний план, иначе они могут быть перекрыты другими непрозрачными элементами карты.
  • Непрозрачные изображения лучше помещать на задний план, иначе они перекроют другие элементы карты.

load-source

Загружает источник картографических данных (map source). Загруженный источник помещается в конец списка источников картографических данных. К загруженному источнику будет применён активный набор правил рендеринга.

load-source <map source location>

Параметры:

  • map source location задаёт расположение источника данных. В настоящее время возможно загружать источники данных только с локального диска или расшареной сетевой папки.

После выполнения команды текущим источником данных (current map source index) станет загруженный источник.

Необходимо загружать набор правил рендеринга (ruleset) до загрузки данных, иначе команда выполнена не будет. Это особенно важно при использовании скриптов.
load-source maps/berlin.osm

...загружает OSM XML- файл данных "berlin.osm" из папки "maps".

load-source maps/berlin.osm.pbf

...загружает OSM PBF- файл данных "berlin.osm.pbf".

load-source mytracks/Current.gpx

...загружает трек "Current.gpx" из папки "mytracks".

Типы источников данных

Maperitive в настоящее время поддерживает следующие типы:

  • OSM XML несжатые (с расширением ".osm") и сжатые (".osm.bz2").
  • OSM PBF (расширение ".pbf") бинарный формат данных, эквивалентен OSM XML, значительно компактнее.
  • GPX треки.
  • IBF контуры горизонталей сечения рельефа в формате Isohypse Binary. IBF- файлы могут быть сгенерированы в Maperitive командой "generate-contours" или программой GroundTruth.
  • Геопривязанные изображения.
Загрузка геопривязанных изображений

Геопривязанные изображения могут быть помещены на передний план или на задний, в зависимости от того что на изображении:

  • Полупрозрачные изображения (например, затенение рельефом) лучше помещать на передний план, иначе они могут быть перекрыты другими непрозрачными элементами карты.
  • Непрозрачные изображения лучше помещать на задний план, иначе они перекроют другие элементы карты.

Команда "load-source" всегда помещает изображения на задний план. Если требуется контролировать это, следует использовать команду "load-image".

move-pos

Перемещает область просмотра карты на новую позицию, заданную координатами.

move-pos
    x=<x coordinate>
    y=<y coordinate>
    [zoom=<zoom>]

Параметры:

  • x долгота.
  • y широта.
  • zoom уровень условного масштаба. Если не задано, текущий уровень масштаба не изменяется.
move-pos x=-16.5 y=45 zoom=12.5

...перемещает область просмотра карты на позицию 16градусов 30 минут западной долготы, 45 градусов северной широты и меняет масштаб в области просмотра карты на соответствующий условному уровню масштаба 12.5

move-screen-pos

Смещает область просмотра карты относительно текущей позиции на расстояние заданное в единицах ширины и высоты области просмотра.

move-screen-pos
    [x=<screen dx>]
    [y=<screen dy>]

Параметры:

  • x смещение вдоль горизонтальной оси (по долготе). При положительном значении область просмотра смещается направо (на восток), при отрицательном- налево (на запад). Значение 1 соответствует одной ширине области просмотра, 0.5 -половине.
  • y смещение вдоль вертикальной оси (по широте). При положительном значении область просмотра смещается вниз (на юг), при отрицательном- вверх (на север). Значение 1 соответствует одной высоте области просмотра.

Любой из двух параметров может быть не указан, что соответствует отсутствию смещения по соответствующей оси.

 move-screen-pos y=-2

...сдвигает область просмотра вверх на две высоты области просмотра.

 move-screen-pos x=-0.5 y=-0.5

...сдвигает область просмотра влево на половину ширины и вверх на половину высоты области просмотра.

reload-source

Перезагружает источник картографических данных (map source) из соответствующего файла.

Некоторые источники (как "Map decoration" и "Highlight") не могут быть перезагружены т.к. они не связаны с определённым файлом на диске. Сгенерированные программой источники (как скачанные командой "download-osm" данные) необходимо сначала сохранить.
reload-source [index=<source index>]

Параметры:

  • source index номер источника который необходимо перезагрузить. Если не задан, перезагрузится последний использованный источник.
reload-source index=3

...перезагружает источник под номером 3.

remove-source

Исключает источник картографических данных (map source) из списка источников.

Встроенные источники (как "Map decoration" и "Highlight") нельзя исключать поскольку они осуществляют жизненно важные функции рендеринга.
remove-source [index=<source index>]

Параметры:

  • source index задаёт номер источника. Если не задано, команда будет применена к последнему использованному источнику.
remove-source index=3

...исключает источник под номером 3.

save-file-list

Сохраняет в текстовый файл список файлов созданных последней создававшей файлы командой.

save-file-list [<list file name>]

Параметры:

  • list file name задаёт имя выходного файла со списком. Необязательный параметр.
 generate-tiles
 save-file-list file-list.txt

...генерирует тайлы и сохраняет список созданных тайлов в "file-list.txt".

save-map-script

Сохраняет скрипт, запустив который впоследствии можно получить тот же вид карты.

В результате действия команды так же копируются в выходную папку вместе с файлом скрипта и созданные изображения (как изображение затенения рельефом, карта высот в условных цветах).

Все источники картографических данных (map sources) должны быть сохранены до выполнения этой команды. Например, если были загружены данные командой "download-osm", их необходимо сохранить командой "SaveSource".

В результате действия команды составляется список созданных файлов, который может быть использован в последующей команде "ftp-upload", "save-file-list" или "zip".

 save-map-script <script file name>

Параметры:

  • script file name задаёт имя файла скрипта.
save-map-script scripts/myscript.mscript

...сохраняет скрипт под именем "myscript.mscript" в папку "scripts" в текущей рабочей папке.

set-dem-provider

Задаёт источник данных о высотах (digital elevation model provider). Можно выбрать из встроенных SRTM1 и SRTM3, или задать другой.

set-dem-provider 
     type=<DEM type>
     [custom=<true/false>]
     [cache-dir=<relative directory path>]
     [copyright=<DEM copyright text>]

Параметры:

  • type тип данных о высотах. Допустимые значения "SRTM1" и "SRTM3".
  • custom использовать ли встроенные источники или будет задан другой.
  • cache-dir путь (относительно папки "Cache/Dem" в папке программы) и имя папки для SRTM HGT -файлов задаваемого пользователем источника данных о высотах.
  • copyright текст уведомления об авторских правах. В настоящее время ещё не реализовано.
set-dem-provider type=srtm3

...указывает использовать данные SRTM3. Maperitive будет скачивать данные SRTM3 для нужной области с сервера NASA и сохранять в папку кэша. Это источник данных о высотах по умолчанию, предоставляет глобальное покрытие. Т.о. этой командой можно сбросить настройки источника данных о высотах.

set-dem-provider type=srtm3

...указывает использовать данные SRTM1. Maperitive будет скачивать данные SRTM1 для нужной области с сервера NASA и сохранять в папку кэша. Это источник предоставляет глобальное покрытие на территорию США (за исключением большей части Аляски).

Использование других источников

Из- за особенностей способа измерения, данные SRTM3 и SRTM1 страдают пробелами, особенно в горах, таких как Альпы. Альтернатива- использовать другие совместимые с форматом SRTM данные (например, Viewfinder), которые используют различные подходы для заполнения пробелов SRTM и так же имеют лучшее чем SRTM3 разрешение.

Maperitive автоматически скачивает данные встроенных источников из инета. В случае с задаваемыми пользователем источниками, необходимо самостоятельно скачать данные, поместить их в подпапку папки "Cache/Dem" и указать на неё при настройке источника данных о высотах. Например, если Вам необходимо использовать данные данные Viewfinder, необходимо скачать данные на нужный регион и сохранить их в распакованном виде (файлы с расширением ".hgt") в папку "Cache/Dem".

Хотя я мог бы включить возможность скачивать автоматически данные и из других источников, я сознательно решил не делать этого по нескольким причинам:

  1. Я не хотел нагружать сервера других людей (NASA- исключение, я предполагаю что их инфраструктура справится с этим).
  2. Я не хочу отвечать за конфликтные ситуации связанные с этими данными. Пользователи должны уважать авторские права на используемые данные. Заставляя качать данные вручную, я ожидаю что пользователи посетят их сайт и прочитают условия использования.
set-dem-provider type=srtm1 custom=true cache-dir=Viewfinder/Alps

...указывает использовать данные о высотах (файлы ".hgt") типа SRTM1 из папки "Viewfinder/Alps" в папке "Cache/Dem" в папке программы.

Ссылки

set-home

Сохраняет текущее положение и уровень масштаба в файл пользовательских настроек, и оно впоследствии может быть вызвано командой "go-home" (или сочетанием клавиш Ctrl+H).

set-home

set-setting

Задаёт значение определённой пользовательской установке (user setting).

 set-setting 
     name=<setting name>
     value=<setting value>

Параметры:

  • name имя пользовательской установки
  • value новое значение
 set-setting name=web.proxy.useproxy value=true

...включает использование прокси.

set-source

Скрывает или включает отображение определённого источника картографических данных (map source). Скрытый источник по- прежнему остаётся в списке источников, но не отображается на карте.

 set-source 
     [index=<source index>]
     [visible=<true/false>]

Параметры:

  • source index номер источника. Если не задано, предполагается последний использованный источник.
  • visible "false" отключает отображение, "true" -включает.
set-source index=3 visible=false

...отключает отображение источника 3.

use-ruleset

Активирует указанный набор правил рендеринга (rendering ruleset). Если он ещё не был загружен, команда загружает набор из файла.

В результате действия команды набор правил не применяется к уже загруженным источникам картографических данных (map sources), а только к загружаемым после неё. Чтобы применить набор правил к загруженным источникам, необходимо дополнительно ввести команду "apply-ruleset".

Команда записывает имя файла набора правил в список, который впоследствии можно использовать с командами "ftp-upload", "save-file-list" или "zip".

use-ruleset location=<ruleset location> alias=<ruleset alias> index=<ruleset index> 
	as-alias=<alias to use>

Необходимо задать только один из параметров:

  • location путь к файлу правил.
  • alias внутреннее имя набора правил.
  • index номер набора правил в списке загруженных.

Можно назначить набору правил внутреннее имя указав его в параметре:

  • as-alias назначаемое внутреннее имя.
Нельзя переназначать внутренние имена встроенных наборов правил.
use-ruleset alias=wireframe

...активируется набор под внутренним именем "wireframe".

use-ruleset location=myrules/hiking.mrules as-alias=hiking

...загружается "hiking.mrules" из папки "myrules" в папке программы, назначается внутреннее имя "hiking" и активируется.

use-ruleset alias=wireframe
apply-ruleset

...активируется набор под внутренним именем "wireframe" и применяется к загруженным источникам данных.

use-script-dir

Меняет рабочую папку на ту, в которой располагается скрипт запускающий эту команду. Может применяться только в скриптах, и не может в командной строке.

use-script-dir

zip

Архивирует файлы в ZIP- архив.

 zip [parameters]

Параметры:

  • zip-file имя выходного файла архива.
  • files список имён файлов для архивации через разделитель ";". Если не задано, будет использован список последней создававшей файлы команды. Если такого не было, команда выполнена не будет.
  • base-dir рабочая папка, от которой указываются относительные пути в списке файлов. Если не указано, будет использована рабочая папка последней создававшей файлы команды. Если такого не было, будет использована текущая рабочая папка.
  • compression условный уровень сжатия (compression level). Может принимать целочисленные значения от 0 (без сжатия) до 9 (максимальное сжатие). По умолчанию 5.
 export-svg
 zip zip-file=test/myfiles.zip

...экспортирует изображение карты в SVG вместе со связанными изображениями, затем архивирует в "test/myfiles.zip" в папе "output" в папке программы.

 zip zip-file=myfiles.zip files=file1.txt;file2.txt;other/image.bmp compression=8

...архивирует "file1.txt", "file2.txt" из рабочей папки и "image.bmp" из папки "other" в рабочей папке, и сохраняет архив в текущую рабочую папку.

zoom-map-scale

Устанавливает уровень масштаба (zoom level) соответствующий заданному реальному масштабу карты на мониторе.

zoom-map-scale <scale>

Параметры:

  • scale величина обратная масштабу (отношению расстояний на экране к расстояниям на местности).

Для вычисления масштаба Maperitive использует заданное в пользовательской установке "display.ppi" количество пикселей на дюйм.

Калькулятор PPI: http://members.ping.de/~sven/dpi.html

 zoom-map-scale 50000

...устанавливает уровень масштаба соответствующий 1/50000

Символы

icon

Иконка. В настоящее время поддерживаются только растровые изображения.

Важные свойства:

  • icon-image URL- адрес или имя файла изображения.
  • align-horizontal горизонтальное выравнивание.
  • align-vertical вертикальное выравнивание.
  • icon-width ширина иконки на карте в пикселях. Можно задать зависимость от уровня масштаба (zoomable value).
  • shape-mode
  • shape-orientation если свойству "shape-mode" задано значение "linear", это свойство задаёт будет ли иконка повёрнута вдоль линии (при значении "flow"), или нет (при "fixed", значение по умолчанию).
  • shape-spacing если свойству "shape-orientation" задано значение "linear", это свойство задаёт промежуток между иконками вдоль линии. Можно задать зависимость от уровня масштаба (zoomable value). Промежуток задаётся в единицах ширины иконки (если, например, ширина иконки 10 пикселей, а этому свойству присвоено значение 2, промежуток между иконками составит 20 пикселей). Значение по умолчанию 2.

shape

Геометрическая фигура.

Свойства:

  • shape тип формы. Допустимые значения: "circle", "square", "triangle", "diamond" и "custom". По умолчанию "circle".
  • ShapeSize размер фигуры.
  • shape-def если свойству "shape" присвоено значение "custom", это свойство задаёт форму.
  • Angle если свойству "shape" присвоено значение "custom", это свойство задаёт угол поворота фигуры относительно центра в градусах. По умолчанию 0.
  • ShapeAspect если свойству "shape" присвоено значение "custom", это свойство задаёт изменение высоты относительно нормального соотношения высоты и ширины фигуры. Значение меньше 1 сжимает фигуру по высоте, значение больше 1 -растягивает. По умолчанию 1.
  • shape-mode
  • shape-orientation если свойству "shape" присвоено значение "custom" и свойству "shape-mode" значение "linear", это свойство задаёт будет ли фигура повёрнута вдоль линии (при значении "flow"), или нет (при "fixed", значение по умолчанию).
  • shape-spacing если свойству "shape" присвоено значение "custom" и свойству "shape-orientation" значение "linear", это свойство задаёт промежуток между фигурами вдоль линии. Можно задать зависимость от уровня масштаба (zoomable value). Промежуток задаётся в единицах ширины фигуры (если, например, ширина фигуры 10 пикселей, а этому свойству присвоено значение 2, промежуток между фигурами составит 20 пикселей). Значение по умолчанию 2.

Другие свойства:

  • fill-color
  • fill-hatch
  • fill-hatch-color
  • fill-hatch-opacity
  • fill-opacity
  • fill-texture
  • line-end-cap
  • line-start-cap
  • line-style

shield

Табличка- комбинация текстовой надписи (text) и фигуры (shape). Табличка (shield) может менять размер содержащейся в ней фигуры (shape) в зависимости от размера текста.

Таблички полезны для представления комбинации графической и текстовой информации. Одно из общепринятых применений табличек- это отображение номеров дорог.

Свойства:

  • shape тип формы. Допустимые значения: "circle", "square", "triangle", "diamond" и "custom". По умолчанию "circle".
  • shape-def если свойству "shape" присвоено значение "custom", это свойство задаёт форму.
  • shield-padding-left промежуток слева между текстом и краем таблички. Размер таблички будет автоматически подогнан так, чтобы оставить это пространство свободным.
  • shield-padding-right промежуток справа между текстом и краем таблички. Размер таблички будет автоматически подогнан так, чтобы оставить это пространство свободным.
  • shield-padding-top промежуток сверху между текстом и краем таблички. Размер таблички будет автоматически подогнан так, чтобы оставить это пространство свободным.
  • shield-padding-bottom промежуток сснизу между текстом и краем таблички. Размер таблички будет автоматически подогнан так, чтобы оставить это пространство свободным.
  • shield-resize-mode режим масштабирования под размер текста.

Другие свойства:

  • fill-color
  • fill-hatch
  • fill-hatch-color
  • fill-hatch-opacity
  • fill-opacity
  • fill-texture
  • line-end-cap
  • line-start-cap
  • line-style
  • text-align-horizontal
  • text-align-vertical
  • text-max-width

Пример правила рендеринга табличек на автомагистралях:

target : motorway
	define
		font-family : Tahoma
		text-align-horizontal : center
		text-align-vertical : center
		text : ref
		font-size : 12
		text-color : #fcfcfb
		text-halo-width : 0
		shape : custom
		shape-def : p:#809bc0;pw:5;f:#809bc0;m:-10,-10;l:10,-10;a:10,10,10,10;l:-10,10;a:10,10,-10,-10;z;p:#fcfcfb;pw:2;m:-10,-10;l:10,-10;a:10,10,10,10;l:-10,10;a:10,10,-10,-10;z
		shield-padding-left : 5
		shield-padding-right : 5
		shield-padding-top : 7
		shield-padding-bottom : 7
		shield-resize-mode : free
	draw : shield
Ограничения

В настоящее время масштабируются все элементы вместе и пропорционально размеру таблички. Это значит, что если, как в примере выше, табличка содержит дугу окружности, и включён режим независимого масштабирования по ширине и высоте ("shield-resize-mode:free"), при масштабировании она превратится в дугу элипса. Т.е. невозможно при изменении размера таблички по грризонтали, при изменении длины текста, задать масштабирование только, например, прямых линий, а скругления оставить с фиксированным соотношением размеров.

Я планирую устранить это ограничение в будущем. Пока лучшим из доступных вариантов будет запрет масштабирования и жёсткое задание размеров таблички ("shield-resize-mode:fixed"):

target : motorway
	define
		font-family : Tahoma
		text-align-horizontal : center
		text-align-vertical : center
		text : ref
		font-size : 12
		text-color : #fcfcfb
		text-halo-width : 0
		shape : custom
		shape-def : p:#809bc0;pw:5;f:#809bc0;m:-10,-10;l:10,-10;a:10,10,10,10;l:-10,10;a:10,10,-10,-10;z;p:#fcfcfb;pw:2;m:-10,-10;l:10,-10;a:10,10,10,10;l:-10,10;a:10,10,-10,-10;z
		shield-resize-mode : fixed
		shape-size : 30
	draw : shield

text

Автор ещё не дописал.

Другие свойства:

  • font-family
  • font-size
  • font-stretch
  • font-style
  • font-weight
  • text
  • text-align-horizontal
  • text-align-vertical
  • text-direction
  • text-letter-spacing
  • text-line-spacing
  • text-max-width
  • text-offset-horizontal
  • text-offset-vertical
  • text-orientation

Свойства

align-horizontal

Горизонтальное выравнивание элемента. Допустимые значеня:

  • center посередине. Значение по умолчанию.
  • near слева.
  • far справа.

align-vertical

Выравнивание по горизонтали. Допустимые значеня:

  • center посередине. Значение по умолчанию.
  • near сверху.
  • far снизу.

border-width

Толщина линии границы элемента. Можно задать зависимость от уровня масштаба (zoomable value). Может быть задана в пикселях или в процентах от толщины линии (LineWidth).

define
	border-width : 25%

...задаёт толщину линии границы равной 25% от ширины линии.

define
	border-width : 8:1;16:3

...задаёт толщину линии границы равной 1 пикселю при уровне масштаба 8 и меньше, 3 при 16 и больше, и интерполированную в промежутке.

fill-color

Цвет заливки.

fill-hatch

Штриховка заливки. Допустимые значения:

  • solid сплошная. Значение по умолчанию.
  • horizontal горизонтальная.
  • vertical вертикальная.
  • nwse диагональная с северозапада на юговосток.
  • swne диагональная с югозапада на северовосток.
  • cross вертикальная и горизонтальная.
  • diagonalcross диагональная и вертикальная и горизонтальная.

Все штрихованные заливки (кроме сплошной) используют два цвета: первый цвет задаётся "fill-color", второй "fill-hatch-color". Для второго можно задать прозрачность "fill-hatch-opacity".

fill-hatch-color

Второй цвет штрихованной заливки.

fill-hatch-opacity

Прозрачность второго цвета штрихованной заливки. Может принимать вещественные значения от 0 до 1 включительно. Значение около 0 соответствуют почти полной прозрачности, значение 1 -полной непрозрачности.

fill-opacity

Прозрачность цвета заливки.

fill-texture

URL- адрес или имя файла изображения текстуры заливки.

Можно задавать абсолютный или относительный путь к файлу от текущей рабочей папки:

fill-texture : Textures/ForestNoiseLight.jpg

...в папке " Textures" в папке программы.

fill-texture : d:\Textures\ForestNoiseLight.jpg

...абсолютный путь.

fill-texture : http://somewhere.com/textures/mytexture.png

...изображение из инета.

Maperitive идёт с несколькими образцами текстур заливки, которые можно найти в папке "Textures".

font-family

Название шрифта. Используемые шрифты должны быть установлены в системе.

define
	font-family : Times New Roman

...задаёт шрифт Times New Roman.

Полезные ссылки:

font-size

Размер шрифта в единицах em. Можно задать зависимость от уровня масштаба (zoomable value).

define
	font-size : 8:10;14:20

...размер шрифта 10 для уровне масштаба 8 и меньше, 20 для 14 и больше, и интерполированную в промежутке.

font-stretch

Коэффициент растягивания шрифта по горизонтали. По умолчанию 1. Значения меньше 1 соответствуют сжатию текста, больше- растяжению.

Свойство относится к текстовым надписям и на точечных объектах, и на линейных.

define
	font-stretch : 0.9

...сжатие текста на 10%.

font-style

Курсив (наклон и скругление символов текста). Допустимые значения:

  • normal нормальное начертание. Значение по умолчанию.
  • italic курсив.
define
	font-style : italic

font-weight

Толщина линий символов текста. Допустимые значения:

  • normal нормальная. Значение по умолчанию.
  • bold жирный шрифт.
define
	font-style : bold

icon-image

URL- адрес или имя файла изображения.

Можно задавать абсолютный или относительный путь к файлу от текущей рабочей папки:

icon-image : icons/SJJB/png/transport_parking.n.32.png

...в папке " icons/SJJB/png/" в папке программы.

icon-image : d:\somewhere\icons\SJJB\png\transport_parking.n.32.png

...абсолютный путь.

icon-image : http://somewhere.com/icons/myicon.png

...изображение из инета.

icon-width

Ширина иконки в пикселях. Можно задать зависимость от уровня масштаба (zoomable value).

define
	icon-width : 8:10;14:20

...ширина 10 для уровне масштаба 8 и меньше, 20 для 14 и больше, и интерполированную в промежутке.

line-end-cap

Форма конца линии. Допустимые значения:

  • none линия обрезается перпендикулярно, точно по длине. Значение по умолчанию.
  • round скруглённый выступающий конец.
  • square квадратный выступающий конец.
  • triangle треугольный выступающий конец.

line-offset

Смещение в пикселях изображения линии на карте от её изначального положения. Сторона смещения от направления линии задаётся свойством "line-offset-sides". Полезно для отображения трека или маршрута общественного транспорта не закрывая дорогу, по которой они проходят. Можно задать зависимость от уровня масштаба (zoomable value).

define
	line-color : red
	line-opacity : 0.8
	line-offset : 14:0;15:3;16:5
	line-offset-sides : left
draw : line

...смещение 0 для уровне масштаба 14 и меньше, 3 для 15, 5 для 16 и больше, и интерполированные в промежутках.

Каждый отрезок ломаной линии рендерится отдельно, поэтому возможно появление артефактов в виде самопересекающихся отрезков смещённой линии.

line-offset-miter-limit

Ограничение вылета на острых углах смещённой линии относительно точки загиба исходной. Если расстояние между точками загиба смещённой и исходной линий достигает ограничения, смещённые линии обрезаются на этом расстоянии и их концы соединяются новым отрезком. Можно задать зависимость от уровня масштаба (zoomable value). Задаётся в единицах смещения линии. Может принимать значения от 1. Значение по умолчанию 2.

define
	line-color : red
	line-opacity : 0.8
	line-offset : 14:0;15:3;16:5
	line-offset-sides : left
	line-offset-miter-limit : 3
draw : line

...максимальный вылет 3.

line-offset-sides

Сторона смещения относительно направления линии. Допустимые значения:

  • left слева.
  • right справа.
  • both с обеих сторон.
define
    line-offset : 12.9:0;13:5
    line-offset-sides : right
draw : line

line-start-cap

Форма начала линии. Допустимые значения:

  • none линия обрезается перпендикулярно, точно по длине. Значение по умолчанию.
  • round скруглённый выступающий конец.
  • square квадратный выступающий конец.
  • triangle треугольный выступающий конец.

line-style

Тип линии. Допустимые значения:

  • none невидимая линия.
  • dash штриховая линия.
  • dashlong длинные штрихи и промежутки.
  • dashdot штрихпунктирная.
  • dashdotdot штрихпунктирная с двумя точками
  • dot точки.
  • solid сплошная.

shape

Форма фигуры (shape) или таблички (shield). Допустимые значения:

  • circle окружность. Значение по умолчанию.
  • square квадрат.
  • triangle треугольник.
  • diamond многоугольник.
  • custom заданная в "shape-def" форма
shape-mode: square


shape-def

Задание произвольной формы.

Введение

Когда в свойству "shape" присвоено "custom", в свойстве "shape-def" описывается форма фигуры (shape) или таблички (shield).

Описание формы может содержать набор команд рисования (drawing commands). Можно представить их как команды плоттеру (принтер для черчения, рисующий пером вдоль линий, в противоположенность принтеру, формирующему изображение построчно), указывающие куда переместить перо, какой цвет использовать и т.д.

Поддерживаемые команды, будут описаны далее:

  • move to
  • line to
  • draw arc
  • close shape
  • set fill color
  • set pen color
  • set pen width
  • set pen style

Пример задания формы синего прямоугольника со скруглёнными краями:

shape-def : p:blue;pw:7;f:blue;m:-10,-10;l:10,-10;a:10,10,10,10;l:-10,10;a:10,10,-10,-10;z

Команды разделяются символом ";". Первая часть команды (до символа ":") -это тип команды, вторая- аргументы, разделённые ",".

В приведённом примере команды расшифровываются так:

  1. цвет пера синий
  2. ширина пера 7
  3. цвет заливки синий
  4. переместить перо в точку (-10,-10)
  5. нарисовать линию из текущено положения в точку (10,-10)
  6. нарисовать дугу в точку (10,10) с радиусом 10
  7. нарисовать линию в точку (-10,10)
  8. нарисовать дугу в точку (-10,-10) с радиусом 10
  9. закрыть фигуру
Размер фигуры

Координаты в аргументах команд рисования должны быть целочисленные. После обработки команд рисования, координаты преобразуются нормированием на 1 относительно максимального абсолютного значения из крайних точек фигуры. В приведённом примере максимального абсолютного значение равно 10, после преобразования станет 1. Пропорционально уменьшатся все остальные размеры, которые теперь будут выражаться в долях координаты самой крайней точки.

Фиксированный размер фигур

Для символов карты (map symbol) фигура (shape) или табличка (shield) с включенным режимом масштабирования- фиксированный размер "shield-resize-mode:fixed", размеры и координаты в пикселях получаются путём умножения нормированных координат на свойство- размер формы (ShapeSize) (для определения координат по оси "y" так же используется соотношение сторон заданное в свойстве "ShapeAspect").

Например в примере задания формы стрелки:

define
	shape : custom
	shape-def : -60,0;-20,-40;-20,-15;60,-15;60,15;-20,15;-20,40;Z
	shape-size : 10
	shape-aspect : 0.5
draw : shape

...получившаяся фигура будет иметь ширину 10 пикселей и высоту 3 пикселя (40/60*10*0.5).

Символ таблички

В случае с табличкой (shield) с не заданными жёстко размерами (свойству "shield-resize-mode" не присвоено значение "fixed"), размер фигуры рассчитывается автоматически исходя из размера текста и зазоров.

Графические параметры по умолчанию элементов фигуры

Если в командах рисования в определении формы они не заданы, используются графические параметры заданные в правиле рендеринга для соответствующего символа формы.

Обычно любая команда установки графических параметров (как, например, "set pen color") автоматически завершает обработку текущей формы. Так что невозможно, например, использовать в одном полигоне разные стили линий.

Команды рисования
Move To

Формат:

m : x, y

Перемещает перо на позицию (x,y). Пример:

m:20,-10
Line To
l : x1, y1, x2, y2, ... xN, yN

Рисует линию от текущей позиции пера к (x1,y1), затем от (x1,y1) к (x2,y2) и т.д. Если перед этим не было других команд перемещающих перо, линия пойдёт из точки (0,0).

l:20,-10,20,10,30,-10
Draw Arc
a : rx, ry, x, y

Рисует дугу элипса с полуосью по оси x равной "rx", по y равной "ry" от текущей позиции к (x,y).

a:30,10,-10,-10
Close Shape
z

Закрывает текущую форму.

Set Fill Color
f : color, opacity

Устанавливает цвет заливки для последующих полигонов. Цвет задаётся в синтаксисе Web colors syntax (например, "red" или "#ff00bb"). Если задан "none", полигон не будет залит. Параметр "opacity" необязателен, и задаёт непрозрачность от 0 до 1 так же как "fill-opacity". Если не задан, заливка будет полностью непрозрачна.

f:red
f:#ff00bb,0.4
Set Pen Color
p : color, opacity

Устанавливает цвет пера. Цвет задаётся в синтаксисе Web colors syntax (например, "red" или "#ff00bb"). Если задан "none", линия не будет рисоваться, но заливка соответствующего полигон- будет. Параметр "opacity" необязателен, и задаёт непрозрачность от 0 до 1 так же как "fill-opacity". Если не задан, линия будет полностью непрозрачна.

p:red
p:#ff00bb,0.4
Set Pen Width
pw : width

Задаёт ширину пера. Принимает вещественные значения больше нуля.

pw:1
pw:5
Set Pen Style
ps : style

Стиль линии. Может принимать те же значения что и свойство "line-style".

ps:solid
ps:dash

shape-mode

Способ размещения фигур (shapes) и иконок (icons) на обозначаемых ими объектах. Допустимые значения:

  • center будет нарисована одна фигура или иконка на месте точечного объекта, посередине линейного или площадного.
  • linear несколько фигур или иконок будут расположены вдоль линейного объекта или вдоль границы площадного. Для точечных объектов будет нарисована одна иконка или фигура.
  • points-only иконки или фигуры будут нарисованы только на точечных объектах, и не будут нарисованы на линейных и площадных.
  • default одна иконка или фигура на точечном объекте или в центре площадного, или несколько вдоль линейного.
define
	shape-mode: linear

shape-orientation

Ориентация (поворот) фигур (shapes) или иконок (icons) относительно обозначаемой ими линии. Влияет только на линейные объекты. Допустимые значения:

  • fixed фиксированная. Значение по умолчанию.
  • flow вдоль линии.
define
	shape-orientation: flow

shape-spacing

Промежуток между фигурами (shapes) или иконками (icons) вдоль линии. Можно задать зависимость от уровня масштаба (zoomable value). Промежуток задаётся в единицах ширины фигуры или иконки. Если, например, "shape-spacing" задано значение 3, а размер иконки или фигуры 10 пикселей, промежуток в пикселях будет 30. Значение по умолчанию 2.

define
	shape-spacing : 11:1;13:4;14:6

shield-padding-bottom

Промежуток снизу между краем таблички (shield) и текстом. Табличка будет автоматически масштабирована до размеров текста вместе с промежутками. Можно задавать промежутки в пикселях или процентах от общей высоты таблички. Можно задать зависимость от уровня масштаба (zoomable value).

shield-padding-bottom : 5:5;10:20

...в пикселях для разных уровней масштаба.

shield-padding-bottom : 30%

...в процентах.

shield-padding-left

Промежуток слева между краем таблички (shield) и текстом. Можно задавать промежутки в пикселях или процентах от общей ширины таблички.

shield-padding-right

Промежуток справа между краем таблички (shield) и текстом.

shield-padding-top

Промежуток сверху между краем таблички (shield) и текстом.

shape-mode

Режим подгонки размера таблички (shield) под текст с промежутками (padding):

  • fixed фиксированный размер, задаётся свойством "ShapeSize" независимо от размера текста. Значение по умолчанию.
  • free высота и ширина подгоняются независимо (и без сохранения соотношения сторон) под размер текста.
  • aspect размеры подгоняются под текст с сохранением исходного соотношения сторон фигуры таблички.
shape-mode: free

text

Задаёт каким образом текст символа карты (map symbol) текст (text) будет сформирован.

Задание текста надписи

Текст надписи может состоять из одной или нескольких частей (label parts), каждая из которых может быть одного из следующих типов:

  • literal text текст.
  • tag reference тэг.
  • function call вызов функции.

Если определить несколько частей, Maperitive составит текст надписи соединив их. Например, такое определение текста надписи:

text : name " (" ele ")"

...означает что будет взято значение тэга "name", текст состоящий из символов пробела и скобки " (", значение тэга "ele" и ещё одну скобку ")". На карте на конкретном объекте надпись будет выглядеть так:

Mt. Everest (8848)
Literal Text

Жёстко заданный текст. Должен быть заключён в кавычки.

Если необходимо перенести текст на новую строку, вставляется управляющий символ переноса на новую строку "/n".

text : name "\n" ele
Tag References

Значение тэга. Задаётся название (ключ) тэга.

text : name

Если название тэга содержит специальные символы, его необходимо заключить в двойные квадратные скобки:

text : [[name:en]]

Если объект не имеет данного тэга, эта часть надписи останется пустой, а остальные части будут отображены.

Functions

Вызовы функций могут применяться для преобразований текста и его условного формирования.

=@low()=
@low(<label definition>)

Переводит символы текста в нижний регистр.

@low(name "ele")
=@up()=
@up(<label definition>)

Переводит символы текста в верхний регистр.

@up(name "ele")
=@if()=

Осуществляет выбор отображаемого текста в зависимости от наличия на объекте тэга с указанным названием.

@if(<tag reference>, <positive label definition>)

Или:

@if(<tag reference>, <positive label definition>, <negative label definition>)

Пример:

@if(ele, ele "m")

...если тэг присутствует, отображает высоту и ставит после символ "m".

@if(ele, ele "m", "-")

...если тэг присутствует, отображает высоту и ставит после размерность "m". Если отсутствует, отображает прочерк "-".

=@any()=
@any(<tag reference 1>, <tag reference 2>, <tag reference 3>, ... <tag reference N>)

Отображает значение первого существующего тэга из списка.

@any([[name:fr]], name)

...если есть тэг "name:fr", отображает его значение. Если нет- отображает значение тэга "name". Если и его нет, ничего не отображает.

=@ele()=

Отображает высоту в метрах или футах в зависимости от значения "user.use-metric".

@ele(<tag reference>)

Название тэга должно соответствовать тэгу обозначающему высоту. Значение тэга должно быть числовым, иначе эта часть текста надписи не будет отображена.

Преобразованное значение высоты будет округлено до ближайшего целого значения.

Используемые единицы можно задать либо в секции "properties" в наборе правил рендеринга:

properties
	user.use-metric : false

...либо в пользовательских установках введя в командной строке:

set-setting name=user.use-metric value=false
Примеры
text : @if(name, name @if(ele, "\n(" ele ")"), ele)

...если отсутствует тэг "name", отображается значение "ele". Если отсутствуют и "name" и "ele", не отображается ничего. Если присутствует тэг "name" и отсутствует "ele", отображается значение "name". Если присутствуют тэги "name" и "ele", отображается на первой строчке значение "name", на второй- значение "ele" в скобках.

text-align-horizontal

Выравнивание текста надписей (text) и табличек (shield) по горизонтали. Допустимые значения:

  • center по центру. Значение по умолчанию.
  • near по левому краю.
  • far по правому краю.

text-align-vertical

Выравнивание текста надписей (text) и табличек (shield) по вертикали. Допустимые значения:

  • center по центру. Значение по умолчанию.
  • near по верхнему краю.
  • far по нижнему краю.

text-direction

Направление текста надписей (text). Допустимые значения:

  • auto автоматически (в большинстве случаев слева направо).
  • rtl справа налево.

Это свойство- временный способ реализации направление текста справа налево на линейных объектах. Оно не оказывает эффекта на направление текста на точечных и площадных объектах. Оно так же не позволяет в одной текстовой надписи комбинировать части с разным направлением.

В ближайшем будущем планируется реализовать полную поддержку направления текста справа налево.

text-letter-spacing

Изменение промежутка между символами в тексте. Задаётся в долях размера шрифта (свойство "font-size"). Значение по умолчанию 0 соответствует нормальным промежуткам, меньше нуля- уменьшенным, больше- увеличенным. Это свойство влияет на промежутки между символами в тексте и на линейных объектах, и на точечных и площадных.

define
	font-size : 10
	text-line-spacing : 0.25

...означает что промежуток между символами будет на приблизительно 2.5 пикселя больше.

text-line-spacing

Шаг по высоте между строками текста. Относится к текстовым надписям, в которых присутствуют переносы строки. Задаётся в относительных единицах от нормального шага. Значение 1 соответствует нормальному шагу, меньше- уменьшенному, больше- увеличенному.

define
	text-line-spacing : 1.5

...шаг на 50% больше нормального.

text-max-width

Максимальная ширина текста табличек (shield) и надписей (text). Задаётся в относительных единицах от размера шрифта (свойство "font-size"). Значение по умолчанию 7 соответствует ширине приблизительно 7 символов.

При размещении текста символа карты надпись (text) Maperitive сначала разделяет его на слова, затем пытается заполнить ими строку до максимальной длины, после делает перенос на новую строку и т.д.

text-max-width : 10

text-offset-horizontal

Смещение текстовой надписи (text) по горизонтали от положения обозначаемого ей объекта. Может быть задано в пикселях или в процентах от размера шрифта. Положительные значения соответствуют смещению вправо, отрицательные- влево. Может быть задана зависимость от уровня масштаба (zoomable value).

define
	text-offset-horizontal : 24
draw : text

...смещение 24 пикселя вправо.

define
	font-size : 8
	text-offset-horizontal : 200%
draw : text

...смещение приблизительно 16 пикселей.

text-offset-vertical

Смещение текстовой надписи (text) по вертикали от положения обозначаемого ей объекта. Может быть задано в пикселях или в процентах от размера шрифта. Положительные значения соответствуют смещению вниз, отрицательные- вверх. Может быть задана зависимость от уровня масштаба (zoomable value).

text-orientation

Ориентация текстовой надписи (text) относительно обозначаемого ей объекта. Оказывает влияние только на надписи на линейных объектах. Допустимые значения:

  • flow вдоль линии. Значение по умолчанию.
  • fixed фиксированная горизонтальная ориентация.
text-orientation: fixed

Пользовательские установки

map.hidden-painting-stages

Исключаемые из процесса рендеринга этапы (painting stages). Задаются в виде списка названий этапов с разделителем ",".

Эта настройка может работать вместе с "map.min-painting-stage" и "map.max-painting-stage".

set-setting name=map.hidden-painting-stages value=labels,symbols

...исключаются этап рендеринга надписей и этап рендеринга иконок и фигур.

set-setting name=map.hidden-painting-stages value=""

...сбрасывает настройку исключаемых этапов.

map.max-painting-stage

Последний выполняемый этап рендеринга. Следующие будут исключены.

Значение по умолчанию "max" соответствует отсутствию исключения последних этапов.

set-setting name=map.max-painting-stage value=infrastructure

...этапы рендеринга иконок и текстовых надписей будут исключены.

set-setting name=map.max-painting-stage value=max

...сброс настройки.

map.min-painting-stage

Первый выполняемый этап рендеринга. Предшествующие будут исключены.

Значение по умолчанию "min" соответствует отсутствию исключения первых этапов.

set-setting name=map.min-painting-stage value=labels

...все этапы предшествующие рендерингу текстовых надписей будут исключены.

set-setting name=map.min-painting-stage value=min

...сброс настройки.