You are not logged in.
Замечательную вещь для автоматического рисования леса сделали Komяpa и Upliner, сырую правда, но уже рабочую
Вам потребуется:
1) JOSM http://josm.openstreetmap.de/
2) python 2.6 http://www.activestate.com/activepython/
3) модуль для питона python-imaging http://www.pythonware.com/products/pil/
4) плагин fuzzer для JOSM http://code.google.com/p/josm-plugins/downloads/list (спасибо Upliner-у)
-- поместить его в папку с плагинами JOSM (для windows путь в проводнике %AppData%\JOSM\plugins) и включить плагин в настройках JOSM
5) скрипт на питоне fuzzyselect.py http://latlon.org/fuzzyselect.py (спасибо Komяpе)
-- создать папку fuzzer с этим файлом и поместить её в папку с плагинами JOSM
В JOSM появится меню Инструменты -- Fuzzy select (Shift+K). Нажимаете, и тыкаете в центр куска леса или поля, получаете окно "Трассировка (разбор данных OSM)", ждёте отработки скрипта (от 5 сек до минуты). Скрипт скачает изображение с WMS, определит границу леса (по разнице в цвете), и векторизует её. Плагин подхватит полигон или мультиполигон и вставит в JOSM.
Если повезет, быстро получите нормальный кусок леса, если нет, скрипт будет работать больше 2-3 минут и создаст лес на пол-региона или не сможет его векторизовать и ничего не выдаст.
discuss!
НАПОМИНАЮ, чаще всего -- нужно использовать тег natural=wood, в России все леса входят в лесничества (лесной фонд), и большинство обслуживаются редко.
И только если леc обслуживается регулярно (очищается, рубится и делаются лесопосадки) -- то ставим landuse=forest. см. Wiki
Last edited by vespex (2010-01-18 16:07:52)
Offline
В процессе работы скрипта можно увидеть какой полигон распознался в текущий момент -- в файле img.png в папке fuzzer. Масштаб может увеличиваться, т.к. сейчас скрипт расширяет область поиска по мере поиска замкнутой внешней границы леса.
Попробовать настроить параметры скрипта, чтобы он лучше ловил границы леса вы можете отредактировав файл fuzzyselect.py:
1) Из какого WMS брать картинку для распознавания - в 30-32 строках раскомментьте нужное (пробелы в начале строк не удаляйте). Думаю лучше оставить YahooSat, он вроде контрастней, и разрешения достаточно (если у вас стоит кэширующая twms, то выбирайте строку с 127.0.0.1):
a = "http://wms.latlon.org/?layer=yhsat&format=image/jpeg&force=noresize&width=700&bbox=%s,%s,%s,%s"%tuple(bbox)
#a = "http://127.0.0.1:8080/?layer=yhsat&format=image/bmp&force=noresize&filter=median&width=1200&bbox=%s,%s,%s,%s"%tuple(bbox)
#a = "http://irs.gis-lab.info/?layer=irs&format=image/jpeg&force=noresize&width=600&bbox=%s,%s,%s,%s"%tuple(bbox)
#a = "http://onearth.jpl.nasa.gov/wms.cgi?request=GetMap&layers=global_mosaic&styles=IR2&srs=EPSG:4326&width=1000&height=1000&format=image/jpeg&bbox=%s,%s,%s,%s"%tuple(bbox)
2) Насколько чувствителен алгоритм распознавания границы цвета:
init=5 # размер квадрата спутникового изображения, чем больше -- тем меньше разрешение и хуже видны дороги и границы = 4-5-10 is ok
color_str = 25 # разница цвета пикселей у границы, чем больше -- тем больше разных (близких к цвету указанной точки) цветов захватит скрипт = 20-25-30 is ok
medianfilter_str = 7 # сила усреднения цветов пикселей, чем больше -- тем расплывчатей границы леса = 5-7-13 is ok
douglas_peucker_epsilon = 2 # коэф. ступенчатости границ полигона, чем больше - тем меньше точек и поворотов будет в линиях = 0.71 - 3 is ok (don't set less than 0.71!)
zoom_no_more_than = 4 # количество увеличений площади анализа (картинки со спутника), если лес полностью не поместился в исходном квадрате
3) Для выделения рек/озёр/водоёмов нужно лишь уменьшить color_str до 10 например (или около того), т.к. цвет воды очень не сильно колеблется.
Last edited by vespex (2010-01-19 07:43:10)
Offline
О, я тоже нашел этот плагин отбой вопроса в соседней теме.
Завтра попробуем.
А без питона никак?
Offline
ну если перепишешь питоновскую часть
world processing is what we do.
[OSMF BY Team] [http://latlon.org/] [jabber: komzpa@gmail.com] [mobile/SMS: +375257407159]
Offline
ну если перепишешь питоновскую часть
На чём?
Offline
Конечно на Java.
1 000 000 points: 80% complete
Offline
Хоть на javascript.
на входе - широта-долгота клика как параметры командной строки, на выходе - .osm в stdout. что будет внутри, явовскую часть плагина слабо волнует
world processing is what we do.
[OSMF BY Team] [http://latlon.org/] [jabber: komzpa@gmail.com] [mobile/SMS: +375257407159]
Offline
А если джосм ругается, что "Cannot run program "pythonw" (In directory "C:\Users\1\AppData\Roaming\JOSM\plugins\fuzzer"): CreateProcess error=2, ...", в чем может быть проблема?
Если в проводнике руками ткнуть в fuzzyselect.py, то мелькает окошко python.exe, т.е. сам python доступен.
p.s. Python стоит 2.5, но проблема думаю не в этом.... Может из-за того, что стоит в \program files\development\python25?
Offline
pythonw должен быть доступен в PATH.
world processing is what we do.
[OSMF BY Team] [http://latlon.org/] [jabber: komzpa@gmail.com] [mobile/SMS: +375257407159]
Offline
3) модуль для питона python-imaging http://www.pythonware.com/products/pil/
что с ним делать, поподробнее пожалуйста.
а. я тормоз, это ехешник)) ехешники мы (виндузятники) запускать умеем.
ps. Заработал, когда прописал прямой путь на pithonw в PATH, который в "Переменные среды пользователя ..." (а не в "Системные переменные" -- сюда кстати Питон прописывается сам, но винда похоже эти переменные не видит).
Last edited by coolkaas (2010-01-10 13:54:26)
Offline
[offtopic]
Сложно вам, виндузятникам...
[/offtopic]
Last edited by shadowjack (2010-01-10 14:03:33)
Offline
Понизил color_str до 20, а то и зелёные поля часто рядом прихватывает))
Спасибо большое! главное, что оно работает))
Не, 20 маловато, 26 самый ок.
Плагин подхватит полигон или мультиполигон и вставит в JOSM.
у меня вот этого не делается, просто серенькие полигоны, все отношения назначаю вручную. Что не так делаю, доктор?
Last edited by coolkaas (2010-01-10 14:33:28)
Offline
Всё верно, скрипт сейчас не проставляет теги.
Offline
Насколько я понял, в данный момент скрипт не понимает, что подложка сдвинута?
Как-то странно создаются полигоны -не достают до края леса метров 50. Вместо прямой линии (просеки) - что-то пилообразное.
Если полигон не был создан, в стек команд добавляется пустой FuzzySelect. Не смертельно, но непонятно.
Сделал бы скриншот, но выложить некуда.
Offline
шоты на radikal.ru
Да, пилы имеются. Удаление руками каждой второй точки приводит к более благолепному виду.
Как обращаться со смещением непонятно, местами это важно.
Кстати, теги может и не нужны -- мы же не только леса будем обклацывать, а и поля и прочее однородное.
Несколько раз рисовался аутер, а рядом с ним, за пределами иннер (ну то есть, я догадываюсь, что это такие роли, сейчас же они не ставятся пока..), то есть рисуется несколько наружных полигонов.
В целом неплохо -- ткнул раз, и все леса на экране выделились)) но обещанной логике это немного не соответствует. Посему, предупреждаю.
А еще картинка курсора портится, не восстанавливается. Жму шифт-к, курсор становится крестиком, тыкаю, рисуется полигон, после жму s -- мой любимый основной режим -- курсор остаётся крестиком, и только перетыкиванием скажем последовательно "a" - "s", курсов возвращается к нормальном рисуночку. Трассировщик озёр тем же страдал.
Last edited by coolkaas (2010-01-10 15:38:05)
Offline
Да, пилы имеются. Удаление руками каждой второй точки приводит к более благолепному виду.
Как обращаться со смещением непонятно, местами это важно.
Чтобы не было "пил" и векторы были более сглажены - ставьте douglas_peucker_epsilon побольше (сверху он не ограничен)
Смещение вручную править, например, основной слой не грузить, а после работы скрипта всё выделять и перемещать.
Offline
Как прописать «прямой путь на pithonw в PATH, который в "Переменные среды пользователя ..."»?
Нижегородская область: ФГИС, страница в ВК
Offline
Мой компьютер - Свойства - Дополнительно - Переменные среды
дописываешь в path через точку с запятой нужный каталог
Offline
ну если перепишешь питоновскую часть
Переписывайте уж сразу i.cluster :
http://grass.itc.it/grass64/manuals/htm … uster.html
Отлично отличает мелководье от глубокой воды в реках и озерах.
Правда очень тяжело бороться с лужами и весенней талой водой
http://grass.osgeo.org/wiki/Image_classification
Last edited by usm78-gis (2010-01-10 16:37:03)
Offline
А что в plugin'е так тормозит: закачка картинок или обработка на питоне?
Offline
http://osm.org/go/0u@hLXiG--
Результат работы plugin'a
Last edited by barkulex (2010-01-10 21:30:44)
Offline
http://osm.org/go/0u@hLXiG--
Результат работы plugin'a
http://www.openstreetmap.org/?lat=53.11 … rs=B000FTF
какой-то червяк с человечьим лицом
п.с.: там развязка, рядышком
на ней праймари_линк нужно на транк_линк переделать...
Last edited by dedNikifor (2010-01-10 22:02:00)
Графическая (в виде карты с точками опасных объектов) база спидкамов для разных навигационных программ. Подложка OSM присутствует
Offline
А что в plugin'е так тормозит: закачка картинок или обработка на питоне?
сначала закачка картинок, скрипт запрашивает url с нужным квадратом (причем несколько раз, если граница леса не умещается в текущий квадрат)
если лес в процессе оказывается большим, то время анализа будет превалировать (текущая картинка опознанного леса - в файле img.png)
Offline
[off]
п.с.: там развязка, рядышком
на ней праймари_линк нужно на транк_линк переделать...
там сначала надо определиться со статусом дороги от развязки до Пензы
[\off]
Offline
не надо, там в любом случае все развязки с транком Р158 должны иметь статус линка от "высшей" дороги (линки всегда по верхнему разряду берутся)
Offline