Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа_с_картой_(загружаемой_в_timage1...
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
K_MANIAC
Есть карта (растровая) - разнородная местность - которая состоит из сегментов - каждый сегмент своего цвета - но цвет не одинаков в сегменте - при приближении видно - пиксел влево - цвет чуть изменяется... пиксел вправо - снова чуть изменяется - но не приближая (издалека) - видно что сегмент ориентировочно одного цвета... - какой-то сегмент красный...какой-то фиолетовый и т.д.
Так вот, необходимо сделать так, чтобы "щёлкнув" мышью в любом месте карты - выделился один из сегментов карты - тот, в который мы попали...
Промучился почти 3 дня... не получилось stop.gif
Прошу помочь мне с данной проблемой...
Заранее ОГРОМНОЕ спасибо!...
volvo
Пример карты приаттачить сможешь? Хотелось бы видеть, насколько различны цвета внутри сегмента, и при этом насколько они отличаются от соседних сегментов...
K_MANIAC
Вот он...
но это только маленький фрагмент - а сама карта размерами 10175*6900-пикселей...
еле мощностей хватает на моём стареньком друге (Pentium III 1120MHz) для работы с ней...
...
hardcase
Таким образом, мы имеем задачу растровой векторизации.
А ты не пробовал взять карту и отвекторизовать, например Адобом Стримлайном, а потом окучить её в какомнить графическом редакторе - полностью закрасить регионы. А потом уже с закрашенными регионами работать в программе.
Ты ведь что-то вроде мини-ГИС пишешь?

А я думаю, для работы с таким здоровенны файлом можно и некоторую оптимизацию заделать - разрезать на квадраты, в конце концов!


Кстати насчёт издалека. Вот можно фсё это файло уменьшить раз эдак во много и посмотреть, что получили: т.е. при уменьшении при антиальязинге все регионы будут некоторого примерно однородного цвета, потом можно обработать это изображение и получить рисунок, в котором у нас будут регионы одного цвета (руками или в фотожопе - не знаю надо пикчу видеть). Далее на этой мини карте выделяем полигоны....
K_MANIAC
К сожалению не знаю значения данной аббревиатуры - "ГИС" - но хотел бы услышать её расширфровку от вас yes2.gif ...
Кстати - почти так я сейчас и делаю - то есть - "полностью закрасить регионы. А потом уже с закрашенными регионами работать в программе." - только я делаю это на background'е - то есть пользователю не будет видно этой крашеной карты, а её массив пикселей будет в точности по порядку совпадать с массивом пикселей оригинальной карты - -вот учитывая цвета на бэкграундной карте я и хочу сопоставить сегменты к этой карте - попиксельно - что в принципе тоже пока не решённая задача - но представляется мне гораздо менее трудной... - но - этот вариант на случай если всё-таки у меня не выйдет с основной задачей - ведь желательно создать обработчик - такой, чтобы "тыркнув" мышью в любом месте карты - сегмент выделился - даже если мы эту карту заменим - на другую... О как! yes2.gif
hardcase
Видел карту и честно скажу.
Написать обработчик "тыкнул и выделилось" - глухо нетривиальная задача с текущими входными данными - вашей картой.
А бэкграундная карта не обязательно должна быть тогоже размера, что и наша.
Нам нужны только регионы (полигоны). Если прога схематично подсветит - уже неплохо.
K_MANIAC
Дааааа - когда я брался за задачку... - честно говоря даже мне она показалась не трудной...
Но в ходе решения... - многое прояснилось... больно уж карта сложжжжжная... да и тыркнул-выделилось - действительно - не получается... - просто принцип, которым можно реализовать - в голову не приходит - разьве что долгий поиск исключений областей на карте, которые не следует учитывать - а это вообще кошмар...
В общем будем пробовать так как начал... - Спасибо БОЛЬШОЕ всем за ответы!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.