Скан-то нормальный, проблема-то в том, что плагин “закозявило” на этом поле…
Авторы пишут, что скрипт ищет границы области до тех пор, пока их не найдёт, соответственно может тупить достаточно много. Плюс плагином сейчас автор не занимается.
Цитата:
limiting the area would not help much. The script needs to detect the borders and i dont think that it will be ever possible to detekt grainfields, grassland and the like.
I had very good results in scanning the lakes in sibiria (you can find many examples around Anadyr). These lakes have a contour with very high contrast.
There are many promising ideas to improve scanaerial, but i have no time in near future to code them.
На днях я реализовал еще один плагин для обводки лесов и прочего, работает аналогично Scanaerial, но с некоторыми отличиями.
Во-первых он написан на Java как обычный плагин, в силу чего:
Никаких дополнительных зависимостей, кидаем джарку в plugins и включаем в настройках, в меню появляется новый пункт
Сканирование производится по кешу первого видимого Imagery слоя JOSM, поддерживается TMS/Scanex/Bing - то есть снимки повторно с сервера не выкачиваются
Для определения цвета используется не сфера в пространстве RGB, а эллипсоид, определяемый на основе распределения цветов окрестности начальной точки заданного размера (размер окрестности - vectorizer.color.area.size, по умолчанию 3 - это значит что не стоит кликать ближе чем на 3 пикселя к краю, если надо выделять маленькие области - можно уменьшить). Радиус эллипсоида по каждой из осей определяется как (3*среднеквадратичное отклонение) и дополнительно увеличивается на vectorizer.color.ellipsoid.expand
Тестировал только на IRS и Bing.
Из известных багов - может падать, если выделяется область вблизи смены уровня максимального зума снимков.
P.S. Кое-где в коде пришлось копировать куски из ядра JOSM в силу того, что они в ядре плохо доступны:
Преобразование координат тайлов в lat/lon из слоев - почему-то там поддерживаются исключительно целые координаты, хотя формула вполне допускает дробные, и обратная формула также выдает дробные.
Douglas-Peucker почему-то protected внутри команды упрощения, пришлось скопировать.
Можно сделать, но надо тогда внести ограничение на размер области, чтобы случайно не выделить всю планету. Хотя это ограничение в любом случае сделать стоит.
Из-за использование палитры проблем не должно быть, потому что цвет берется не напрямую из растра, а из BufferedImage, которая осуществляет преобразование и возвращает RGB.
Единственная проблема, которая мне видится - если цветов будет мало, то много могут оказаться за рамками 3*sigma и будут дырки в полигоне - тогда надо увеличить значение параметра vectorizer.color.ellipsoid.expand.
Вообще этот эллипсоид может быть сведен к стандартной сфере с заданным радиусом, если поставить vectorizer.color.area.size=0 - тогда не учитывается никаких пикселей кроме центрального, начальные радиусы очевидно становятся равными 0 (эллипсоид вырождается в точку), и тогда vectorizer.color.ellipsoid.expand означает радиус.
Если есть примеры такого слоя - скажите, интересно будет потестить.
Растеризованный генплан, который был изначально векторным (как вариант, jpeg
преобразуется в png только с цветами стиля векторизации с помощью gimp или imagemagick. Совсем глупый пример - карта созданная mapnik).
Импортируется в piclayer, либо просто используется WMS.
В порядке мечты: хотелось бы ограничение получаемого полигона уже имеющимися линиями дорог, лесов, озёр и т.д. (конечно с некоторым отступом от них). Напимер вот этот участок леса: сейчас его плагином не замапить т.к. выделится соседние уже замаплинные участки, да и дорогу перескочит.
А что это за участок именно? Какие координаты? Хочу посмотреть как именно перескакивает, возможно такие случаи можно решить более тонкой [авто]настройкой фильтра.
Отлично! Продвинутый java-плагин-векторизатор давно напрашивался, но достаточно сил и времени ни у кого не было…
Главное - не останавливаться на достигнутом.
Для векторизации до границ я бы предложил все (нужного типа) линии-границы обрисовать жирненько поверх временных копий битмапов (но может быть, есть решение проще).
И ещё моя мечта - полуручная векторизация (типа магнитного лассо в фотошопе), что бы вести мышкой вблизи границы, а плагин находил и рисовал эту границу…
Многие регионы нашей необъятной Родины до сих пор совершенно пустые. Например, если смотреть Хабаровский край: на юге леса отрисованы, а сервернее совершенно пусто, хотя в действительности там лесов столько, что проще отмечать, где их нет, нежели где есть. Очень хочу заняться озеленением этого региона.
В связи с этим тестирую плагин Scanaerial. Беру ярко выраженный кусок леса - здесь https://www.openstreetmap.org/edit#map=15/51.2810/136.5830 он относительно хорошо виден на снимке Bing.
Не могу никак добиться желаемого результата, играюсь с конфигом, масштабом и начальной точкой запуска алгоритма.
Прошу помощи, если у кого получится заставить плагин отрисовать этот кусок леса без залезания на реку и без огромного количества микродырок. В результате хотел бы дополнить документацию плагина (https://github.com/jonasstein/scanaerial/tree/master/doc) примерами конфига со скриншотами.
С тех пор появились несколько более годные способы http://gis-lab.info/qa/qgis-sacp-sentinel2a.html
Полуавтоматическая классификация, автоматическое скачивание данных Sentinel.
Правда, требуется QGIS. Но для какой более-менее серьезной работы с пространственными данными не нужна ГИС?
Ярко выражен этот кусок только для человека.
Если смотреть так, как этот снимок видит алгоритм, то можно заметить по средине облако, увидеть что светло-зелёный цвет леса похож на цвет травы, а тёмно-зелёный - на цвет воды. При всём этом, часть леса - темнее, часть - светлее.
Аналогом “волшебной палочки” фотошопа (а именно так работает scanaerial) это место не обработать.