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