Вільні картографічні технології: рендери

Вільні картографічні технології: рендери
У цій статті я розповім про програмному оточенні OpenStreetMap - сторонньому ПО, яке так чи інакше пов`язане з проектом. Це рендери, редактори і клієнти. Про все потроху і по порядку.

Для OpenStreetMap існує два «офіційних» основних рендеру: Osmarender і Mapnik. Обидва можна використовувати в режимі офлайн, на локальній машині. Osmarender - простіший, тому з нього і почну.

Osmarender (https://wiki.openstreetmap.org/wiki/Osmarender) - це не окрема програма, а набір файлів для перетворення картографічних даних за допомогою XSL (Extensible Stylesheet Language). Грубо кажучи, є дані в форматі OpenStreetMap XML, є набір правил в форматі XSL, і за допомогою останніх дані переводяться в SVG. Обробкою правил можуть займатися різні програми - так звані XSLT-процесори. Наприклад, Xalan-J, XRay2, Saxon, і інші. Я зупинився на xsltproc. Опишу, як з його допомогою отрендеріть карту.

1. Завантажити сам «рендер» командою:
$ Wget -r -np -R index.html -nH --cut-dirs 2
https://svn.openstreetmap.org/applications/
rendering / osmarender /

2. Вийде директорія osmarender з підкаталогами. З цих підкаталогів скопіюємо файли osm-map-features-z17.xml, markers.xml і osmarender.xsl в кореневій директорію osmarender. Зауважу, що «z17.xml» в імені файлу позначає рівень масштабу: чим більше, тим докладніше буде карта. В даному прикладі - 17, тобто максимальний рівень.

3. У osm-map-features-z17.xml, для відображення на карті умовних знаків, підправимо шлях до каталогу символів. Міняємо рядок:
symbolsDir = "../ stylesheets / symbols"

на:
symbolsDir = "./ stylesheets / symbols"

4. З сайту OpenStreetMap зробіть експорт потрібного вам ділянки карти в формат OpenStreetMap XML, зберігши файл як data.osm (саме під таким ім`ям) в кореневу директорію osmarender.




5. Переконайтеся, що у вас встановлена xsltproc (вона входить в libxslt).

6. У кореневій директорії osmarender виконайте:
$ Xsltproc osmarender.xsl osm-map-features-z17.xml gt; map.svg

На виході буде отриманий файл map.svg. При його відкритті в програмі перегляду (наприклад, Inkscape) ви виявите, що розмір карти в пікселях занадто маленький. Через файли правил перетворення вплинути на це не вийде - треба діяти обхідним шляхом. Наприклад, для збільшення масштабу (пиксельного) в 10 раз даємо команду:
$ Sed -i `s / (svg. * Height = "[0-9] +). ([0-9]) / 12./` map.svg
$ Sed -i `s / (svg. * Width = "[0-9] +). ([0-9]) / 12./` map.svg

Для зручності простіше написати bash-скрипт з усіма трьома командами:



$ Xsltproc osmarender.xsl osm-map-features-z17.xml gt; map.svg
$ Sed -i `s / (svg. * Height = "[0-9] +). ([0-9]) / 12./` map.svg
$ Sed -i `s / (svg. * Width = "[0-9] +). ([0-9]) / 12./` map.svg

Для перетворення з командного рядка в PNG можна зробити так:
$ Inkscape -D -e output.jpg map.svg

Тепер розгляну питання рендеринга назв на карті в потрібній локалі. Наприклад, для примусового рендеринга російською мовою потрібно в файлі osm-map-features-z17.xml змінити все name на name: ru. Це спрощений, але цілком робочий спосіб - звичайно, якщо всі об`єкти мають тег name: ru. Ще можна задати такі правила, щоб при відсутності локалізованого тега використовувався тег за замовчуванням. До речі, ім`я оброблюваного файлу даних (data.osm) можна змінити в тому ж osm-map-features-z17.xml в параметрі data. Через файл правил налаштовується практично все: розмір об`єктів, кольору і т.д.

Такі основи роботи з Osmarender. Тепер - про Mapnik (https://mapnik.org). Mapnik написаний на C ++, але зазвичай для взаємодії з ним використовуються скрипти на Python. Сам по собі Mapnik не прив`язаний до OpenStreetMap - це окремий проект, географічний рендер, який був пристосований проектом OpenStreetMap для рендеринга деяких верств карти сайту (шари Mapnik, велосипедний шар і так далі). Mapnik може бути використаний для рендеринга OSM-даних безпосередньо при наявності відповідного плагіна, а більш традиційний спосіб полягає в перекладі OSM-даних в PostGIS, а вже звідти - в Mapnik.

Вільні картографічні технології: рендери

У будь-якому випадку для створення карти за допомогою Mapnik вам доведеться писати скрипт на Python (можна і програму на C ++). Це дуже велика тема для оглядової статті, тому обмежуся кількома зауваженнями, які допоможуть на початку шляху.

Перше - збірка OSM-плагіна. Справа в тому, що за замовчуванням він не збирається. По-перше, потрібно devel-пакет для libcurl. По-друге, в вихідному коді Mapnik доведеться дещо виправити ... В кореневому каталозі исходника даємо команду:
$ Scons configure

Створиться файл config.py. Відкриємо його і в рядок «INPUT_ PLUGINS» додамо osm:
INPUT_PLUGINS = `osm, postgis, raster, shape`

Тільки тепер варто виконувати scons і scons install. До речі, якщо Mapnik потім «не видно», нагадаю очевидне: додайте шлях до нової бібліотеці в ld.so.conf - наприклад, якщо у вас зібрані користувачем бібліотеки встановлюються в / usr / local / lib, то потрібно виконати (з правами root) :
# Echo "/ usr / local / lib" gt; gt; /etc/ld.so.conf
# ldconfig
Вільні картографічні технології: рендери

Візуалізація карти складається з написання скрипта і додаткового XML-файла зі стилями відтворення. Звичайно, буде потрібно і сам файл з картографічними даними. Все докладно описано в документації OpenStreetMap (на відміну від роботи з OSM-плагіном).

До речі, існує ще один досить наворочений і багатоплатформений рендер, причому з графічним інтерфейсом - Maperetive (https://maperitive.net). Він написаний на C # і, завдяки Mono, добре запускається. Однак код Maperetive закритий.



Ну, а якщо Вас набагато більше цікавить майстерність створення колажу в photoshop (https://shopvideokurs.ru/product/masterstvo-sozdaniya-kollazha-v-photoshop-i-obrabotka-fotografiy), а не сучасні картографічні технології, тоді Вам слід в обов`язковому порядку відвідати сайт shopvideokurs.ru. Тут Ви знайдете відмінний навчальний курс, який допоможе Вам освоїти ази Photoshop`а.

ІНШЕ

Sdl: збірка за допомогою make фото

Sdl: збірка за допомогою make

Відео: C. Урок 12. Компіляція і система збирання (gcc, make)Етап 4. Складання за допомогою make Наведу мінімальний…

Qtiplot: аналіз даних фото

Qtiplot: аналіз даних

Відео: Qtiplot Intro 2 scatter plot, linear regression, error bars, reading data from graphs Можна сміливо сказати, що…

Josm: android, gps і josm фото

Josm: android, gps і josm

Відео: Популярні відео - OpenStreetMap Останній нюанс - як за допомогою Android-пристрою, оснащеного GPS, створювати…

Установка sdl фото

Установка sdl

Відео: Tutorial: Setup SDL for Visual Studio 2012Етап 2. Python і Scons Цей етап знадобиться тільки для зборки за…

Інтерфейс openstreetmap фото

Інтерфейс openstreetmap

Відео: OpenStreetMap Tutorial - Episode 2 - Web Interface Інтерфейс OpenStreetMap складається з вкладок: Карта, Правка,…

Компоненти geda фото

Компоненти geda

Відео: САПР TopoR. переміщення BGA Налаштовуються через ~ / .gEDA / gafrc, в який потрібно додати код такого змісту (на…

» » Вільні картографічні технології: рендери