{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "ШТОСМ: заметки с тегом overpass",
    "_rss_description": "ШТОСМ",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/shtosm.ru\/tags\/overpass\/",
    "feed_url": "https:\/\/shtosm.ru\/tags\/overpass\/json\/",
    "icon": false,
    "author": {
        "name": "Илья Зверев",
        "url": "https:\/\/shtosm.ru\/",
        "avatar": false
    },
    "items": [
        {
            "id": "1544",
            "url": "https:\/\/shtosm.ru\/all\/svoy-overpass\/",
            "title": "Свой Overpass",
            "content_html": "<p>Сегодня у сайта osm.org появился свой выделенный сервер для запросов к Overpass API. Он не публичный (и пожалуйста, не надо добавлять его себе в зеркала) и предназначен только для одного: поиска объектов вокруг заданной точки. Когда вы выбираете на сайте инструмент «Что здесь?» со стрелочкой и знаком вопроса и тыкаете в карту, сайт запрашивает список у Overpass API (потому что OSM API этого не умеет). Раньше это был сторонний сервер overpass-api.de, <a href=\"https:\/\/github.com\/openstreetmap\/operations\/issues\/569#issuecomment-955207478\">теперь — свой<\/a>.<\/p>\n<p>Эта новость порадует всех, кто пользуется инструментом «что здесь». Как узнать, что стало лучше? Тыкните в любое место три раза подряд. Из-за драконовских ограничений сервера раньше вы гарантированно получили бы ошибку: слишком много запросов. Теперь и на десятый клик сайт стабильно показывает объекты рядом и полигоны, содержащие заданное место. Видеть, как Overpass API работает без сбоев, умилительно: будто вернулся на пять лет назад.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/shtosm.ru\/pictures\/osm_query_tool.png\" width=\"950\" height=\"407\" alt=\"\" \/>\n<\/div>\n<p>Кажется, это была единственная часть сайта, которая работала нестабильно. После перехода с тайлового CDN (тридцать серверов которого так и стоят без дела) на Fastly ушли проблемы с медленными тайлами. Удивительно, но когда платишь людям за работу, эта работа оказывается сделанной хорошо. Построение маршрутов обеспечивают немецкий сервер OSRM (оплачен FOSSGIS) и немецкий же GraphHopper (витрина их бизнеса), оба стабильные. Чужие тайловые слои работают как часы, включая добавленные за пандемию французский велосипедный и немецкий общественного транспорта.<\/p>\n<p>Но этот переход напоминает, что на самом деле стабильность стоит очень больших денег. <a href=\"https:\/\/hardware.openstreetmap.org\/servers\/gorwen.openstreetmap.org\/\">Восьмиядерные серверы<\/a> со ста гигабайтами памяти и терабайтом диска для Overpass API на дороге не валяются. Прокладка маршрута будет вам <a href=\"https:\/\/www.graphhopper.com\/pricing\/\">стоить от 50$ в месяц<\/a>. Чуть меньше, если поднимете сервер на амазоне сами. Геокодирование платное. Тайлы платные. Кэширующий CDN тоже дорогой. А если хочется бесплатно и по-быстрому, то ограничения делают открытые сервисы бесполезными для публичных проектов.<\/p>\n<p>OpenStreetMap — это открытые и бесплатные карты для каждого. Для каждого человека. Но когда нашими сервисами начинают пользоваться компании, оказывается, что стоимость этого пользования <a href=\"http:\/\/shtosm.ru\/all\/dlya-kogo-tayly\/\">слишком велика<\/a>. Раньше мы могли банить проблемных пользователей по-одиночке, но теперь их слишком много. Карты нужны всем. И либо ты строишь забор, который мешает и тем, кто растит в саду яблони, либо каждый день будешь видеть длинную очередь людей в костюмах и с пустыми мешками.<\/p>\n",
            "date_published": "2021-10-30T19:21:00+04:00",
            "date_modified": "2021-10-30T19:20:16+04:00",
            "image": "https:\/\/shtosm.ru\/pictures\/osm_query_tool.png",
            "_date_published_rfc2822": "Sat, 30 Oct 2021 19:21:00 +0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "1544",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/shtosm.ru\/pictures\/osm_query_tool.png"
                ]
            }
        },
        {
            "id": "1460",
            "url": "https:\/\/shtosm.ru\/all\/zavernite-vsyo-pozhaluysta\/",
            "title": "Заверните всё, пожалуйста",
            "content_html": "<p>Overpass API версии 0.7.54 вышел больше года назад и в нём было так много нового, что Роланд завёл <a href=\"https:\/\/dev.overpass-api.de\/blog\/\">блог проекта<\/a>, чтобы похвастаться полезными применениями. Язык запросов был и так сложен, но там появились выражения: если, например, добавить <i>(if:count_tags() == 0)<\/i>, то получите объекты без тегов. А чтобы выбрать дороги с повышенной скоростью, пригодится <i>(if:number(t[maxspeed])>110)<\/i>. Наконец, появился важный селектор отбора по идентификатору <i>(id:123,456,...)<\/i>.<\/p>\n<p>Со дня на день выйдет следующая версия API. Роланд уже неделю <a href=\"https:\/\/wiki.openstreetmap.org\/w\/index.php?title=Overpass_API%2FOverpass_QL&type=revision&diff=1609067&oldid=1599297\">обновляет<\/a> описание языка запросов в вики. Там, разумеется, много непонятной дичи вроде операторов цикла и условия, а также «цикла до тех пор, пока результат не стабилизируется». Добавили новые операторы для <i>(if:...)<\/i>: <i>is_closed()<\/i> и <i>length()<\/i> для линий, <i>count_by_role(...)<\/i> для отношений.<\/p>\n<p>Есть и штука, которая будет немедленно полезна каждому, кто когда-либо делал запросы: фильтр <i>nwr<\/i>, который объединяет в себе <i>node<\/i>, <i>way<\/i> и <i>rel<\/i>. Больше не нужно перечислять все три типа в запросах по тегу: достаточно <i>nwr[shop=pet]<\/i> — и получите все зоомагазины, каков бы ни был их тип. И самое главное — фильтр <a href=\"https:\/\/overpass-turbo.eu\/s\/yNZ\">уже работает<\/a> на основном сервере!<\/p>\n<p>В списке запросов для <a href=\"https:\/\/github.com\/drolbr\/Overpass-API\/issues\/467\">тестирования<\/a> новой версии можно найти пример, который ещё лучше сократит ваши запросы:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">nwr[amenity=recycling](if: t[&quot;recycling:glass&quot;] || t[&quot;recycling:paper&quot;] || t[&quot;recycling:clothes&quot;]);<\/code><\/pre>",
            "date_published": "2018-05-15T12:37:07+04:00",
            "date_modified": "2018-05-15T12:43:36+04:00",
            "_date_published_rfc2822": "Tue, 15 May 2018 12:37:07 +0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "1460",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "1435",
            "url": "https:\/\/shtosm.ru\/all\/obhodnye-listy-v-qgis\/",
            "title": "Обходные листы в QGIS",
            "content_html": "<div class=\"e2-text-picture\">\n<img src=\"https:\/\/shtosm.ru\/pictures\/tula-pies.jpg\" width=\"1205\" height=\"561\" alt=\"\" \/>\n<\/div>\n<p>Шесть лет назад я написал <a href=\"https:\/\/wiki.openstreetmap.org\/wiki\/User:Zverik\/%D0%9E%D0%B1%D1%85%D0%BE%D0%B4%D0%BD%D1%8B%D0%B5_%D0%BB%D0%B8%D1%81%D1%82%D1%8B_%D1%81_Maperitive\">инструкцию<\/a>, как печатать обходные листы с использованием современного (на тот год) открытого софта и активно разрабатываемого (на тот год) рендерера Maperitive. Вечером перед тульской картовстречей я посмотрел на каталог этого рендерера и понял, что хватит это терпеть. Но что открыть взамен? В mapnik непросто повернуть карту (а это критично), с эзотерическими рендерерами, типа alaCarte и smrender, долго разбираться. Я уже много лет советую всем QGIS для печати карт — так возьму его сам.<\/p>\n<p>Это одновременно статья про то, как непросто и одновременно несложно было разобраться в инструментах и получить файл pdf с обходными листами, и инструкция. Печатайте больше обходных листов и выводите картографов на улицы. Вам не обязательно загружать собранные объекты именно в OpenStreetMap, но мы были бы рады. А вот данные для печати, кроме как из OSM, взять неоткуда. Начнём с их подготовки.<\/p>\n<p>(Если вы делаете обходные листы, не дочитав заметку до конца, советую заглянуть в главу «волшебство»).<\/p>\n<h2>Подготовка данных<\/h2>\n<p>Прежде всего, вам понадобятся QGIS версии не ниже 2.14, GDAL не ниже 2.0 и JOSM.<\/p>\n<ol start=\"1\">\n<li>Откройте JOSM, включите «режим эксперта», если ещё не.<\/li>\n<li>В меню «Файл» выберите «Загрузить с Overpass API» и введите туда запрос: <tt>(node({{bbox}});<;>);out meta;<\/tt><\/li>\n<li>Выберите район картовстречи и качайте. А затем сохраните в файл .osm и закрывайте редактор.<\/li>\n<li>Теперь нужен GDAL, чтобы сделать файл для QGIS. Для сохранения тегов типа addr:housenumber нужно настроить ogr2ogr. Если коротко, берите <a href=\"http:\/\/textual.ru\/osmconf.ini\">этот osmconf.ini<\/a> и положите к данным. Возможно, вы захотите добавить тегов в поля <i>attributes<\/i> разделов <i>[lines]<\/i> и <i>[multipolygons]<\/i>.<\/li>\n<li>Выполните из командной строки:<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"\">ogr2ogr --config OSM_CONFIG_FILE osmconf.ini -t_srs EPSG:3857 -f GPKG party.gpkg party.osm<\/code><\/pre><p>Здесь мы используем все достижения последних трёх лет: простое скачивание данных из Overpass API, хорошую поддержку формата OSM библиотекой GDAL и формат GeoPackage. Последний опубликован только три года назад и удобен для хранения данных из OSM: в отличие от шейпов, файл получается всего один и при этом непустой.<\/p>\n<p>Файл osmconf.ini в комплекте GDAL разочаровывает на каждом шагу: очень мало тегов, даже адресов нет. И нет полигональных водоёмов. То ли дело файл style, приложенный к osm2pgsql. Воспользовался бы последним, но тогда цепочка получилась бы слишком сложной: osm → osm2pgsql → postgresql → ogr2ogr → gpkg. Два шага в этой цепочке выглядят лишними.<\/p>\n<h2>Оформление карты в QGIS<\/h2>\n<p>Было бы здорово сказать: «просто используйте этот стиль на ваш файл», как обычно с мапником или маперитивом, но в мире высоких ГИС не всё так просто. Нужно открывать свойства каждого слоя, кликать на цвета, делать дубликаты, фильтровать. Любое ваше действие QGIS запишет в файл проекта, поэтому я не дам свой: кто знает, какую порнографию вы откопаете в <i>tula.qgs<\/i>. Так что — пошаговая инструкция.<\/p>\n<ol start=\"1\">\n<li>Откройте в QGIS файл GeoPackage и добавьте слои <i>lines<\/i> и <i>multipolygons<\/i>. В первом лежат дороги, ручьи и заборы, во втором — здания, парки и водоёмы.<\/li>\n<li>Справа внизу кликните на «EPSG:4326», включите перепроецирование на лету и выберите проекцию EPSG:3857, привычную по растровым картам.<\/li>\n<li>Отфильтруем дороги. Кликните правой кнопкой на слое линий, там — «Фильтр». Выделим улицы: <tt>highway in (’trunk’, ’primary’, ’secondary’, ’tertiary’, ’residential’, ’unclassified’, ’pedestrian’)<\/tt><\/li>\n<li>Теперь оформим: двойной клик на слое, во вкладке стиля цвет #777777 и толщину 0,3 мм.<\/li>\n<li>Во вкладке «Подписи» окна свойств сверху выберите «показывать подписи» и ниже поле «name». Цвет #666666 и размер шрифта 10.<\/li>\n<li>А что с пешеходными дорожками? Правую кнопку на слое, «Дублировать». Правите теги в фильтре на <tt>(’footway’, ’path’)<\/tt> и в свойствах: «простая линия», стиль линии ставите в «штриховая».<\/li>\n<li>Аналогично для всех остальных слоёв: линии <i>highway=service<\/i>, <i>railway=rail<\/i>, <i>waterway NOT NULL<\/i> и полигоны воды, парков и зданий <i>building NOT NULL<\/i>.<\/li>\n<li>Для зданий нужно указать подписи не только с номером дома, но и с этажностью. Справа от выбора поля подписи жмите на кнопку «ε» и введите формулу: <tt>addr_housenumber || ’\/’ || building_levels<\/tt><\/li>\n<\/ol>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/shtosm.ru\/pictures\/building-layer-labels.png\" width=\"968\" height=\"440\" alt=\"\" \/>\n<\/div>\n<p>На этапе фильтрации данных в слое я понял, что импорт файлов OSM напрямую — это шляпа: на любой чих QGIS мне мерзко отвечал: «какая-то проблема в вашем SQL». Поэтому нужен GeoPackage. Можно справиться и с более старым Spatialite, но зачем.<\/p>\n<p>После танцев с бубном в Maperitive (да, я помню их спустя шесть лет!) оформление карты в QGIS — праздник предсказуемости и удовольствие конфигурируемости. Не программирование, а интерактивный выбор из списков. Никаких подписей поверх линий, работает их вытеснение, а линии не меняют толщину и цвет в непонятной зависимости от масштаба. Да и вообще не нужно думать о масштабе. Первые десять минут не верил, что всё так просто, но да: быстро переписал все размеры и цвета из <a href=\"http:\/\/textual.ru\/walking.txt\">стиля для Maperitive<\/a> и увидел красивую карту.<\/p>\n<h2>Пирог<\/h2>\n<ol start=\"1\">\n<li>Добавьте новый векторный слой типа Polygon. В нём нужны поля <i>name<\/i> (строка) и <i>rotation<\/i> (целое число).<\/li>\n<li>В его свойствах отключите заливку, добавьте жирный контур и подпись из <i>name<\/i>.<\/li>\n<li>Включите редактирование и обводите листы для печати, один за другим. Левый клик — добавить точку, правый — завершить. Рисовать лучше прямо по улицам. Поле fid, если есть, заполнять не нужно. Называйте полигоны в формате «14-запад»: номер куска в пироге и указание на его часть.<\/li>\n<\/ol>\n<p>Опять же, видя прямоугольники листов на карте, ощутил наступление будущего: не нужно терпеть ме-е-едленный поворот всей карты в Inkscape, элементарно переставить или подвинуть куски. Единственное, чего не хватает, — автоматического вычисления поворота, чтобы каждый кусок печатать в максимально возможном масштабе. Поле <i>rotation<\/i> придётся заполнять самостоятельно.<\/p>\n<h2>Печать атласа<\/h2>\n<ol start=\"1\">\n<li>«Проекты» → «Создать макет», там во вкладке «Атлас» включите его, выберите слой, скройте его и щёлкните на «создать многостраничный документ».<\/li>\n<li>Добавьте карту и во вкладке «Свойства элемента» отрегулируйте положение и размер. Включите «используется для атласа» с полем 0%, выше свяжите вращение карты с полем <i>rotation<\/i>.<\/li>\n<li>Добавьте в угол текстовую метку с содержимым <tt>[% «name» %]<\/tt> и настройте её вид.<\/li>\n<\/ol>\n<p>Это всё — если не нужно поворачивать карту на отдельных листах. Но, конечно, поворачивать надо. Поэтому:<\/p>\n<ol start=\"1\">\n<li>Включите предпросмотр атласа.<\/li>\n<li>В окне QGIS откройте таблицу атрибутов слоя пирога и включите редактирование.<\/li>\n<li>Для каждого листа оцените поворот в градусах (положительные значения — по часовой стрелке) и впишите в нужную строку. После этого в окне макета нажмите «Обновить» и проверьте угол. Поправьте, если не попали.<\/li>\n<li>«Следующий объект» — и так далее до последней страницы. Муторно, но всё проще и быстрее, чем в Inkscape.<\/li>\n<\/ol>\n<p>Теперь точно всё. Из меню «Атлас» сразу печатайте или сохраните в PDF. Если нужно проверить оформление, напечатайте одну страничку из меню «Макет».<\/p>\n<h2>Нет, не всё<\/h2>\n<p>Боже, двадцать два шага. Пирог «наполеон» готовить проще, чем пирог к очередной картовстрече. Даже с учётом современных технологий получилось длинно и сложно. Клики правой кнопкой мыши, клики левой. Нам нужно проще. Поэтому я начал смотреть, как оптимизировать отдельные этапы. Главное — подбор углов поворота. Глазами получается неточно, а в модуле processing есть интересная функция «oriented minimum bounding box», которая делает ровно то, что нужно: находит повёрнутый прямоугольник минимальной площади, в который вписывается каждый объект слоя.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/shtosm.ru\/pictures\/rotated-buildings-nq8.png\" width=\"700\" height=\"300\" alt=\"\" \/>\n<\/div>\n<p>Открыл питонскую консоль, набросал короткий скрипт — и действительно, поверх слоя домиков в своём районе увидел россыпь повёрнутых прямоугольников вокруг них. А в атрибутах — размеры и углы. Сохранил скрипт, довольный. Через пару минут дошло: плагины же тоже на питоне пишутся. Если делать не только для себя — нужен плагин. А если делать плагин, то нужно идти до конца, чтобы получилось...<\/p>\n<h2>Волшебство<\/h2>\n<p>Именно по этой причине эта заметка задержалась на три недели. Забудьте все шаги выше. Забудьте Overpass, забудьте ogr2ogr, забудьте свойства слоёв и составление атласов. Теперь подготовка пирога так же проста, как его обход:<\/p>\n<ol start=\"1\">\n<li>Установите модуль «Walking Papers».<\/li>\n<li>Найдите кнопку с синими прямоугольничками и после нажатия выберите «Скачать данные OSM».<\/li>\n<li>На новом слое нарисуйте (слева вверху карандашик и какая-то область) полигон вокруг области картовстречи. Затем снова жмите «Скачать».<\/li>\n<li>Ура, есть карта! В слое «Pie Overview» наметьте широкими линиями границы кусков пирога.<\/li>\n<li>В слое «Pie Sheets» обведите кварталы, которые войдут на каждый лист. Обычно это два-три листа на кусок пирога. Давайте им названия в виде «4-запад», с номером куска и ориентиром внутри него.<\/li>\n<li>Снова под той же синей кнопкой «Подготовить к печати». Всё, просмотрите листы и экспортируйте в PDF.<\/li>\n<\/ol>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/shtosm.ru\/pictures\/qgis_wp_menu-nq8.png\" width=\"700\" height=\"320\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Картинка со старой версией модуля, где был лишний шаг<\/div>\n<\/div>\n<p>Невероятно! Шесть шагов, из которых только два требуют осмысленной работы, чесания головы, пристального взгляда на спутниковые снимки, ворошения прошлых пирогов, захлопывания крышки ноутбука с возгласом «да ну его, завтра нарисую!» Печать <i>качественных<\/i> обходных листов больше не удел гиков, которые «на ты» с таким осмерским софтом, который вы бы не захотели встретить в тёмной подворотне. Жду не дождусь августа, чтобы воспользоваться модулем по назначению.<\/p>\n<h2>Внутри QGIS<\/h2>\n<p>Осталась одна ма-аленькая проблемка. Если повернуть страницу атласа, то её масштаб станет мельче, чтобы вместить все данные с неповёрнутой страницы. А если карта управляется объектами с отдельного слоя, то на вычисление масштаба размеры этих объектов не влияют (посмотрите на отступ до дороги сверху на правом листе на фотографии в начале статьи). Вот незадача: хотели повернуть кварталы вдоль листа, чтобы приблизить их до упора и не мельчить при обходе, а получилось наоборот. Из-за этого поворот карты становится бесполезным. Что же делать?<\/p>\n<p>Как известно, открытый софт развивается через боль. Если вас что-то не устраивает в QGIS, вы либо идёте жаловаться в телеграм, либо оплачиваете разработку в NextGIS, либо делаете <i>git clone<\/i> и открываете Qt Designer сами. Будучи ленивым, я пропустил первые два шага, нашёл в исходниках вычисление размеров объекта и всунул в нужное место <i>geometry.rotate()<\/i>. <a href=\"https:\/\/github.com\/qgis\/QGIS\/pull\/4730\">Пул-реквест<\/a> отправился в ветку будущего релиза QGIS 3.0.<\/p>\n<p>А дальше я начал узнавать, чем гостеприимный опенсорс отличается от пассивно-агрессивного, как принято в OSM. «Офигенное решение проблемы, спасибо!» — поприветствовал меня один из разработчиков QGIS. И сразу такое тёплое чувство внутри: меня ждали, мне рады, я не зря изучал исходники. «Только допиши тест на питоне, пожалуйста» — и окрылённый, я пошёл изучать систему тестирования QGIS и писать нужную функцию.<\/p>\n<p>В процессе наткнулся на неудобство API прямоугольников и дописал функции их сдвига. Так я узнал про SIP bindings и зачем нужен скрипт <i>prepare_commit.sh<\/i>, который нужно запускать до <i>git commit<\/i>. На каждом этапе я мог кинуть клавиатуру в окно от очередного «сделай ещё тут кое-что», но благодаря вежливости и доброжелательности участников проекта я был рад делать ещё и ещё. Только метафорической линейкой по пальцам удержало меня от новых правок и улучшений в коде QGIS. Зачем оставаться в OSM и всё это терпеть, когда там так приятно и легко, и говорят спасибо после мёржа?<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/shtosm.ru\/pictures\/qgis-essen-meeting.jpg\" width=\"1200\" height=\"516\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Встреча приятных людей в Эссене, фотография Аниты Грейзер<\/div>\n<\/div>\n<h2>Но проблема осталась<\/h2>\n<p>Версия QGIS 2.18 останется в большинстве репозиториев до сентября 2018 года: моя правка в неё не попадёт. Пользоваться модулем хочется прямо сейчас, не дожидаясь новых версий QGIS. Поэтому нужно как-то обойти ошибку. С пул-реквестом за плечами решение оказалось несложным: модуль делает копию слоя пирога с модифицированной геометрией и новыми атрибутами. Новый слой невидимо управляет параметрами карты, чтобы у вас были идеальные обходные листы.<\/p>\n<p>Как ещё можно улучшить? Ну, например, сделать рисование листов пирога сразу прямоугольниками пропорций листа А4. Тогда этап вычисления углов поворота станет ненужным. Слой тайлов OpenStreetMap пока приходится подключать вручную через <a href=\"http:\/\/nextgis.ru\/blog\/quickmapservices\/\">QuickMapServices<\/a>: возможно, лишние клики стоит оптимизировать, общаясь с этим модулем напрямую. Это поможет и для подготовки обзорных страниц в атлас. Наконец, оформление обходных листов зашито в модуль: чтобы его поменять, нужно править файл внутри каталога, но после обновления модуля правки потеряются.<\/p>\n<p>Буду ли я улучшать модуль? Нет, он достаточно хорош и мне лень.<\/p>\n<p>Писать модули прикольно. Что для JOSM, что для QGIS. По окончании радует ощущение, что операции, которые требовали времени и внимательности, переложены на машину и делаются одной кнопкой. Оформление модуля трудоёмко: нужно копаться в API, разбираться с репозиторием, рисовать значки и не забыть про переводы. Альтернатива — короткие куски кода для консоли python или плагина <a href=\"http:\/\/shtosm.ru\/all\/bez-komand\/\">JOSM Scripting<\/a>. Писать их не проще, а найти потом, когда через год-другой возникнет похожая задача, — почти невозможно. Так что лучше неделю потерять, но потом несколько часов сэкономить.<\/p>\n",
            "date_published": "2017-07-05T11:44:18+04:00",
            "date_modified": "2017-07-05T11:43:25+04:00",
            "image": "https:\/\/shtosm.ru\/pictures\/tula-pies.jpg",
            "_date_published_rfc2822": "Wed, 05 Jul 2017 11:44:18 +0400",
            "_rss_guid_is_permalink": "true",
            "_rss_guid": "https:\/\/shtosm.ru\/all\/obhodnye-listy-v-qgis\/",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/shtosm.ru\/pictures\/tula-pies.jpg",
                    "https:\/\/shtosm.ru\/pictures\/building-layer-labels.png",
                    "https:\/\/shtosm.ru\/pictures\/rotated-buildings-nq8.png",
                    "https:\/\/shtosm.ru\/pictures\/qgis_wp_menu-nq8.png",
                    "https:\/\/shtosm.ru\/pictures\/qgis-essen-meeting.jpg"
                ]
            }
        },
        {
            "id": "1437",
            "url": "https:\/\/shtosm.ru\/all\/overpass-kladyot-v-osm\/",
            "title": "Overpass кладёт в OSM",
            "content_html": "<div class=\"e2-text-picture\">\n<img src=\"https:\/\/shtosm.ru\/pictures\/overpass-to-osm-nq8.png\" width=\"700\" height=\"350\" alt=\"\" \/>\n<\/div>\n<p>Этой ночью Мартин Райфер научил <a href=\"http:\/\/overpass-turbo.eu\/\">Overpass Turbo<\/a> сохранять запросы не только в локальное хранилище браузера, но и прямо в OSM API, после авторизации. Вы увидите свои запросы на всех компьютерах и на любой копии сервиса.<\/p>\n<p>Кажется, это второй случай использования <a href=\"https:\/\/wiki.openstreetmap.org\/wiki\/API_v0.6#Preferences_of_the_logged-in_user\">Preferences API<\/a> популярным приложением. Первым был редактор Merkaartor, который <a href=\"https:\/\/trac.openstreetmap.org\/changeset\/12158\/subversion\">задействовал<\/a> эти функции, когда версия API была ещё 0.5, и наткнулся на ограничение в 150 тегов. Потому что теги и настройки обрабатывались одним и тем же кодом. Были предложения сохранять настройки в OSM и другим редакторам — JOSM и iD, но забылись за отсутствием интереса.<\/p>\n<p>Кроме ста пятидесяти настроек <i>за раз<\/i>, у API есть ещё ограничение: не больше 255 символов на строку. Длинные запросы Overpass Turbo сохраняет в несколько ключей и склеивает их при загрузке.<\/p>\n<p>Наконец, API не решает задачу публикации кода запроса. Пусть сервис сам по себе — библиотека запросов с удобным интерфейсом, <a href=\"https:\/\/github.com\/tyrasd\/overpass-turbo\/issues\/219\">было бы здорово<\/a> отвязаться от неё и загружать код в GitHub Gist вместе с коротким примером использования в Leaflet. Ровно как это делает Geojson.io при нажатии кнопки «Share».<\/p>\n",
            "date_published": "2017-06-26T15:53:19+04:00",
            "date_modified": "2017-06-27T11:26:55+04:00",
            "image": "https:\/\/shtosm.ru\/pictures\/overpass-to-osm-nq8.png",
            "_date_published_rfc2822": "Mon, 26 Jun 2017 15:53:19 +0400",
            "_rss_guid_is_permalink": "true",
            "_rss_guid": "https:\/\/shtosm.ru\/all\/overpass-kladyot-v-osm\/",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/shtosm.ru\/pictures\/overpass-to-osm-nq8.png"
                ]
            }
        },
        {
            "id": "1414",
            "url": "https:\/\/shtosm.ru\/all\/josm-tested-xx\/",
            "title": "josm-tested XX",
            "content_html": "<div class=\"e2-text-picture\">\n<img src=\"https:\/\/shtosm.ru\/pictures\/gpx-heatmap.jpg\" width=\"700\" height=\"350\" alt=\"\" \/>\n<\/div>\n<p>Только что вышла очередная стабильная версия JOSM, в которой закрыли дыру с несанкционированными запросами в интернет. Чуть ранее опубликовали другую стабильную версию с кучей изменений за месяц. Самое интересное в ней — отображение загруженных треков в виде тепловой карты (как на картинке). Теперь не нужно подключать ненадёжный тайловый слой, чтобы проследить оси дорог, и можно пользоваться своим огромным архивом треков. Чтобы переключить отображение, нажмите правую кнопку на слое треков, там «настроить отрисовку».<\/p>\n<p>С августа в редакторе сделали ещё несколько полезных штук:<\/p>\n<ul>\n<li>Пункт меню «Файл → Скачать в текущей просматриваемой области» без вопросов скачивает данные в рамках окна.<\/li>\n<li>Наконец-то полигоны сохраняются в GeoJSON не как LineString, а в Polygon. Эта особенность сломала немало мозгов. Также мультиполигоны превращаются в MultiPolygon и убрали безумие с проекциями в атрибуте crs, теперь только WGS-84.<\/li>\n<li>В запросах к Overpass API можно использовать ключи {{bbox}} и {{geocodeArea:...}}, как в Overpass Turbo. Без bbox скачивание данных с Overpass может вернуть ошибку «an empty query is not allowed». Напомню, для скачивания всех объектов в прямоугольнике вводите <i>(node({{bbox}});<;>);out meta;<\/i><\/li>\n<li>Ползунок прозрачности слоя и других эффектов можно крутить колесом мышки.<\/li>\n<li>Если скопировать в буфер обмена ссылку на объект на osm.org и в окне JOSM нажать Ctrl+V, объект скачается с сервера. Это работает и для других видов ссылок: например, на треки.<\/li>\n<li>Иногда на узлах линий стоят теги <i>direction<\/i> или <i>incline<\/i>, зависящие от направления линии (чаще всего на highway=stop \/ give_way). Теперь JOSM отслеживает их в момент разворота линии и предлагает поменять значения на противоположные.<\/li>\n<li>Встроили базу границ стран, теперь правила валидации и картостили можно привязывать к стране. Например, запрещать «ss» в названиях в Германии.<\/li>\n<li>Настройки, кэш и модули теперь не в одном каталоге, а как регламентирует операционная система: в cache, config и т. п.<\/li>\n<\/ul>\n<p>Помните, что слово «стабильный» в таких новостях нельзя использовать без кавычек, пользуйтесь свежими ночными сборками JOSM, читайте список интересных изменений на <a href=\"http:\/\/josm.ru\">JOSM.ru<\/a> и качайте оттуда редактор.<\/p>\n",
            "date_published": "2017-02-02T21:18:05+04:00",
            "date_modified": "2017-02-07T21:11:14+04:00",
            "image": "https:\/\/shtosm.ru\/pictures\/gpx-heatmap.jpg",
            "_date_published_rfc2822": "Thu, 02 Feb 2017 21:18:05 +0400",
            "_rss_guid_is_permalink": "true",
            "_rss_guid": "https:\/\/shtosm.ru\/all\/josm-tested-xx\/",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/shtosm.ru\/pictures\/gpx-heatmap.jpg"
                ]
            }
        },
        {
            "id": "1375",
            "url": "https:\/\/shtosm.ru\/all\/vsyo-na-emodziyah\/",
            "title": "Всё на эмодзиях",
            "content_html": "<div class=\"e2-text-picture\">\n<img src=\"https:\/\/shtosm.ru\/pictures\/emojimap-nq8.png\" width=\"700\" height=\"300\" alt=\"\" \/>\n<\/div>\n<p>Хорошие значки — один из признаков качественной карты, поэтому в Mapbox не довольствуются открытым набором <a href=\"https:\/\/github.com\/twain47\/Open-SVG-Map-Icons\">SJJB<\/a>, а сделали свой открытый набор Maki: 144 значка в public domain на гитхабе. Недавно компания написала обширный <a href=\"https:\/\/www.mapbox.com\/maki-icons\/guidelines\/\">дизайн-док<\/a> для тех, кто хочет дополнить набор значков, и открыла <a href=\"https:\/\/www.mapbox.com\/maki-icons\/#editor\">редактор оформления Maki<\/a>. Теперь не нужно в Inkscape дорисовывать фон или перекрашивать методом изменения чисел в скрипте, достаточно выбрать параметры в веб-интерфейсе и нажать кнопку «скачать». Ещё бы такое для SJJB — вариантов Maki иногда не хватает.<\/p>\n<p>Впрочем, у невзыскательных картографов, или которым хочется праздника, есть ещё вариант: воспользоваться общедоступным огромным наборов значков, который встроен прямо в систему. <a href=\"https:\/\/emojimap.net\/#3\/48.4\/12.5\">Emoji Map<\/a> Мертена Пеетца удивляет не только яркостью при тёмном фоне, но и плотностью заведений.<\/p>\n",
            "date_published": "2016-06-28T21:09:12+04:00",
            "date_modified": "2016-06-28T21:09:06+04:00",
            "image": "https:\/\/shtosm.ru\/pictures\/emojimap-nq8.png",
            "_date_published_rfc2822": "Tue, 28 Jun 2016 21:09:12 +0400",
            "_rss_guid_is_permalink": "true",
            "_rss_guid": "https:\/\/shtosm.ru\/all\/vsyo-na-emodziyah\/",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/shtosm.ru\/pictures\/emojimap-nq8.png"
                ]
            }
        },
        {
            "id": "1337",
            "url": "https:\/\/shtosm.ru\/all\/1-7-gigabayta\/",
            "title": "1,7 гигабайта",
            "content_html": "<p>В России каждый осмер знает: если нужен свежий дамп какой-то области страны, или вся территория бывшего СССР целиком — дорога на <a href=\"http:\/\/gis-lab.info\/projects\/osm_dump\/\">ГИС-Лаб<\/a>, где каждое утро обновляются выгрузки в осмерские форматы и в шейп-файлы. Выгрузки других стран делает Geofabrik, хотя и чуть попроще: без части точек обрезанных линий и без мультиполигонов в шейпах. Россия на их сервере была, но в странном виде: разорванная на европейскую и азиатскую части. Из-за этого зона охвата некоторых европейских валидаторов обрывалась на Екатеринбурге.<\/p>\n<p>Сегодня Фредерик сообщил, что переделал <a href=\"http:\/\/download.geofabrik.de\/russia.html\">выгрузки для России<\/a>: теперь страна разделена на 9 федеральных округов, для которых ежедневно публикуют данные в pbf, bz2, shp, и диффы в формате, готовом к подключению в osmosis. Туда входит и Крым, отсутствующий в сборке ГИС-Лаба: Германия не признаёт его частью России, но геоинформационные системы у нас без Крыма никто не примет.<\/p>\n<p>Из других источников стоит знать <a href=\"http:\/\/extract.bbbike.org\/\">bbbike.org<\/a>, присылающий на почту произвольный прямоугольный регион в одном из 29 форматов, включая гарминовский и OsmAnd, <a href=\"https:\/\/mapzen.com\/data\/metro-extracts\">выгрузки городов<\/a> от Mapzen и <a href=\"http:\/\/wiki.openstreetmap.org\/wiki\/Overpass_API\/Language_Guide#Sample_map_calls\">Overpass API<\/a>, который позволяет скачать свежие данные по произвольной границе, но размером до 300 мегабайт несжатых данных. Последнее удобно в редакторе JOSM: введя <tt>(node;<);out meta;<\/tt> в поле запроса overpass, можно не беспокоиться о размере прямоугольника.<\/p>\n",
            "date_published": "2015-11-05T17:53:12+04:00",
            "date_modified": "2015-11-05T17:53:05+04:00",
            "_date_published_rfc2822": "Thu, 05 Nov 2015 17:53:12 +0400",
            "_rss_guid_is_permalink": "true",
            "_rss_guid": "https:\/\/shtosm.ru\/all\/1-7-gigabayta\/",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "1280",
            "url": "https:\/\/shtosm.ru\/all\/palcem-v-kartu\/",
            "title": "Пальцем в карту",
            "content_html": "<div class=\"e2-text-picture\">\n<img src=\"https:\/\/shtosm.ru\/pictures\/overpassq.png\" width=\"700\" height=\"300\" alt=\"\" \/>\n<\/div>\n<p>Второй пул-реквест, ждавший в почти готовом состоянии с марта, только что принят в код сайта <a href=\"https:\/\/openstreetmap.org\">osm.org<\/a>: поиск объектов вокруг заданной точки. Просто включите режим «?» и тыкните куда-нибудь. Объекты отсортированы по типу, за ними идёт второй список — границ поселений и регионов, в которые попала точка. Данные предоставлены сервисами Overpass API и Nominatim.<\/p>\n<p>Остался последний из трёх долгостроев: <a href=\"https:\/\/github.com\/openstreetmap\/openstreetmap-website\/pull\/716\">прокладка маршрута<\/a> (<a href=\"http:\/\/jsrouting2.apis.dev.openstreetmap.org\/directions\">демо<\/a>).<\/p>\n",
            "date_published": "2014-11-07T14:17:25+04:00",
            "date_modified": "2014-11-07T14:17:17+04:00",
            "image": "https:\/\/shtosm.ru\/pictures\/overpassq.png",
            "_date_published_rfc2822": "Fri, 07 Nov 2014 14:17:25 +0400",
            "_rss_guid_is_permalink": "true",
            "_rss_guid": "https:\/\/shtosm.ru\/all\/palcem-v-kartu\/",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/shtosm.ru\/pictures\/overpassq.png"
                ]
            }
        },
        {
            "id": "1249",
            "url": "https:\/\/shtosm.ru\/all\/noveyshaya-istoriya\/",
            "title": "Новейшая история",
            "content_html": "<p>Перед европейской конференцией, в начале июня, Роланд анонсировал в talk@ несколько <a href=\"https:\/\/lists.openstreetmap.org\/pipermail\/talk\/2014-June\/069949.html\">нововведений<\/a> в Overpass API. Первое — дополненные диффы, которые копились на сервере с <a href=\"http:\/\/shtosm.ru\/2012\/09\/18\/1\/\">сентября 2012 года<\/a>, теперь генерируются на лету. Помимо освобождённого терабайта, это позволяет фильтровать диффы запросами Overpass: например, получать их для выбранной области.<\/p>\n<p>И раз сервер теперь помнит историю, почему бы не добавить соответствующие запросы — к «чердаку», как называет это Роланд? Дописав в начало <tt>[date:«2014-07-11T08:00:00Z»];<\/tt> (с обычными кавычками), получите данные из этого дня, как если бы делали запрос неделю назад. Разумеется, есть аналогичный запрос на разницу между двумя датами. Автор предупреждает, что из-за глюка в обновлениях данные до 2 июня временно ненадёжны.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/shtosm.ru\/pictures\/achavi-changeset.gif\" width=\"700\" height=\"250\" alt=\"\" \/>\n<\/div>\n<p>Норберт Реннер по такому случаю <a href=\"http:\/\/www.openstreetmap.org\/user\/ikonor\/diary\/23329\">вернулся<\/a> к своему визуализатору правок Achavi. <a href=\"http:\/\/shtosm.ru\/2013\/03\/11\/1\/\">Старая версия<\/a> давно живёт на overpass-api.de, а <a href=\"http:\/\/nrenner.github.io\/achavi\/\">новая<\/a> — на гитхабе автора. Она не спешит качать диффы, а предлагает приблизить интересующее место и нажать кнопку «load» слева вверху. Через несколько секунд вы увидите визуализированные правки за последние сутки. Границы временного интервала можно поменять.<\/p>\n<p>И, впервые в проекте, можно визуализировать произвольный ченджсет без многочасового ожидания в очереди, просто добавив к адресу <tt>?changeset=123456<\/tt>. Да что там, держите букмарклет: <a style=\"background:#eee;padding:5px;border-radius:3px;\" title=\"Ченджсет на карте\" href=\"javascript:(function(){var%20m=\/openstreetmap\\.org\\\/changeset\\\/(\\d+)\/.exec(location.href);if(m){location.assign('http:\/\/nrenner.github.io\/achavi\/?changeset='+m[1]);}})();\">Changeset<\/a> (перетащите в закладки). Он не покажет отношения, чтобы не замусоривать карту; для этого добавьте <tt>&relations=true<\/tt>. Напомню, что тёмно-красным отображается старая геометрия сдвинутых объектов. Теперь ожидание нового OWL станет менее томительным.<\/p>\n",
            "date_published": "2014-07-18T00:27:33+04:00",
            "date_modified": "2014-07-18T15:31:05+04:00",
            "image": "https:\/\/shtosm.ru\/pictures\/achavi-changeset.gif",
            "_date_published_rfc2822": "Fri, 18 Jul 2014 00:27:33 +0400",
            "_rss_guid_is_permalink": "true",
            "_rss_guid": "https:\/\/shtosm.ru\/all\/noveyshaya-istoriya\/",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [],
                "og_images": [
                    "https:\/\/shtosm.ru\/pictures\/achavi-changeset.gif"
                ]
            }
        }
    ],
    "_e2_version": 3576,
    "_e2_ua_string": "E2 (v3576; Aegea)"
}