Старый 09.01.2012, 19:42   #511   
Registered User
 
Сообщений: 1,113
Регистрация: 23.06.2007
Возраст: 57

Hopkroft вне форума Не в сети
Цитата:
Сообщение от RedName Посмотреть сообщение
Народ подскажите как грамотно сделать.
Есть яндекс мап. Требудется показать нагруженность улицы как нибудь.
Сделай так как сделано в Яндексе. Тем более, вроде как 2Gis, да вроде как и Яндекс предоставляют API , для разработчиков. Т.е. ты сам можешь создавать GIS программы на их основе.
Вот посмотри:
http://plugins.2gis.ru/2gis-api/
Т.е. на базе готовых библиотек можешь что-то своё своять. Как раз научруку и покажешь
  Ответить с цитированием
Старый 09.01.2012, 20:25   #512   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,173
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от RedName Посмотреть сообщение
Народ подскажите как грамотно сделать.

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



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

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

З.Ы. Если не срочно, кидай исходную картинку, я как нибудь вечером за ПКД тебе нарисую, сегодня нет времени / желания. С фотожопом я дружу.
  Ответить с цитированием
Старый 09.01.2012, 20:27   #513   
Registered User
 
Сообщений: 1,113
Регистрация: 23.06.2007
Возраст: 57

Hopkroft вне форума Не в сети
Цитата:
ему нужна иллюстрация к курсовой / диплому, насколько я понимаю, скорее - к курсовой. Разбираться в GIS ради этого - как по воробьям из пушки стрелять.
Ну если иллюстрация, то конечно лучше слой создать и на нём рисовать. Я думал пишется что-то вроде ПО, и нужна "заготовка" .
  Ответить с цитированием
Старый 09.01.2012, 20:29   #514   
Смотри сюда
 
Аватар для RedName
 
Сообщений: 418
Регистрация: 16.11.2007

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

Мне всего то улицу перекрасить надо. Может есть какой нибудь способ распознать цвета на карте?
  Ответить с цитированием
Старый 09.01.2012, 23:49   #515   
старый хрыч
 
Аватар для X0R
 
Сообщений: 6,705
Регистрация: 17.12.2006
Возраст: 37

X0R вне форума Не в сети
Цитата:
Сообщение от RedName Посмотреть сообщение
Может есть какой нибудь способ распознать цвета на карте?
чего сложного? В фотошопе делаешь замену цвета, в своей программе перебираешь точки и с нужным цветом перекрашиваешь.
  Ответить с цитированием
Старый 09.01.2012, 23:57   #516   
Registered User
 
Сообщений: 1,113
Регистрация: 23.06.2007
Возраст: 57

Hopkroft вне форума Не в сети
Цитата:
Сообщение от RedName Посмотреть сообщение
Мне всего то улицу перекрасить надо. Может есть какой нибудь способ распознать цвета на карте?
Тебе рисунок отредактировать нужно или что-бы файл с картой загружался а потом его можно было разукрасить(по нажатии на кнопку)?
  Ответить с цитированием
Старый 10.01.2012, 00:07   #517   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,173
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от RedName Посмотреть сообщение
Мне всего то улицу перекрасить надо. Может есть какой нибудь способ распознать цвета на карте?
Тебе это надо сделать программно или единовременно (на одной картинке)?
И то и другое возможно и решабельно, но в Photoshope это будет порядка 5 минут при умении, программно - подольше.
  Ответить с цитированием
Старый 10.01.2012, 14:48   #518   
Смотри сюда
 
Аватар для RedName
 
Сообщений: 418
Регистрация: 16.11.2007

RedName вне форума Не в сети
Цитата:
Сообщение от 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"/>
  Ответить с цитированием
Старый 10.01.2012, 17:47   #519   
старый хрыч
 
Аватар для X0R
 
Сообщений: 6,705
Регистрация: 17.12.2006
Возраст: 37

X0R вне форума Не в сети
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
Просмотров: 8
Размер:	127.0 Кб
ID:	1666134   Нажмите на изображение для увеличения
Название: output.png
Просмотров: 9
Размер:	423.6 Кб
ID:	1666135  

  Ответить с цитированием
Старый 10.01.2012, 19:49   #520   
Смотри сюда
 
Аватар для RedName
 
Сообщений: 418
Регистрация: 16.11.2007

RedName вне форума Не в сети
Огроменное спасибо XOR!

Только можешь объяснить про выбор смежных цветов?
  Ответить с цитированием
Старый 10.01.2012, 20:52   #521   
старый хрыч
 
Аватар для X0R
 
Сообщений: 6,705
Регистрация: 17.12.2006
Возраст: 37

X0R вне форума Не в сети
Цитата:
Сообщение от RedName Посмотреть сообщение
Только можешь объяснить про выбор смежных цветов?
а чего объяснять то. видишь на картинке закрашены не все дорожки, это от того, что для обозначения дорог используется несколько оттенков, тебе нужно проверять цвет пискеля не соответствие им. Код писать не буду.
  Ответить с цитированием
Старый 10.01.2012, 21:07   #522   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,173
Регистрация: 27.05.2003
Возраст: 46

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;

число 10 взято от балды, его надо подбирать на конкретных изображениях, от взятия корня можно избавиться возведя константу в квадрат.
  Ответить с цитированием
Старый 10.01.2012, 21:12   #523   
highly mean
 
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35

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

Последний раз редактировалось silly; 10.01.2012 в 21:15. Причина: ошибки
  Ответить с цитированием
Старый 10.01.2012, 21:26   #524   
старый хрыч
 
Аватар для X0R
 
Сообщений: 6,705
Регистрация: 17.12.2006
Возраст: 37

X0R вне форума Не в сети
silly, пусть толком напишет че ему надо. Тогда и получит ответ (может быть), а так пусть довольствуется тем что есть.
  Ответить с цитированием
Старый 10.01.2012, 21:41   #525   
highly mean
 
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35

silly вне форума Не в сети
Цитата:
Сообщение от RedName Посмотреть сообщение


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

При тупом рисовании поверх растровой картинки, правда, остается еще проблема с затиранием отдельных надписей и обозначений. Тут действительно лучше определится, использовать ли набор специфических манипуляций с изображением или api
  Ответить с цитированием
Старый 10.01.2012, 22:16   #526   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,173
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от silly Посмотреть сообщение
Это RedName ничего не даст (даже не смотря на то, что про цвета он сам спросил), поскольку отдельные улицы так друг от друга не отличить.
Для данной конкретной картинки вариант, предложенный XOR вполне адекватен. В общем и целом.


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

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

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

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

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

З.Ы. Найди картинки БЕЗ названий улиц, нарисованных на карте, иначе это усложнит тебе задачу в десять раз.
З.З.Ы. Мог бы предложить помочь за деньги, но только на С++
  Ответить с цитированием
Старый 10.01.2012, 22:23   #527   
highly mean
 
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35

silly вне форума Не в сети
Я просто не могу себе представить задачу, требующую закрашивания всех улиц на картинке в один цвет. Какова ценность подобной диаграммы?
  Ответить с цитированием
Старый 10.01.2012, 22:28   #528   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,173
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от silly Посмотреть сообщение
Я просто не могу себе представить задачу, требующую закрашивания всех улиц на картинке в один цвет. Какова ценность подобной диаграммы?
Эммм. Может я что-то не понимаю, но это та задача которую ты сам и поставил.
А если ты хочешь отдельные улицы выделять, то объясни - на каком основании, на основании каких входных данных?
  Ответить с цитированием
Старый 10.01.2012, 22:30   #529   
highly mean
 
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35

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

Дополнение:

Цитата:
Сообщение от Spectator Посмотреть сообщение
А если ты хочешь отдельные улицы выделять, то объясни - на каком основании, на основании каких входных данных?
Данные лежат там же, где и карта. Или можно все вручную разметить, это, де факто, RedName уже пытался сделать, только криво.

Последний раз редактировалось silly; 10.01.2012 в 22:39. Причина: дополнил
  Ответить с цитированием
Старый 10.01.2012, 22:42   #530   
старый хрыч
 
Аватар для X0R
 
Сообщений: 6,705
Регистрация: 17.12.2006
Возраст: 37

X0R вне форума Не в сети
Цитата:
Сообщение от silly Посмотреть сообщение
А если у нас есть координаты, рисовать можно прямо по ним. Вот только надписи всякие мешаются.)
если есть координаты, то можно моим кодом обрабатывать не всю карту, а только ближайшую окрестность кривой определяемой координатами.
  Ответить с цитированием
Старый 10.01.2012, 22:46   #531   
highly mean
 
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35

silly вне форума Не в сети
Цитата:
Сообщение от X0R Посмотреть сообщение
если есть координаты, то можно моим кодом обрабатывать не всю карту, а только ближайшую окрестность кривой определяемой координатами.
Можно, хотя лично я бы сделал полупрозрачные линии, а научруку сказал бы, что так модно
  Ответить с цитированием
Старый 10.01.2012, 22:52   #532   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,173
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от silly Посмотреть сообщение
Нет, не так. Я говорю исключительно о выделении одной или нескольких улиц. Тупо по цвету это не сделать, нужны еще координаты. (А если у нас есть координаты, рисовать можно прямо по ним. Вот только надписи всякие мешаются.)
В таком случае нужны еще Check-point'ы. Я предлагаю (а не настаиваю) не переливать из пустое в порожнее, а все же дождаться от RedName четкой постановки задачи, которую он сам и пытается сделать.
Поскольку картинка никоим образом не коррелирует с тем что он объясняет.

Его слова.
Есть яндекс мап. Требудется показать нагруженность улицы как нибудь.
Как это понимаю я - требуется распознать дороги и некоторые из них ПОСЛЕ выделения раскрасить разными цветами, просто для демонстрации.
  Ответить с цитированием
Старый 10.01.2012, 22:54   #533   
бибизьян
 
Аватар для aerin
 
Сообщений: 3,026
Регистрация: 17.02.2004

aerin вне форума Не в сети
Цитата:
Сообщение от 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 имеет к смежности цветов?
  Ответить с цитированием
Старый 10.01.2012, 22:57   #534   
Смотри сюда
 
Аватар для RedName
 
Сообщений: 418
Регистрация: 16.11.2007

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


Вообще мой вариант с рисованием линий ручками в Expression Blend нравится тем что довольно прост. Где то полчаса на отрисовку улиц района + анимация по времени. Но очень уж аляповато выходит.
Вариант XOR'а мне нравится больше так как "грамотней" это всё выглядит. Единственное что надо подумать как разделять улицы.
  Ответить с цитированием
Старый 10.01.2012, 22:58   #535   
старый хрыч
 
Аватар для X0R
 
Сообщений: 6,705
Регистрация: 17.12.2006
Возраст: 37

X0R вне форума Не в сети
Цитата:
Сообщение от silly Посмотреть сообщение
Можно, хотя лично я бы сделал полупрозрачные линии, а научруку сказал бы, что так модно
надписи перекроются, это не модно) И ничто не мешает при замене цвета пикселя создать ощущение полупрозрачности.
  Ответить с цитированием
Старый 10.01.2012, 23:02   #536   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,173
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от 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;
  Ответить с цитированием
Старый 10.01.2012, 23:05   #537   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,173
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от RedName Посмотреть сообщение
Объясняю. Вот на карте Московский проспект. Пусть по документам одновременно присутствовать может, допустим 600 машин на нём.
Это и слону ясно. Какая постановка задачи? Выделить дороги из карты - это тоже ясно. Дальше что? Конкретно.
  Ответить с цитированием
Старый 10.01.2012, 23:06   #538   
highly mean
 
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35

silly вне форума Не в сети
Цитата:
Сообщение от X0R Посмотреть сообщение
надписи перекроются, это не модно) И ничто не мешает при замене цвета пикселя создать ощущение полупрозрачности.
Ну я ленивый просто…
  Ответить с цитированием
Старый 10.01.2012, 23:12   #539   
старый хрыч
 
Аватар для X0R
 
Сообщений: 6,705
Регистрация: 17.12.2006
Возраст: 37

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

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

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

Картинка для иллюстрации определения улиц с помощью прямоугольников
Миниатюры
Нажмите на изображение для увеличения
Название: sshot-5.jpg
Просмотров: 8
Размер:	103.6 Кб
ID:	1666642  

Последний раз редактировалось X0R; 10.01.2012 в 23:36.
  Ответить с цитированием
Старый 10.01.2012, 23:21   #540   
Смотри сюда
 
Аватар для RedName
 
Сообщений: 418
Регистрация: 16.11.2007

RedName вне форума Не в сети
Цитата:
Сообщение от Spectator Посмотреть сообщение
Это и слону ясно. Какая постановка задачи? Выделить дороги из карты - это тоже ясно. Дальше что? Конкретно.
Взять данные из БД и на их основе построить оптимальный путь отсюда - туда в какой то момент времени, в зависимости от загруженности дороги. В Бд хранятся названия улиц и их основные характеристики, которые могут повлиять на загруженность. - количество светофоров, пешеходных переходов, развязок итп. .
Пока для меня задачей стоит на основе абстрактных значений, которые даже не в БД хранятся а где угодно, показать что мол вот чего то там меняется со временем.
  Ответить с цитированием
Поиск в теме: 


Опции темы

Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind