Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
Срочная помощь программистов и тема для флуда по тематике раздела |
Философия, технологии, алгоритмы! |
|
Опции темы |
09.01.2012, 19:42 | #511 | |
Registered User
Сообщений: 1,113
Регистрация: 23.06.2007
Возраст: 57
Не в сети |
Цитата:
Вот посмотри: http://plugins.2gis.ru/2gis-api/ Т.е. на базе готовых библиотек можешь что-то своё своять. Как раз научруку и покажешь |
|
09.01.2012, 20:25 | #512 | |
Форумец
Сообщений: 41,172
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
Hopkroft ему нужна иллюстрация к курсовой / диплому, насколько я понимаю, скорее - к курсовой. Разбираться в GIS ради этого - как по воробьям из пушки стрелять. З.Ы. Если не срочно, кидай исходную картинку, я как нибудь вечером за ПКД тебе нарисую, сегодня нет времени / желания. С фотожопом я дружу. |
|
09.01.2012, 20:27 | #513 | |
Registered User
Сообщений: 1,113
Регистрация: 23.06.2007
Возраст: 57
Не в сети |
Цитата:
|
|
09.01.2012, 20:29 | #514 | |
Смотри сюда
Сообщений: 418
Регистрация: 16.11.2007
Не в сети |
Цитата:
Мне всего то улицу перекрасить надо. Может есть какой нибудь способ распознать цвета на карте? |
|
09.01.2012, 23:49 | #515 |
старый хрыч
Сообщений: 6,705
Регистрация: 17.12.2006
Возраст: 37
Не в сети |
|
09.01.2012, 23:57 | #516 |
Registered User
Сообщений: 1,113
Регистрация: 23.06.2007
Возраст: 57
Не в сети |
|
10.01.2012, 00:07 | #517 | |
Форумец
Сообщений: 41,172
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
И то и другое возможно и решабельно, но в Photoshope это будет порядка 5 минут при умении, программно - подольше. |
|
10.01.2012, 14:48 | #518 | |
Смотри сюда
Сообщений: 418
Регистрация: 16.11.2007
Не в сети |
Цитата:
Я для этих целей использовал WPF с его XAML. Т.е. проводил линию по улице ( В Expression Blend 4) и в зависимости от величины которая в "БД" хранится, анимацией менял цвет линии. Получилось очень криво. Было бы отлично если можно программно распознать цвет на картинке и занести в какой нибудь массив и работать уже с ним например, но я честно не знаю как реализовать это всё. Вот так линия выглядит в коде, если кому интересно. Код:
<!--Moskovski prospect--> <Path Data="M335.5,2 C335.76965,8.7412183 339,15.354228 339,21 339.33333,21 339.66667,21 340,21 343.60825,42.649518 336.14625,68.820831 342.5,90 345.13991,98.799694 346.20393,107.94712 347,117.5 348.03097,129.87168 351.5,140.86769 351.5,153 351.5,176.66529 343.39645,195.86193 358.5,216 369.35772,230.47696 378.99312,242.98619 391,257.5" HorizontalAlignment="Left" Margin="334.5,1,0,53.5" Stretch="Fill" Stroke="Black" StrokeThickness="2" Width="57.5"/> |
|
10.01.2012, 17:47 | #519 |
старый хрыч
Сообщений: 6,705
Регистрация: 17.12.2006
Возраст: 37
Не в сети |
RedName,
Код:
var bmp = new Bitmap("input.png"); for (int i = 0; i < bmp.Width; i++) for (int j = 0; j < bmp.Height; j++) if (bmp.GetPixel(i, j) == Color.FromArgb(255, 190, 96)) bmp.SetPixel(i, j, Color.LawnGreen); bmp.Save("output.png", ImageFormat.Png); |
10.01.2012, 20:52 | #521 |
старый хрыч
Сообщений: 6,705
Регистрация: 17.12.2006
Возраст: 37
Не в сети |
|
10.01.2012, 21:07 | #522 |
Форумец
Сообщений: 41,172
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
я напишу, только на C++
double r = GetRValue(cl); double g = GetGValue(cl); double b = GetBValue(cl); double fDist = sqrt(r*r + g*g + b*b); bool bNear = fDist < 10; число 10 взято от балды, его надо подбирать на конкретных изображениях, от взятия корня можно избавиться возведя константу в квадрат. |
10.01.2012, 21:12 | #523 |
highly mean
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35
Не в сети |
Это RedName ничего не даст (даже не смотря на то, что про цвета он сам спросил), поскольку отдельные улицы так друг от друга не отличить.
Последний раз редактировалось silly; 10.01.2012 в 21:15. Причина: ошибки |
10.01.2012, 21:41 | #525 |
highly mean
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35
Не в сети |
Это потому что нужно пользоваться полилиниями из нескольких прямых сегментов, а не выбирать инструменты с наваниями: карандаш, кисть, freeform-хренотень и т. д.; все будет выглядеть намного цивильней.
При тупом рисовании поверх растровой картинки, правда, остается еще проблема с затиранием отдельных надписей и обозначений. Тут действительно лучше определится, использовать ли набор специфических манипуляций с изображением или api |
10.01.2012, 22:16 | #526 | ||
Форумец
Сообщений: 41,172
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
Цитата:
В идеале тут надо сначала с помощью ряда графических фильтров преобразовать картинку в ЧБ изображение, и работать уже с ним. С надписями тоже беда, согласен, поскольку они тупо перекрывают дорогу и как проложить по ним путь - непонятно. Но в общем и целом алгоритм таков: 1. Шаг первый. Превратить из картинки с Яндекс MAP ЧБ изображение (четко два цвета - белый - дорога, черный - НЕ дорога) 2. Шаг второй, мммм, а ну да, шаг второй не нужен, мне всё время кажется что в итоге нужно решить задачу поиска оптимального пути, один из моих любимых алгоритмов))) З.Ы. Найди картинки БЕЗ названий улиц, нарисованных на карте, иначе это усложнит тебе задачу в десять раз. З.З.Ы. Мог бы предложить помочь за деньги, но только на С++ |
||
10.01.2012, 22:28 | #528 | |
Форумец
Сообщений: 41,172
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
А если ты хочешь отдельные улицы выделять, то объясни - на каком основании, на основании каких входных данных? |
|
10.01.2012, 22:30 | #529 | |
highly mean
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35
Не в сети |
Цитата:
Дополнение: Данные лежат там же, где и карта. Или можно все вручную разметить, это, де факто, RedName уже пытался сделать, только криво. Последний раз редактировалось silly; 10.01.2012 в 22:39. Причина: дополнил |
|
10.01.2012, 22:42 | #530 |
старый хрыч
Сообщений: 6,705
Регистрация: 17.12.2006
Возраст: 37
Не в сети |
|
10.01.2012, 22:46 | #531 |
highly mean
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35
Не в сети |
|
10.01.2012, 22:52 | #532 | |
Форумец
Сообщений: 41,172
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
Поскольку картинка никоим образом не коррелирует с тем что он объясняет. Его слова. Есть яндекс мап. Требудется показать нагруженность улицы как нибудь. Как это понимаю я - требуется распознать дороги и некоторые из них ПОСЛЕ выделения раскрасить разными цветами, просто для демонстрации. |
|
10.01.2012, 22:54 | #533 | |
бибизьян
Сообщений: 3,026
Регистрация: 17.02.2004
Не в сети |
Цитата:
|
|
10.01.2012, 22:57 | #534 | |
Смотри сюда
Сообщений: 418
Регистрация: 16.11.2007
Не в сети |
Цитата:
Вообще мой вариант с рисованием линий ручками в Expression Blend нравится тем что довольно прост. Где то полчаса на отрисовку улиц района + анимация по времени. Но очень уж аляповато выходит. Вариант XOR'а мне нравится больше так как "грамотней" это всё выглядит. Единственное что надо подумать как разделять улицы. |
|
10.01.2012, 22:58 | #535 |
старый хрыч
Сообщений: 6,705
Регистрация: 17.12.2006
Возраст: 37
Не в сети |
|
10.01.2012, 23:02 | #536 | |
Форумец
Сообщений: 41,172
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
double r1 = GetRValue(cl1); double g1 = GetGValue(cl1); double b1 = GetBValue(cl1); double r2 = GetRValue(cl2); double g2 = GetGValue(cl2); double b2 = GetBValue(cl2); double r = fabs(r1-r2); double g = fabs(g1-g2); double b = fabs(b1-b2); double fDist = sqrt(r*r + g*g + b*b); bool bNear = fDist < 10; |
|
10.01.2012, 23:05 | #537 |
Форумец
Сообщений: 41,172
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
|
10.01.2012, 23:12 | #539 |
старый хрыч
Сообщений: 6,705
Регистрация: 17.12.2006
Возраст: 37
Не в сети |
RedName, если нужно красить отдельные улицы, то без предварительно обработки карты не обойдешься. Нужно ручками определить координаты улицы. Проще все это делать, разбивая улицу на несколько прямых. Дальше строим уравнение прямой и производим замену цвета в некоторой окрестности.
Проблемы могут быть, если улица идет по дуге, тогда придется либо описывать этот участок большим количеством прямых, либо пойти другим путем. Как вариант можно задать прямоугольник в который будет входить извилистый участок (и только он, больше никаких дорог) и уже в нем производить замену цвета. необходимо будет аккуратно обрабатывать перекрестки, чтоб не начать красить не те улицы. UPD: Как вариант, можно задавать улицы не просто координатами начала и конца (с учетом поворотов конечно же, см написанное мной выше), а точками описывающими прямоугольники, в которые входит улица и в нем уже производить замену. Это будет и один из самых быстрых вариантов, учитывая медленную работу SetPixel это может быть важно. Картинка для иллюстрации определения улиц с помощью прямоугольников Последний раз редактировалось X0R; 10.01.2012 в 23:36. |
10.01.2012, 23:21 | #540 | |
Смотри сюда
Сообщений: 418
Регистрация: 16.11.2007
Не в сети |
Цитата:
Пока для меня задачей стоит на основе абстрактных значений, которые даже не в БД хранятся а где угодно, показать что мол вот чего то там меняется со временем. |
|