Красная Книга Ростовской области

Красная Книга Ростовской области

Если вы когда-нибудь занимались проектированием объектов большой протяженности, то знаете, что составлять ОВОС и ООС в этом случае — адский ад, поскольку одним из требований нормально выполненной работы является предоставление списка краснокнижных видов, попадающих в зону влияния объектов. Даже если Красная Книга в нормальном состоянии, даже если существует ее специальная электронная версия, все-равно карты в ней выглядят как говно. Составители из кожи вон лезут, что-бы вмандить в издание кучу нахуй никому не нужных узоров, блоков и текстур, но на одну из важнейших составляющих Красной Книги — карты, без которых издание теряет минимум половину своей ценности испокон веков кладется залупа размером с Тунгусский метеорит.

Меня эта ситуация заебала и я оцифровал оба тома Красной Книги Ростовской области, векторизовав положение всех охраняемых видов растений и животных, присвоив им атрибуты таксономии, охранного статуса и ссылки на приложенные в тексте изображения. Все это скомпоновал в две карты на основе leaflet.js, добавил несколько полезных плагинов, подгрузил подложки OpenStreetMap, спутник от Mapbox и залил на свой сервер для общего доступа.
Красная Книга Ростовской области

С технической точки зрения работа ничего интересного не представляет — простая визуализация геоданных с нескольких сотен карт. Но это еще удивительнее — что, блядь, для такой объемной, но несложной работы обязательно меня было ждать?
Красная Книга Ростовской области

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

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

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

Код для вставки карты краснокнижных видов Ростовской области на любой сайт выглядит так,

Животные:

<iframe src="http://городшахты.рф/maps/1704_redbook61/animals/index.html" width="800" height="400" frameborder="0" allowfullscreen="allowfullscreen"></iframe>

Растения:

<iframe src="http://городшахты.рф/maps/1704_redbook61/plants/index.html" width="800" height="400" frameborder="0" allowfullscreen="allowfullscreen"></iframe>

Кроме того, список животных из Красной Книги Ростовской области можно почерпнуть из соответствующей статьи.

У меня все. Пойду чайку сбацаю.

Весенняя трава

Интро затянулось

Если бы я разрабатывал свой фамильный герб, то в качестве животного на нем выбрал бы землеройку. Маленький симпатичный зверек с огромной головой и невероятного размера хуищем, который постоянно жрет все подряд: от семян до ящериц, от мелких лягушек, до говна. Человек с пропрциями землеройки выглядел бы как покрытый короткой шерстью усатый мегацефал с головой весом в восемь килограмм, метровым членом и зубами, говорящими о его подсемействе. В этих зубах все дело: у кроцидур зубы белые и потому мы зовем их белозубки, а у сорексов бурые, их мы зовем бурозубки. Есть еще землеройка-красавка, но какие зубы у нее я не знаю, потому что она встречается редко, только в в пустынных районах Каспия, представлена одним видом (Diplomesodon pulchellum, она же красавка, он же пегий путорак) и легко отличима по черно-белому окрасу. У старых землероек зубы бывают стерты и одонтологическая идентификация их затруднена. Но не отчаивайтесь, если перед вами беззубый самец, вы всегда сможете уточнить его видовую принадлежность по головке члена, которая в момент возбуждения приобретает свеклообразную форму, о чем писал еще Денель в 1952 году. Впрочем, я слабо представляю себе, что нужно сделать, что-бы довести до полового возбуждения землеройку.
письки землероек-бурозубок

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

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

С полным рюкзаком всякого барахла я шел от Борисовой Гривы к реке Морье, что-бы испытать на ней новую лодку, поймать, если повезет пару зубастых щук и прокатиться по холодной апрельской воде. По правую руку от меня шумел лес Веденеевского лесничества карту которого я делал еще семь лет назад, а слева за мелиоративным каналом вымокал в весенней сырости Всеволожский лесхоз. Крики шалых соек, беснующиеся у заборов крайних деревенских домов давно пропали и за исключением редких тонаров с песком, птичьего щебетанья, вялого после зимы долгоносика и мертвой землеройки вокруг никого не было.
Дорога от Борисовой Гривы

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

Но река и впрямь хороша:
Байдарка Тайга на реке Морье

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

Дно у реки песчаное, местами немного заиленное. Вода болотная темная, хоть кипяти и вместо чая наливай.
Под водой реки Морье

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

Течение на реке ощутимое, около трех километров в час, на коротких быстринах до десяти — пятнадцати километров в час. Но совершенно точно его не измерить — вся эта стандартная хуета с поплавками отнимет слишком много времени, а вычислить скорость реки на основе анализа gps-трека почти невозможно — слишком велик шум. Скорость перемещения лодки по реке складывается из двух компонентов (собственно скорость реки и скорость гребца), двух погрешностей (погрешность на прямолинейный курс и точность навигатора) и одного коэффициента (удаленность от линии основного течения). Я не стал морщить ум нанес данные по скорости перемещения целиком — без всякой фильтрации данных. Все что для этого требуется — знать длину морской мили, косинус широты и теорему Пифагора, а результат вполне годится как для отображения характера реки, так и особенностей передвижения по ней.

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

Нижний Новгород

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

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

Одним из побочных следствий моей работы является необходимость постоянно отвечать на одни и те же, элементарные, в сущности, вопросы. Например, что я подразумеваю, когда объясняю свою занятость разработкой картографического стиля. «Я делаю стиль». Что-что, простите? Карту? Ну, карту конечно, но все-таки не совсем. Цвета на карте? Само собой, но это больше второстепенная рутина. Что же тогда?

Давайте разберемся. Карта это вовсе не уменьшенная модель земной поверхности, как утверждают многочисленные источники, от научных монографий до школьного учебника географии. Со структурной точки зрения карта представляет собой всего лишь изображение, элементы которого соотносятся с объектами, обладающими пространственными характеристиками. Но структурное определение никогда не раскрывает суть вещей, а только демонстрирует их форму, в отличие от функционального толкования. С точки зрения последнего, карта – это инструмент для анализа и визуализации данных, обладающих пространственной характеристикой. Или еще более точное: карта – это композиция графических элементов адаптированных под решение конкретной пространственной задачи.

Работа над картой никогда не начинается с определения ее визуальных характеристик. Первым и важнейшим этапом создания карты является конкретизация задачи и проверка того, что картографический метод для ее решения наиболее оптимален. Например, вы хотите пройти из точки А в точку Б. Для этого, можно нарисовать схему движения, а можно просто составить список улиц по которым надлежит идти. Согласитесь, что в разных ситуациях эффективны разные методы. Зачем что-то рисовать, если вам нужно идти по четной стороне улицы в сторону увеличения нумерации домов до проспекта Строителей, где повернуть направо и через триста метров остановиться у аптеки с желтым сайдингом?

Как только задача формализована и совершенно ясно, что картографический метод ее решения оптимален, начинается следующий этап: подбор материалов для создания карты. Тех самых геоданных. Что у нас есть? Линии дорог с атрибутивной информацией об их ширине, покрытии и названии? Точки остановок? Полигоны территорий, движение по которым затруднено? Все эти данные сводятся в единую наглядную таблицу.

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

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

В четверг, девятого марта в семнадцать ноль ноль я приглашаю всех испить пива и приятно провести время в заведении «Мир Пиццы» на площади Минина (пл. Минина, дом 6, напротив Пороховой башни Кремля). Был там сегодня: обстановка уютная, пиво достойное, цены приемлимые.


Посмотреть более крупную карту

Со своей стороны готов немного рассказать о современной цифровой картографии, QGIS, OpenStreetMap, геоботанике, фрактальном анализе и другим интересующим вас вопросам на которые у меня найдется ответ.

Встреча продлится два, два с половиной часа, во время которых я весь ваш. Чем смогу — помогу, что знаю — расскажу. Приходите, буду ждать вас в клетчатом свитере за столиком со стаканом светлого пива. На всякий случай, связаться со мной можно по телефону +7-904-614-68-29 или электронной почте schwejk-rpnt@rambler.ru

консоль WMS-сервера

Установка и настройка OGCServer-master

В прошлый раз мы подняли свой TMS-сервер на базе mapnik. Самое время развернуть на той-же основе свой WMS. Для этого, мы используем библиотеку OGCServer-master написанную Жаном Франсуа Дойоном. Библиотека написана на питоне специально под мапник со следующими ТТХ:

— Поддерживает WMS 1.1.1 и 1.3.0
— CGI/FastCGI, WSGI, mod_python
— Поддерживает все 3 запроса: getcapabilities, getmap и getfeatureinfo
— Выходные файлы в формате JPEG и PNG (только PNG256)
— Обрабатывают ошибки XML/INIMAGE/BLANK
— Поддерживает несколько именованных картографических стилей
— Поддерживает перепроецирование
— Поддерживаются метаданные слоя: title, abstract
— Существует возможность запросить все слои с помощью LAYERS=__all__

При использовании библиотеки следует помнить, что Getfeatureinfo поддерживает только простой текст, не поддерживаются 8-битные растры png (только 256 цветов) и для CGI/FastCGI должна быть доступна запись tempfile.gettempdir() (обычно пишется в «/tmp»). Кроме того, OGCServer-master требует установленных питоновских зависимостей мапника, питоновскую библиотеку для визуализации PIL и модули jonpy.

Подробные инструкции по настройке библиотеки можно почерпнуть из аутентичной страницы гит-хаба. Сама установка элементарна, требуется лишь закачать библиотеку на сервер, после чего в корневой директории библиотеки (она содержит файл setup.py) выполнить команду:

sudo python setup.py install

У библиотеки OGCServer-master есть ряд подводных камней о которых желательно знать до установки. Во-первых, перед установкой рекомендуется исправить имена и заголовки WMS, поскольку их дефолтные значения содержат в себе пробелы. QGis такие записи воспринимает нормально, но у других программ (например, FME) по этой причине могут возникать проблемы с загрузкой WMS-слоев. Для исправления, следует внести правки в шесть файлов из директории ogcserver. Исправленные строки в файлах (прописано «newname») будут выглядеть так:

Файл OGCServer-master\ogcserver\default.conf (2 правки):
Строка 95: wms_name = newname
Строка 98: wms_abstract = newname
Файл OGCServer-master\ogcserver\wms111.py (2 правки):
Строка 147: rootlayertitle.text = 'newname'
Строка 154: rootlayerabstract.text = 'newname'
Файл OGCServer-master\ogcserver\wms130.py (2 правки):
Строка 154: rootlayertitle.text = 'newname'
Строка 161: rootlayerabstract.text = 'newname'

Во-вторых, OGCServer-master более чувствителен к xml-файлу стиля чем сам мапник. Это значит, что при наличии ошибок в файле стиля, которые при старте рендеринга TMS проигнорируются, например line-opacity, сервис WMS не запустится, а выдаст ошибку с указанием всех строк, подлежащих исправлению. С одной стороны, это требует более тщательной работы над стилем, с другой стороны, позволяет легко отловить ошибку. По этой причине, я использую OGCServer-master даже в тех случаях, когда требуется исключительно создание TMS.

После установки, запустить WMS можно с помощью команды

ogcserver путь_к_стилю.xml

Если вы работаете через ssh, можете прописать перед командой запуска «nohup» для того, что-бы после разъединения сервер продолжал работать. После этого можно запрашивать слои в браузере командой:

http://localhost:8000/?LAYERS=__all__&STYLES=&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG%3A3857&BBOX=-20037508.34,-20037508.34,20037508.3384,20037508.3384&WIDTH=256&HEIGHT=256

Либо, через стандартный интерфейс QGis или любой другой программы.

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

слиппимап

Установка тайлового сервера на Debian 8 Jessie

Введение

Данная статья представляет собой перевод руководства по установке TMS сервиса, дополненный моими личными замечаниями.

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

Если вам требуется изменять наполнение карты путем включения/отключения какого-либо слоя, без WMS не обойтись. Но с другой стороны TMS проще, быстрее и в большинстве случаев предпочтительней, поэтому мы начнем именно с него.

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

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

 

Инструменты

Операционной системой для этих опытов послужит Linux Debian 8 Jessie. TMS будем разворачивать на библиотеке mapnik. Облигантных инструментов для этой работы нет. Под виндой я обычно использую TotalCommander Grey Pack (спасибо за него диаволу на пятнашке) с плагином Secure FTP Connections и программу Putty. Под линуксом я юзаю тильду для ssh-соединения и любой вменяемый файловый менеджер с поддержкой сетевого соединения.

Итак, погнали. У нас в наличии ssh-доступ к серверу с девственно чистой Дебиан Джесси. Рекомендую сразу установить консольный редактор nano:

sudo apt-get install nano

и консольный файловый менеджер mc:

sudo add-apt-repository ppa:eugenesan/ppa
sudo apt-get update
sudo apt-get install mc

Это не обязательно, но поверьте, потом еще не раз пригодится.

 

Установка и создание базы данных

Начнем с установки пакетов postgresql-9.4-postgis-2.1 и postgresql-contrib-9.4

Входим под рутом и запускаем:

apt install postgresql-9.4-postgis-2.1 postgresql-contrib-9.4

Теперь создадим базу данных. Переключаемся в постгрес:

su postgres

и для избежания возможных проблем переходим к домашней директории:

cd ~

Создадим пользователя c именем «osm»:

createuser osm

и базу данных с названием «map»:

createdb -E UTF8 -O osm greatbritain
psql -c "CREATE EXTENSION hstore;" -d map # Should result in CREATE EXTENSION
psql -c "CREATE EXTENSION postgis;" -d map # Should result in CREATE EXTENSION

Если все прошло удачно, выходим из постгреса:

exit

 

Добавление пользователя

Для того, чтобы избежать работы под рутом, добавим в систему пользователя osm с помощью команды adduser:

adduser osm

Теперь добавим пользователя osm в группу sudo. Для этого воспользуемся редактором nano (вы же его установили, верно?)

su вводим пароль
nano /ets/sudoers
Находим строку
# User privilege specification

после

root ALL=(ALL:ALL) ALL

вставляем строку

osm ALL=(ALL:ALL) ALL

и сохраняем документ последовательностью хоткеев ctrl+o, Enter , ctrl+x

 

Импорт картографического стиля

Мы будем использовать стандартный стиль mapnik osm. В дальнейшем, при желании, вы всегда сможете его изменить на свой вкус. Перейдем в домашнюю директорию и скачаем стиль с гит-хаба:

su osm
cd ~
wget https://github.com/gravitystorm/openstreetmap-carto/archive/v2.29.1.tar.gz
tar -xzf v2.29.1.tar.gz

Теперь в домашней директории должна появиться папка с названием: Теперь вы должны иметь папку с названием «openstreetmap-carto-2.29.1». После этого можно переходить к импорту геоданных.

 

Импорт геоданных

Нам потребуется пакет osm2pgsql. Для этого переключимся на рута и выполним команду:

exit
apt install osm2pgsql

Теперь можно переходить непосредственно к импорту dbf-файла с данными. Самое простое решение — это импортировать всю планету OpenStreetMap целиком. Но у такого подхода есть очевидные недостатки: во-первых, объем диска у вас не безграничен, во-вторых, даже на простое скачивание планеты может уйти изрядное количество времени, а в третьих, информация о улицах какой-нибудь Зулусии вам может быть совершенно не нужна. Приходится вырезать нужный регион из дампа самому, либо использовать готовые данные. Сейчас их можно получить у  GeoFabrik, CloudMade или Гис-лаб (НексГИСа). В выгрузке геофабрики напрочь отсутствовали реки. В выгрузке НексГИСа отсутствовали части объектов, пересекаемые государственной границей, из-за чего некоторые пограничные озера при рендере пропадали, но острова на них закрашивались цветом воды. Выгрузки регулярно обновляются, так что это вполне могут быть временные случайные баги. С выгрузками CloudMade я активно не работал, поэтому комментарий дать не могу.

Скачаем архив на территорию России с сайта гис-лаб. Если вы все это проделываете в экспериментальных целях — рекомендую для начала скачать не Россию целиком, а только один из регионов — этим вы сэкономите себе уйму времени. Например, возьмем Ростовскую область.

su osm
cd ~
wget href="http://data.gis-lab.info/osm_dump/dump/latest/RU-ROS.osm.pbf"

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

osm2pgsql --slim -d map -C 1600 --hstore -S openstreetmap-carto-2.29.1/openstreetmap-carto.style RU-ROS.osm.pbf

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

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

Error: Connection to database failed: could not connect to server: No such file or directory

Тут, возможно, вам пригодиться фраза из оригинальной статьи: «Is the server running locally and accepting connections on Unix domain socket «/var/run/postgresql/.s.PGSQL.5432»?

Кроме того, если вы установили PostgreSQL 9.3 вместе с 9.1 на 9.3 может быть использован другой порт. Необходимо найти его и использовать флаг -p, при запуске osm2pgsql.

Поздравляю. Вы заполучили базу OpenStreetMap на выбранный регион. Проверить это можно командой:

psql -d map -c "select name from planet_osm_point where place='city';"

 

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

Установим пакет mod_tile. Пока он недоступен в репозитории Дебиан, поэтому нам потребуется предварительно скачать его с гит-хаба и распаковать в домашней директории:

wget https://github.com/openstreetmap/mod_tile/archive/6c2cb243e4c8b047950ab8062cd66245f20a5d2f.tar.gz -O mod_tile.tar.gz
tar -xzf mod_tile.tar.gz

Теперь установим пакеты autoconf, libtool, libmapnik-dev и apache2-dev:

su
apt install autoconf libtool libmapnik-dev apache2-dev
exit

Перейдем в каталог mod_tile и запустим:

cd mod_tile-6c2cb243e4c8b047950ab8062cd66245f20a5d2f/
./autogen.sh
./configure
make

Теперь запустим из под рута следующую команду:

su
make install
make install-mod_tile
exit
cd ..

 

Создание xml стиля Mapnik

Нам потребуются пакеты curl, unzip, gdal-bin, mapnik-utils и node-carto, для установки которых выполним под рутом:

su
apt install curl unzip gdal-bin mapnik-utils node-carto
exit

Вернемся в пользователя osm и загрузим необходимые шейп-файлы. Для справки: база osm не хранит в себе континенты и некоторые другие объекты, отображающиеся на низких зумах. Эти полигоны и линии подгружаются и прописываются в стиле с помощью команды:

cd ~/openstreetmap-carto-2.29.1/
./get-shapefiles.sh

Для смены имени базы данных можно выполнить команду:

sed -i 's/"dbname": "gis"/"dbname": "map"/' project.mml

Для того, что-бы сформировать xml-файл, непосредственно отвечающий за стиль, запустите:

carto project.mml > style.xml

 

Настройка рендера

Откройте в редакторе nano файл /usr/local/etc/renderd.conf (потребуется использовать sudo). Напротив XML пропишите путь к вашему xml-файлу картостиля. Напротив HOST пропишите localhost.

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

su
sed -i 's/XML=\/home\/jburgess\/osm\/svn\.openstreetmap\.org\/applications\/rendering\/mapnik\/osm\-local\.xml/XML=\/home\/osm\/openstreetmap-carto-2.29.1\/style.xml/' /usr/local/etc/renderd.conf
sed -i 's/HOST=tile\.openstreetmap\.org/HOST=localhost/' /usr/local/etc/renderd.conf

После этого, файл /usr/local/etc/renderd.conf  должен выглядеть так:

[default]
URI=/osm_tiles/
TILEDIR=/var/lib/mod_tile
XML=/home/osm/openstreetmap-carto-2.29.1/style.xml
HOST=localhost
TILESIZE=256
;HTCPHOST=proxy.openstreetmap.org
;** config options used by mod_tile, but not renderd **
;MINZOOM=0
MAXZOOM=19
;TYPE=png image/png
;DESCRIPTION=This is a description of the tile layer used in the tile json request
;ATTRIBUTION=&copy;<a href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and <a href=\"http://wiki.openstreetma$
;SERVER_ALIAS=http://localhost/
;CORS=http://www.openstreetmap.org
;ASPECTX=1
;ASPECTY=1

Теперь измените директорию плагинов (plugins_dir) и местоположение пакета (match debian package location) mapnik. Сделать это можно вручную, либо с помощью команд:

sed -i 's/plugins_dir=\/usr\/lib\/mapnik\/input/plugins_dir=\/usr\/lib\/mapnik\/2.2\/input\//' /usr/local/etc/renderd.conf
[mapnik]
plugins_dir=/usr/lib/mapnik/2.2/input/
font_dir=/usr/share/fonts/truetype
font_dir_recurse=1

Скопируйте скрипт renderd.init и установите право доступа к файлу renderd:

cd /home/osm
cp mod_tile-6c2cb243e4c8b047950ab8062cd66245f20a5d2f/debian/renderd.init /etc/init.d/renderd
chmod a+x /etc/init.d/renderd

Исправьте пути в скрипте init

sed -i 's/DAEMON=\/usr\/bin\/$NAME/DAEMON=\/usr\/local\/bin\/$NAME/' /etc/init.d/renderd
sed -i 's/DAEMON_ARGS=""/DAEMON_ARGS=" -c \/usr\/local\/etc\/renderd.conf"/' /etc/init.d/renderd
sed -i 's/RUNASUSER=www-data/RUNASUSER=osm/' /etc/init.d/renderd
mkdir -p /var/lib/mod_tile
chown osm:osm /var/lib/mod_tile

Теперь запустите rederd:

systemctl daemon-reload
service renderd start

 

Установка и настройка Apache и mod_tile

Установите апач с помощью команды:

apt install apache2

Конфигурация апача и загрузка mod_tiles выполняется командой:

echo "LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so" > /etc/apache2/mods-available/tile.load
ln -s /etc/apache2/mods-available/tile.load /etc/apache2/mods-enabled/

Добавьте следующий ниже текст с помощью редактора nano перед тегом <?/VirtualHost> в /etc/apache2/sites-enabled/000-default.conf 

LoadTileConfigFile /usr/local/etc/renderd.conf
ModTileRenderdSocketName /var/run/renderd/renderd.sock
# Timeout before giving up for a tile to be rendered
ModTileRequestTimeout 0
# Timeout before giving up for a tile to be rendered that is otherwise missing
ModTileMissingRequestTimeout 30

и перезапустите апач:

service apache2 restart

 

Проверка отдачи тайлов
Перейдите в браузере по адресу http://localhost/osm_tiles/0/0/0.png напрямую , либо с использованием порта 8080. Если все прошло успешно, вы увидете в браузере вот такую картинку:

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

sudo service renderd stop
rm -r /var/lib/mod_tile/default
sudo service renderd start

На ближайшие месяцы это будут единственные команды, которые вам потребуются в консоли.