Может быть кому-то будет интересно.

На днях я реализовал еще один плагин для обводки лесов и прочего, работает аналогично Scanaerial, но с некоторыми отличиями.

Во-первых он написан на Java как обычный плагин, в силу чего:

  • Никаких дополнительных зависимостей, кидаем джарку в plugins и включаем в настройках, в меню появляется новый пункт
  • Сканирование производится по кешу первого видимого Imagery слоя JOSM, поддерживается TMS/Scanex/Bing - то есть снимки повторно с сервера не выкачиваются
  • Учитывается смещение снимков
  • По моим ощущения работает быстрее

Отличия в схеме работы, возможно будут меняться:

  • Картинка прогоняется через медианный фильтр (размер - vectorizer.image.filter.median.size, 0 - отключить фильтр)
  • Для определения цвета используется не сфера в пространстве RGB, а эллипсоид, определяемый на основе распределения цветов окрестности начальной точки заданного размера (размер окрестности - vectorizer.color.area.size, по умолчанию 3 - это значит что не стоит кликать ближе чем на 3 пикселя к краю, если надо выделять маленькие области - можно уменьшить). Радиус эллипсоида по каждой из осей определяется как (3*среднеквадратичное отклонение) и дополнительно увеличивается на vectorizer.color.ellipsoid.expand

JAR: https://github.com/downloads/alno/josm-vectorizer/vectorizer.jar
Исходники: https://github.com/alno/josm-vectorizer

Тестировал только на IRS и Bing.
Из известных багов - может падать, если выделяется область вблизи смены уровня максимального зума снимков.

P.S. Кое-где в коде пришлось копировать куски из ядра JOSM в силу того, что они в ядре плохо доступны:

  • Преобразование координат тайлов в lat/lon из слоев - почему-то там поддерживаются исключительно целые координаты, хотя формула вполне допускает дробные, и обратная формула также выдает дробные.
  • Douglas-Peucker почему-то protected внутри команды упрощения, пришлось скопировать.