57 заметок с тегом

josm

Волшебный тык

Роман в чатике обратил внимание на новый модуль для JOSM, Magic Wand. Он делает ровно то, что знакомо из рисовальных приложений: тыкаешь на озеро или лес, и он выделяет все соседние точки похожего цвета. Подсвеченную область можно увеличить или уменьшить, тыкая с зажатыми Ctrl или Shift. И в конце из подсветки делаем полигон кнопками Ctrl+2.

Старожилам это может напомнить ScanAerial, или даже Fuzzer, которые выдавали полигоны из спутниковых снимков одиннадцать лет назад. Нынче их установить непросто, да и незачем: настройка сложна, функции ограничены, качество — примерно такое же. Новый модуль не заморачивается: он распознаёт содержимое экрана, а не качает тайлы подложки. Передвинешь карту — и выделение сбрасывается. Странно, но понятно.

Детальные снимки могут стать проблемой — понадобится отдалить карту, чтобы ловить не отдельные деревья или волны на озере. Напомню, что в панели слоёв под кнопкой с глазом спрятана постобработка картинок: там можно слегка размыть снимки или сделать их насыщеннее, что усилит контраст. Поскольку распознаётся только содержимое экрана, несколько полигонов может понадобиться объединить, обычным сочетанием Shift+J.

Юниор Флорес, аналитик данных из Development Seed и автор модуля, сделал неплохую основу для нового полезного инструмента. Но JOSM — явно не его редактор, поэтому в модуле не хватает многого, очевидного для осмера. Например, Magic Wand не делает мультиполигоны, поэтому не обращайте внимания на дырки в подсвеченных областях. Зачем-то модуль пересделал объединение полигонов (Ctrl+3), а из шести настраиваемых значений в панели модуля можно изменить только одно (чувствительность) — и оно потеряется при перезапуске.

Наконец, держите под рукой инструмент упрощения линии (Shift+Y) с величиной ошибки метров в десять: несмотря на то, что качество автоматического распознавания никак не дотягивает до ручной обрисовки, по количеству точек в контуре оно легко обгонит человека.

Конец SVN

На прошлой неделе SVN-репозиторий кода OpenStreetMap перевели в режим «только чтение». Чуть раньше то же сделали с Trac, системой управления задачами и онлайн-интерфейсом к коду. Оба сервиса давно устарели, разработка давно перешла в Git. Кроме JMapViewer и модулей для JOSM, которые переехали на собственный сервер.

Trac и SVN — это концентрированная история нашего проекта. Там можно посмотреть на первый код Стива Коста от августа 2004 года, когда он начал строить API на языке Java (потом всё переписали, конечно). В репозитории можно найти Osmarender и Tiles@Home, Gosmore, Yours, зачатки Mapnik и Nominatim, Potlatch 1, форк JOSM без инструментов, старый Java-аплет и много маленьких полезных скриптов для импорта и работы с данными. Большинство проектов переехали на GitHub. Ничто, кроме модулей JOSM, не обновлялось с 2018 года. Тикеты в Trac тоже перестали появляться полтора года назад, теперь их только закрывают.

Несмотря на медленный поток новый версий, и Trac, и SVN для современных разработчиков мертвы. Их успешно заменяют GitHub, GitLab или Bitbucket. Последняя версия Ubuntu, на которую сейчас переводят серверы OSM, вообще исключила Trac из репозиториев, отчасти потому, что тот требует устаревшего Python 2.7. Проекты OSGeo, когда-то все на Trac, переходят на GitHub или Gitea. Неудивительно, что в мае рабочая группа OWG решила отключить эти сервисы, оставив для истории их замороженные слепки.

Что делать разработчикам модулей для JOSM, которые пользовались SVN: зайти в каталог репозитория и ввести svn relocate со ссылкой из этой страницы. Дальше работать как раньше, через svn ci, svn up и тому подобное. В ближайшие годы JOSM не слезет с SVN, пусть код уже зеркалируется на GitHub. Но учить эту систему не обязательно: новые модули можно разрабатывать в GitHub или в GitLab. Достаточно создать проект в группе JOSM и добавить ссылку на собранный jar-файл в этот список.

Это не последнее изменение, запланированное OWG. Когда-нибудь случится ещё одно, которое затронет всех без исключения активных участников проекта. Форум, почтовые рассылки и справочную систему собираются объединить на движке Discourse. Потому что нынешний движок старый и неудобный, а форумы на discourse даже выглядят приятно: например, форум смоленских байкеров. Айан Диз уже смог импортировать базу форума на новый движок и сейчас исследует, как перенести учётные записи пользователей.

2020   josm   osm.org

Третий редактор

Написав заметку про iD, немедленно задумался: а где третий? Почему из настольных редакторов у нас выбор только между iD и JOSM?

Когда я только пришёл в проект, редакторов было три: Potlatch, JOSM и Merkaartor. Первый выбирали за простоту, второй — за фичи битком. Последний был непривычно быстр и выглядел как нормальное приложение, потому что написан на C++. Увы, соавторы для него не нашлись, поэтому Ладислав лишь чинит редкие ошибки и выносит отвалившиеся фрагменты. Последний релиз Merkaartor был в ноябре прошлого года. Пользователей он начал терять в 2013 году, уйдя глубоко в низ рейтинга вслед за Potlatch 1. Тогда же по количеству правок он уступил третье место iD, а в 2018 его сдвинул с четвёртого Go Map.

С 2013 года у нас всё ещё три популярных настольных редактора: JOSM, iD и Potlatch 2. Написанные на Java, JavaScript и Flash. Очевидно, что последний живёт только благодаря упоминанию на главной странице — хотя сам по себе он очень хорош, быстрый и простой, особенно если выучить кнопки. Но люди стремительно его забывают: сейчас он тоже уполз вниз, им пользуются для правки карты реже, чем даже OsmAnd. 31 декабря Potlatch умрёт, как я упомянул в прошлой статье, потому что Adobe прекращает поддержку Flash, и его окончательно выпилят из браузеров. Предложение Ричарда отвязать редактор от браузера Совет решил не принимать.

Так что да, выбор между iD и JOSM. Почему никто не начинает писать полноценный десктопный редактор OpenStreetMap? В списке редакторов вообще никаких намёков: есть тематические, есть обрезки, встроенные в ГИС и операционные системы, но ничего, что может заменить даже Potlatch 1. Получается какая-то двухпартийная система: не нравится JOSM — добро пожаловать в iD, у него отличный интерфейс, понятные панели и не нужно бороться с JRE. Не нравится iD — ставь JOSM, он работает офлайн у него сотни модулей и стилей оформления карты. Но... Может, нужно больше вариантов?

Кажется, тут я должен топить за поиск революционера и больше альтернатив — но данные подсказывают, что правильнее наоборот. Таблицей количества пользователей правят мобильные и тематические редакторы: у Maps.Me пользователей в полтора раза больше, чем у JOSM, и четвёрка StreetComplete — Osmand — Vespucci — Go Map тоже в сумме бьёт его по пользователям. А ниже притаились настольные и веб-редакторы отдельных элементов: GNOME Maps, OsmHydrant, Level0. Кажется, картографам их достаточно. В мире редакторов назрел перелом, и честно говоря, давно пора.

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

JOSM устарел. Нам не нужен не только третий редактор, — нам уже не нужен JOSM. Рисовать тысячи домиков и сотни километров грунтовок по снимкам отлично получается у участников Missing Maps и прочих мероприятий гуманитарной команды. JOSM не только оптимизирует массовое рисование, которое давно устарело. Он местами вредит проекту и другим картографам. Например, удобством работы с мультиполигонами — стали бы вы рисовать «лоскуты» в iD? А каково их там править? Размером пакетов правок (в среднем 150 объектов против 50 в iD) — все валидаторы жалуются на плодовитых картографов. Лёгкостью подключения слоёв гугля и кадастра. Тем, что система модулей позволяет писать системы тегирования, которые вручную применять невозможно. Сложность JOSM проникает в OpenStreetMap и делает его сложнее.

Достаточно iD. Для крупных же правок у нас появился новый инструмент: RapiD. Основанный на том же iD, в нём одной кнопкой можно добавить сеть дорог, тысячи домиков и прочие данные через платформу Esri. Он закрывает вопрос импортов и раскрашивания «белых пятен». Где нет в RapiD, туда нагонят картографов крупные корпорации (в экономически интересные регионы) и гуманитарная команда (в менее интересные). Эта ситуация установилась с прошлого года, таков теперь OpenStreetMap.

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

Наше дело больше не рисовать основные дороги и не следить за валидаторами. Можно расслабиться, взять в руки обходные листы или StreetComplete и выйти на улицу как десять лет назад. Позаносить парикмахерские и люки. Обойти соседний двор и нарисовать в нём тропинки и заборы. Для этого достаточно веб-редактора, он нынче удобен даже на планшете со стилусом. Или мобильного приложения — а их становится больше с каждым месяцем.

josm-tested XXI

Две недели назад вышла очередная версия редактора JOSM, 12450. Он по-прежнему приветствует картографов обвиняющим «нечем заняться?». Прежде, чем объяснить открывающую картинку, перечислим интересные штуки, появившиеся за последние полгода:

  • Автоудаление подложек из списка в марте озадачило некоторых пользователей, которые добавляли слои Bing или OSM вручную.
  • Если в файле osm стоит атрибут upload="never", данные нельзя загрузить в OSM, без вопросов.
  • Можно не приближаться к данным после их загрузки, если снять галочку в окне скачивания.
  • Редактор научился перепроецировать растровые подложки — попробуйте со слоем Bing включить WGS84. Кстати, при перезапуске восстанавливается правильная проекция веб-меркатора.
  • Наконец-то можно загружать аудиофайлы в форматах mp3 и aac.
  • При нажатии на кнопку видимости в панели слоёв выпадает панель конфигурации. Для слоя GPX в этой панели можно поменять цвет — конечно, если там не тепловая карта.
  • Окно поиска стало шире: настройки и справку сгруппировали рамками, а в версии latest добавили выбор заготовки, по которой можно фильтровать.

Увлечённых мапперов ничего из этого не порадует: аудиомаппинг переоценён, проекции достаточно стандартной, а поиском мы пользуемся не глядя. Но если посмотреть в новом редакторе на торговый комплекс «Охотный ряд» в Москве, сразу заметна самая полезная функция. Felis в прошлом мае правил поэтажные планы фильтрами в JOSM, а теперь знать формат фильтров не обязательно: голубенькие кнопки с цифрами помогут быстро переключаться между этажами.

Новые автофильтры работают не только с тегом level. В настройках, во вкладке «данные OSM», можно выбрать нужное числовое свойство: layer, maxspeed или voltage. Впрочем, сложно представить, зачем могут пригодиться фильтры по значениям этих тегов. Создавать объекты при включенном фильтре сложно: новые точки и линии мгновенно пропадают, так как нужного тега на них, конечно, нет.

Редактор iD недавно получил всплывающие панели (Ctrl+I), показывает кнопки по «?» и знаки из Mapillary, но не научился ничему, связанному с поэтажными планами. Хотя... Адриен Пави, автор карты OpenLevelUp, добавил кнопки выбора этажей в этот редактор. Демо-версия показывает только один перекрёсток в центре Парижа и не обновлялась уже ровно год. Также год назад Pavel Zbytovský предложил пул-реквест в iD, добавляющий кнопку «Indoor» справа вверху с фильтром по этажам. Примеры есть по ссылке: эта версия редактора установлена на чешском сайте OSM и умеет работать с любым местом карты.

Фильтры в обоих редакторах пока выглядят кривовато, но из этих новостей уже хочется сделать вывод. Простая схема тегирования поэтажных планов прижилась: в базе 130 тысяч тегов indoor=* и 400 тысяч тегов level=*, из которых четверть стоит на линиях highway. Пока что этажи разрисовывают энтузиасты, умеющие настроить фильтры и мыслить трёхмерно на плоскости базы OpenStreetMap. Но как когда-то с мультиполигонами и отношениями запретов поворотов, авторы главных редакторов пытаются упростить рисование поэтажных планов.

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

 1 комментарий   2017   id   josm

Обходные листы в QGIS

Шесть лет назад я написал инструкцию, как печатать обходные листы с использованием современного (на тот год) открытого софта и активно разрабатываемого (на тот год) рендерера Maperitive. Вечером перед тульской картовстречей я посмотрел на каталог этого рендерера и понял, что хватит это терпеть. Но что открыть взамен? В mapnik непросто повернуть карту (а это критично), с эзотерическими рендерерами, типа alaCarte и smrender, долго разбираться. Я уже много лет советую всем QGIS для печати карт — так возьму его сам.

Это одновременно статья про то, как непросто и одновременно несложно было разобраться в инструментах и получить файл pdf с обходными листами, и инструкция. Печатайте больше обходных листов и выводите картографов на улицы. Вам не обязательно загружать собранные объекты именно в OpenStreetMap, но мы были бы рады. А вот данные для печати, кроме как из OSM, взять неоткуда. Начнём с их подготовки.

(Если вы делаете обходные листы, не дочитав заметку до конца, советую заглянуть в главу «волшебство»).

Подготовка данных

Прежде всего, вам понадобятся QGIS версии не ниже 2.14, GDAL не ниже 2.0 и JOSM.

  1. Откройте JOSM, включите «режим эксперта», если ещё не.
  2. В меню «Файл» выберите «Загрузить с Overpass API» и введите туда запрос: (node({{bbox}});<;>);out meta;
  3. Выберите район картовстречи и качайте. А затем сохраните в файл .osm и закрывайте редактор.
  4. Теперь нужен GDAL, чтобы сделать файл для QGIS. Для сохранения тегов типа addr:housenumber нужно настроить ogr2ogr. Если коротко, берите этот osmconf.ini и положите к данным. Возможно, вы захотите добавить тегов в поля attributes разделов [lines] и [multipolygons].
  5. Выполните из командной строки:
ogr2ogr --config OSM_CONFIG_FILE osmconf.ini -t_srs EPSG:3857 -f GPKG party.gpkg party.osm

Здесь мы используем все достижения последних трёх лет: простое скачивание данных из Overpass API, хорошую поддержку формата OSM библиотекой GDAL и формат GeoPackage. Последний опубликован только три года назад и удобен для хранения данных из OSM: в отличие от шейпов, файл получается всего один и при этом непустой.

Файл osmconf.ini в комплекте GDAL разочаровывает на каждом шагу: очень мало тегов, даже адресов нет. И нет полигональных водоёмов. То ли дело файл style, приложенный к osm2pgsql. Воспользовался бы последним, но тогда цепочка получилась бы слишком сложной: osm → osm2pgsql → postgresql → ogr2ogr → gpkg. Два шага в этой цепочке выглядят лишними.

Оформление карты в QGIS

Было бы здорово сказать: «просто используйте этот стиль на ваш файл», как обычно с мапником или маперитивом, но в мире высоких ГИС не всё так просто. Нужно открывать свойства каждого слоя, кликать на цвета, делать дубликаты, фильтровать. Любое ваше действие QGIS запишет в файл проекта, поэтому я не дам свой: кто знает, какую порнографию вы откопаете в tula.qgs. Так что — пошаговая инструкция.

  1. Откройте в QGIS файл GeoPackage и добавьте слои lines и multipolygons. В первом лежат дороги, ручьи и заборы, во втором — здания, парки и водоёмы.
  2. Справа внизу кликните на «EPSG:4326», включите перепроецирование на лету и выберите проекцию EPSG:3857, привычную по растровым картам.
  3. Отфильтруем дороги. Кликните правой кнопкой на слое линий, там — «Фильтр». Выделим улицы: highway in (’trunk’, ’primary’, ’secondary’, ’tertiary’, ’residential’, ’unclassified’, ’pedestrian’)
  4. Теперь оформим: двойной клик на слое, во вкладке стиля цвет #777777 и толщину 0,3 мм.
  5. Во вкладке «Подписи» окна свойств сверху выберите «показывать подписи» и ниже поле «name». Цвет #666666 и размер шрифта 10.
  6. А что с пешеходными дорожками? Правую кнопку на слое, «Дублировать». Правите теги в фильтре на (’footway’, ’path’) и в свойствах: «простая линия», стиль линии ставите в «штриховая».
  7. Аналогично для всех остальных слоёв: линии highway=service, railway=rail, waterway NOT NULL и полигоны воды, парков и зданий building NOT NULL.
  8. Для зданий нужно указать подписи не только с номером дома, но и с этажностью. Справа от выбора поля подписи жмите на кнопку «ε» и введите формулу: addr_housenumber || ’/’ || building_levels

На этапе фильтрации данных в слое я понял, что импорт файлов OSM напрямую — это шляпа: на любой чих QGIS мне мерзко отвечал: «какая-то проблема в вашем SQL». Поэтому нужен GeoPackage. Можно справиться и с более старым Spatialite, но зачем.

После танцев с бубном в Maperitive (да, я помню их спустя шесть лет!) оформление карты в QGIS — праздник предсказуемости и удовольствие конфигурируемости. Не программирование, а интерактивный выбор из списков. Никаких подписей поверх линий, работает их вытеснение, а линии не меняют толщину и цвет в непонятной зависимости от масштаба. Да и вообще не нужно думать о масштабе. Первые десять минут не верил, что всё так просто, но да: быстро переписал все размеры и цвета из стиля для Maperitive и увидел красивую карту.

Пирог

  1. Добавьте новый векторный слой типа Polygon. В нём нужны поля name (строка) и rotation (целое число).
  2. В его свойствах отключите заливку, добавьте жирный контур и подпись из name.
  3. Включите редактирование и обводите листы для печати, один за другим. Левый клик — добавить точку, правый — завершить. Рисовать лучше прямо по улицам. Поле fid, если есть, заполнять не нужно. Называйте полигоны в формате «14-запад»: номер куска в пироге и указание на его часть.

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

Печать атласа

  1. «Проекты» → «Создать макет», там во вкладке «Атлас» включите его, выберите слой, скройте его и щёлкните на «создать многостраничный документ».
  2. Добавьте карту и во вкладке «Свойства элемента» отрегулируйте положение и размер. Включите «используется для атласа» с полем 0%, выше свяжите вращение карты с полем rotation.
  3. Добавьте в угол текстовую метку с содержимым [% «name» %] и настройте её вид.

Это всё — если не нужно поворачивать карту на отдельных листах. Но, конечно, поворачивать надо. Поэтому:

  1. Включите предпросмотр атласа.
  2. В окне QGIS откройте таблицу атрибутов слоя пирога и включите редактирование.
  3. Для каждого листа оцените поворот в градусах (положительные значения — по часовой стрелке) и впишите в нужную строку. После этого в окне макета нажмите «Обновить» и проверьте угол. Поправьте, если не попали.
  4. «Следующий объект» — и так далее до последней страницы. Муторно, но всё проще и быстрее, чем в Inkscape.

Теперь точно всё. Из меню «Атлас» сразу печатайте или сохраните в PDF. Если нужно проверить оформление, напечатайте одну страничку из меню «Макет».

Нет, не всё

Боже, двадцать два шага. Пирог «наполеон» готовить проще, чем пирог к очередной картовстрече. Даже с учётом современных технологий получилось длинно и сложно. Клики правой кнопкой мыши, клики левой. Нам нужно проще. Поэтому я начал смотреть, как оптимизировать отдельные этапы. Главное — подбор углов поворота. Глазами получается неточно, а в модуле processing есть интересная функция «oriented minimum bounding box», которая делает ровно то, что нужно: находит повёрнутый прямоугольник минимальной площади, в который вписывается каждый объект слоя.

Открыл питонскую консоль, набросал короткий скрипт — и действительно, поверх слоя домиков в своём районе увидел россыпь повёрнутых прямоугольников вокруг них. А в атрибутах — размеры и углы. Сохранил скрипт, довольный. Через пару минут дошло: плагины же тоже на питоне пишутся. Если делать не только для себя — нужен плагин. А если делать плагин, то нужно идти до конца, чтобы получилось...

Волшебство

Именно по этой причине эта заметка задержалась на три недели. Забудьте все шаги выше. Забудьте Overpass, забудьте ogr2ogr, забудьте свойства слоёв и составление атласов. Теперь подготовка пирога так же проста, как его обход:

  1. Установите модуль «Walking Papers».
  2. Найдите кнопку с синими прямоугольничками и после нажатия выберите «Скачать данные OSM».
  3. На новом слое нарисуйте (слева вверху карандашик и какая-то область) полигон вокруг области картовстречи. Затем снова жмите «Скачать».
  4. Ура, есть карта! В слое «Pie Overview» наметьте широкими линиями границы кусков пирога.
  5. В слое «Pie Sheets» обведите кварталы, которые войдут на каждый лист. Обычно это два-три листа на кусок пирога. Давайте им названия в виде «4-запад», с номером куска и ориентиром внутри него.
  6. Снова под той же синей кнопкой «Подготовить к печати». Всё, просмотрите листы и экспортируйте в PDF.
Картинка со старой версией модуля, где был лишний шаг

Невероятно! Шесть шагов, из которых только два требуют осмысленной работы, чесания головы, пристального взгляда на спутниковые снимки, ворошения прошлых пирогов, захлопывания крышки ноутбука с возгласом «да ну его, завтра нарисую!» Печать качественных обходных листов больше не удел гиков, которые «на ты» с таким осмерским софтом, который вы бы не захотели встретить в тёмной подворотне. Жду не дождусь августа, чтобы воспользоваться модулем по назначению.

Внутри QGIS

Осталась одна ма-аленькая проблемка. Если повернуть страницу атласа, то её масштаб станет мельче, чтобы вместить все данные с неповёрнутой страницы. А если карта управляется объектами с отдельного слоя, то на вычисление масштаба размеры этих объектов не влияют (посмотрите на отступ до дороги сверху на правом листе на фотографии в начале статьи). Вот незадача: хотели повернуть кварталы вдоль листа, чтобы приблизить их до упора и не мельчить при обходе, а получилось наоборот. Из-за этого поворот карты становится бесполезным. Что же делать?

Как известно, открытый софт развивается через боль. Если вас что-то не устраивает в QGIS, вы либо идёте жаловаться в телеграм, либо оплачиваете разработку в NextGIS, либо делаете git clone и открываете Qt Designer сами. Будучи ленивым, я пропустил первые два шага, нашёл в исходниках вычисление размеров объекта и всунул в нужное место geometry.rotate(). Пул-реквест отправился в ветку будущего релиза QGIS 3.0.

А дальше я начал узнавать, чем гостеприимный опенсорс отличается от пассивно-агрессивного, как принято в OSM. «Офигенное решение проблемы, спасибо!» — поприветствовал меня один из разработчиков QGIS. И сразу такое тёплое чувство внутри: меня ждали, мне рады, я не зря изучал исходники. «Только допиши тест на питоне, пожалуйста» — и окрылённый, я пошёл изучать систему тестирования QGIS и писать нужную функцию.

В процессе наткнулся на неудобство API прямоугольников и дописал функции их сдвига. Так я узнал про SIP bindings и зачем нужен скрипт prepare_commit.sh, который нужно запускать до git commit. На каждом этапе я мог кинуть клавиатуру в окно от очередного «сделай ещё тут кое-что», но благодаря вежливости и доброжелательности участников проекта я был рад делать ещё и ещё. Только метафорической линейкой по пальцам удержало меня от новых правок и улучшений в коде QGIS. Зачем оставаться в OSM и всё это терпеть, когда там так приятно и легко, и говорят спасибо после мёржа?

Встреча приятных людей в Эссене, фотография Аниты Грейзер

Но проблема осталась

Версия QGIS 2.18 останется в большинстве репозиториев до сентября 2018 года: моя правка в неё не попадёт. Пользоваться модулем хочется прямо сейчас, не дожидаясь новых версий QGIS. Поэтому нужно как-то обойти ошибку. С пул-реквестом за плечами решение оказалось несложным: модуль делает копию слоя пирога с модифицированной геометрией и новыми атрибутами. Новый слой невидимо управляет параметрами карты, чтобы у вас были идеальные обходные листы.

Как ещё можно улучшить? Ну, например, сделать рисование листов пирога сразу прямоугольниками пропорций листа А4. Тогда этап вычисления углов поворота станет ненужным. Слой тайлов OpenStreetMap пока приходится подключать вручную через QuickMapServices: возможно, лишние клики стоит оптимизировать, общаясь с этим модулем напрямую. Это поможет и для подготовки обзорных страниц в атлас. Наконец, оформление обходных листов зашито в модуль: чтобы его поменять, нужно править файл внутри каталога, но после обновления модуля правки потеряются.

Буду ли я улучшать модуль? Нет, он достаточно хорош и мне лень.

Писать модули прикольно. Что для JOSM, что для QGIS. По окончании радует ощущение, что операции, которые требовали времени и внимательности, переложены на машину и делаются одной кнопкой. Оформление модуля трудоёмко: нужно копаться в API, разбираться с репозиторием, рисовать значки и не забыть про переводы. Альтернатива — короткие куски кода для консоли python или плагина JOSM Scripting. Писать их не проще, а найти потом, когда через год-другой возникнет похожая задача, — почти невозможно. Так что лучше неделю потерять, но потом несколько часов сэкономить.

Ранее Ctrl + ↓

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