Большой Воронежский Форум
Страница 18 из 39
« Первая < 812131415161718 19202122232428 > Последняя »
» Программирование>Срочная помощь программистов и тема для флуда по тематике раздела
Hopkroft 19:42 09.01.2012

Сообщение от RedName:
Народ подскажите как грамотно сделать.
Есть яндекс мап. Требудется показать нагруженность улицы как нибудь.

Сделай так как сделано в Яндексе. Тем более, вроде как 2Gis, да вроде как и Яндекс предоставляют API , для разработчиков. Т.е. ты сам можешь создавать GIS программы на их основе.
Вот посмотри:
http://plugins.2gis.ru/2gis-api/
Т.е. на базе готовых библиотек можешь что-то своё своять. Как раз научруку и покажешь [Ответ]
Spectator 20:25 09.01.2012

Сообщение от RedName:
Народ подскажите как грамотно сделать.

Есть яндекс мап. Требудется показать нагруженность улицы как нибудь. Я пошёл путём рисования на улице жирной линии и сменой с зеленого на красный. Но так как художественные навыки у меня еще ниже чем IT, в результате получилось это.



мне стыдно с этим показываться научруку подкиньте идей

Photoshop + слои на каждую линию. Когда будешь удовлетворен, сохрани полученное изображение, да и все.

Hopkroft ему нужна иллюстрация к курсовой / диплому, насколько я понимаю, скорее - к курсовой. Разбираться в GIS ради этого - как по воробьям из пушки стрелять.

З.Ы. Если не срочно, кидай исходную картинку, я как нибудь вечером за ПКД тебе нарисую, сегодня нет времени / желания. С фотожопом я дружу.
[Ответ]
Hopkroft 20:27 09.01.2012

Сообщение от :
ему нужна иллюстрация к курсовой / диплому, насколько я понимаю, скорее - к курсовой. Разбираться в GIS ради этого - как по воробьям из пушки стрелять.

Ну если иллюстрация, то конечно лучше слой создать и на нём рисовать. Я думал пишется что-то вроде ПО, и нужна "заготовка" . [Ответ]
RedName 20:29 09.01.2012

Сообщение от Hopkroft:
Сделай так как сделано в Яндексе. Тем более, вроде как 2Gis, да вроде как и Яндекс предоставляют API , для разработчиков. Т.е. ты сам можешь создавать GIS программы на их основе.
Вот посмотри:
http://plugins.2gis.ru/2gis-api/
Т.е. на базе готовых библиотек можешь что-то своё своять. Как раз научруку и покажешь


Мне всего то улицу перекрасить надо. Может есть какой нибудь способ распознать цвета на карте?
[Ответ]
X0R 23:49 09.01.2012

Сообщение от RedName:
Может есть какой нибудь способ распознать цвета на карте?

чего сложного? В фотошопе делаешь замену цвета, в своей программе перебираешь точки и с нужным цветом перекрашиваешь. [Ответ]
Hopkroft 23:57 09.01.2012

Сообщение от RedName:
Мне всего то улицу перекрасить надо. Может есть какой нибудь способ распознать цвета на карте?

Тебе рисунок отредактировать нужно или что-бы файл с картой загружался а потом его можно было разукрасить(по нажатии на кнопку)? [Ответ]
Spectator 00:07 10.01.2012

Сообщение от RedName:
Мне всего то улицу перекрасить надо. Может есть какой нибудь способ распознать цвета на карте?

Тебе это надо сделать программно или единовременно (на одной картинке)?
И то и другое возможно и решабельно, но в Photoshope это будет порядка 5 минут при умении, программно - подольше. [Ответ]
RedName 14:48 10.01.2012

Сообщение от Spectator:
Тебе это надо сделать программно или единовременно (на одной картинке)?
И то и другое возможно и решабельно, но в Photoshope это будет порядка 5 минут при умении, программно - подольше.

Программно да.
Я для этих целей использовал 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"/>
[Ответ]
X0R 17:47 10.01.2012
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);
ну соответственно нужно добавить выбор смежных цветов.
Изображения
Нажмите на изображение для увеличения
Название: input.jpg
Просмотров: 9
Размер:	127.0 Кб
ID:	1666134   Нажмите на изображение для увеличения
Название: output.png
Просмотров: 10
Размер:	423.6 Кб
ID:	1666135  

[Ответ]
RedName 19:49 10.01.2012
Огроменное спасибо XOR!

Только можешь объяснить про выбор смежных цветов? [Ответ]
X0R 20:52 10.01.2012

Сообщение от RedName:
Только можешь объяснить про выбор смежных цветов?

а чего объяснять то. видишь на картинке закрашены не все дорожки, это от того, что для обозначения дорог используется несколько оттенков, тебе нужно проверять цвет пискеля не соответствие им. Код писать не буду. [Ответ]
Spectator 21:07 10.01.2012
я напишу, только на 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 взято от балды, его надо подбирать на конкретных изображениях, от взятия корня можно избавиться возведя константу в квадрат. [Ответ]
silly 21:12 10.01.2012
Это RedName ничего не даст (даже не смотря на то, что про цвета он сам спросил), поскольку отдельные улицы так друг от друга не отличить. [Ответ]
X0R 21:26 10.01.2012
silly, пусть толком напишет че ему надо. Тогда и получит ответ (может быть), а так пусть довольствуется тем что есть. [Ответ]
silly 21:41 10.01.2012

Сообщение от RedName:


мне стыдно с этим показываться научруку подкиньте идей

Это потому что нужно пользоваться полилиниями из нескольких прямых сегментов, а не выбирать инструменты с наваниями: карандаш, кисть, freeform-хренотень и т. д.; все будет выглядеть намного цивильней.

При тупом рисовании поверх растровой картинки, правда, остается еще проблема с затиранием отдельных надписей и обозначений. Тут действительно лучше определится, использовать ли набор специфических манипуляций с изображением или api
[Ответ]
Spectator 22:16 10.01.2012

Сообщение от silly:
Это RedName ничего не даст (даже не смотря на то, что про цвета он сам спросил), поскольку отдельные улицы так друг от друга не отличить.

Для данной конкретной картинки вариант, предложенный XOR вполне адекватен. В общем и целом.


Сообщение от silly:
Это потому что нужно пользоваться полилиниями из нескольких прямых сегментов, а не выбирать инструменты с наваниями: карандаш, кисть, freeform-хренотень и т. д.; все будет выглядеть намного цивильней.

При тупом рисовании поверх растровой картинки, правда, остается еще проблема с затиранием отдельных надписей и обозначений. Тут действительно лучше определится, использовать ли набор специфических манипуляций с изображением или api

Непонятно - что в итоге нужно, если построить, скажем, карту путей по растровому изображению (т.е. ответить на вопрос - по какому маршруту попасть из точки А в точку Б) то его таким путем решить можно. Если закрасить дороги так чтобы было красиво - тут уже будет много сложнее,

В идеале тут надо сначала с помощью ряда графических фильтров преобразовать картинку в ЧБ изображение, и работать уже с ним.

С надписями тоже беда, согласен, поскольку они тупо перекрывают дорогу и как проложить по ним путь - непонятно.

Но в общем и целом алгоритм таков:
1. Шаг первый. Превратить из картинки с Яндекс MAP ЧБ изображение (четко два цвета - белый - дорога, черный - НЕ дорога)
2. Шаг второй, мммм, а ну да, шаг второй не нужен, мне всё время кажется что в итоге нужно решить задачу поиска оптимального пути, один из моих любимых алгоритмов)))

З.Ы. Найди картинки БЕЗ названий улиц, нарисованных на карте, иначе это усложнит тебе задачу в десять раз.
З.З.Ы. Мог бы предложить помочь за деньги, но только на С++
[Ответ]
silly 22:23 10.01.2012
Я просто не могу себе представить задачу, требующую закрашивания всех улиц на картинке в один цвет. Какова ценность подобной диаграммы? [Ответ]
Spectator 22:28 10.01.2012

Сообщение от silly:
Я просто не могу себе представить задачу, требующую закрашивания всех улиц на картинке в один цвет. Какова ценность подобной диаграммы?

Эммм. Может я что-то не понимаю, но это та задача которую ты сам и поставил.
А если ты хочешь отдельные улицы выделять, то объясни - на каком основании, на основании каких входных данных? [Ответ]
silly 22:30 10.01.2012

Сообщение от Spectator:
Эммм. Может я что-то не понимаю, но это та задача которую ты сам и поставил.

Нет, не так. Я говорю исключительно о выделении одной или нескольких улиц. Тупо по цвету это не сделать, нужны еще координаты. (А если у нас есть координаты, рисовать можно прямо по ним. Вот только надписи всякие мешаются.)

Дополнение:

Сообщение от Spectator:
А если ты хочешь отдельные улицы выделять, то объясни - на каком основании, на основании каких входных данных?

Данные лежат там же, где и карта. Или можно все вручную разметить, это, де факто, RedName уже пытался сделать, только криво. [Ответ]
X0R 22:42 10.01.2012

Сообщение от silly:
А если у нас есть координаты, рисовать можно прямо по ним. Вот только надписи всякие мешаются.)

если есть координаты, то можно моим кодом обрабатывать не всю карту, а только ближайшую окрестность кривой определяемой координатами. [Ответ]
silly 22:46 10.01.2012

Сообщение от X0R:
если есть координаты, то можно моим кодом обрабатывать не всю карту, а только ближайшую окрестность кривой определяемой координатами.

Можно, хотя лично я бы сделал полупрозрачные линии, а научруку сказал бы, что так модно [Ответ]
Spectator 22:52 10.01.2012

Сообщение от silly:
Нет, не так. Я говорю исключительно о выделении одной или нескольких улиц. Тупо по цвету это не сделать, нужны еще координаты. (А если у нас есть координаты, рисовать можно прямо по ним. Вот только надписи всякие мешаются.)

В таком случае нужны еще Check-point'ы. Я предлагаю (а не настаиваю) не переливать из пустое в порожнее, а все же дождаться от RedName четкой постановки задачи, которую он сам и пытается сделать.
Поскольку картинка никоим образом не коррелирует с тем что он объясняет.

Его слова.
Есть яндекс мап. Требудется показать нагруженность улицы как нибудь.
Как это понимаю я - требуется распознать дороги и некоторые из них ПОСЛЕ выделения раскрасить разными цветами, просто для демонстрации. [Ответ]
aerin 22:54 10.01.2012

Сообщение от Spectator:
я напишу, только на 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;

А что вы здесь пытались вычислить, и какое отношение bNear имеет к смежности цветов? [Ответ]
RedName 22:57 10.01.2012

Сообщение от silly:
Я просто не могу себе представить задачу, требующую закрашивания всех улиц на картинке в один цвет. Какова ценность подобной диаграммы?

Объясняю. Вот на карте Московский проспект. Пусть по документам одновременно присутствовать может, допустим 600 машин на нём. В один момент времени там находятся 500 машин, например, а в другой 700. Соответственно в первом случае цвет зеленый(мол можно нормально покататься по ней), во втором что то рядом с желтым(близко к оптимальному), а в третьем уже красный(мол ТАМ ПРОБКИ АТТЕНШН).


Вообще мой вариант с рисованием линий ручками в Expression Blend нравится тем что довольно прост. Где то полчаса на отрисовку улиц района + анимация по времени. Но очень уж аляповато выходит.
Вариант XOR'а мне нравится больше так как "грамотней" это всё выглядит. Единственное что надо подумать как разделять улицы. [Ответ]
X0R 22:58 10.01.2012

Сообщение от silly:
Можно, хотя лично я бы сделал полупрозрачные линии, а научруку сказал бы, что так модно

надписи перекроются, это не модно) И ничто не мешает при замене цвета пикселя создать ощущение полупрозрачности. [Ответ]
Spectator 23:02 10.01.2012

Сообщение от aerin:
А что вы здесь пытались вычислить, и какое отношение bNear имеет к смежности цветов?

ok, я на автомате писал
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; [Ответ]
Spectator 23:05 10.01.2012

Сообщение от RedName:
Объясняю. Вот на карте Московский проспект. Пусть по документам одновременно присутствовать может, допустим 600 машин на нём.

Это и слону ясно. Какая постановка задачи? Выделить дороги из карты - это тоже ясно. Дальше что? Конкретно. [Ответ]
silly 23:06 10.01.2012

Сообщение от X0R:
надписи перекроются, это не модно) И ничто не мешает при замене цвета пикселя создать ощущение полупрозрачности.

Ну я ленивый просто… [Ответ]
X0R 23:12 10.01.2012
RedName, если нужно красить отдельные улицы, то без предварительно обработки карты не обойдешься. Нужно ручками определить координаты улицы. Проще все это делать, разбивая улицу на несколько прямых. Дальше строим уравнение прямой и производим замену цвета в некоторой окрестности.
Проблемы могут быть, если улица идет по дуге, тогда придется либо описывать этот участок большим количеством прямых, либо пойти другим путем. Как вариант можно задать прямоугольник в который будет входить извилистый участок (и только он, больше никаких дорог) и уже в нем производить замену цвета.

необходимо будет аккуратно обрабатывать перекрестки, чтоб не начать красить не те улицы.

UPD:
Как вариант, можно задавать улицы не просто координатами начала и конца (с учетом поворотов конечно же, см написанное мной выше), а точками описывающими прямоугольники, в которые входит улица и в нем уже производить замену. Это будет и один из самых быстрых вариантов, учитывая медленную работу SetPixel это может быть важно.

Картинка для иллюстрации определения улиц с помощью прямоугольников
Изображения
Нажмите на изображение для увеличения
Название: sshot-5.jpg
Просмотров: 9
Размер:	103.6 Кб
ID:	1666642  
[Ответ]
RedName 23:21 10.01.2012

Сообщение от Spectator:
Это и слону ясно. Какая постановка задачи? Выделить дороги из карты - это тоже ясно. Дальше что? Конкретно.

Взять данные из БД и на их основе построить оптимальный путь отсюда - туда в какой то момент времени, в зависимости от загруженности дороги. В Бд хранятся названия улиц и их основные характеристики, которые могут повлиять на загруженность. - количество светофоров, пешеходных переходов, развязок итп. .
Пока для меня задачей стоит на основе абстрактных значений, которые даже не в БД хранятся а где угодно, показать что мол вот чего то там меняется со временем. [Ответ]
Страница 18 из 39
« Первая < 812131415161718 19202122232428 > Последняя »
Вверх