Градиентная заливка полигона
-
- Интересующийся
- Сообщения: 15
- Зарегистрирован: 22 июл 2009, 14:48
- Репутация: 0
- Откуда: Москва
Градиентная заливка полигона
Добрый день, уважаемые форумчане!
Стоит такая задача, необходимо раскрасить полигон градиентно, то есть с переходами например от красного к зеленому. Например, есть полигональная дорогая, и надо плавно показать, что дорожная ситуация ухудшается. Есть у кого мысли как это можно реализовать?
Geoserver
Стоит такая задача, необходимо раскрасить полигон градиентно, то есть с переходами например от красного к зеленому. Например, есть полигональная дорогая, и надо плавно показать, что дорожная ситуация ухудшается. Есть у кого мысли как это можно реализовать?
Geoserver
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Градиентная заливка полигона
SLD 1.1.0: "There are two types of fills, solid-color and repeated GraphicFill."
Градиенты (interpolate) предусмотрены только для растров.
Градиенты (interpolate) предусмотрены только для растров.
лангольеры под окном жрали время ом-ном-ном
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: Градиентная заливка полигона
Бить на сегменты и раскрашивать каждый отдельно в сплошной цвет.
Собственно, даже если бы все было нормально с возможностью назначит полигону градиентную заливку, считать ее параметры было бы в некоторых случаях (когда объект-дорога имеет сложную криволинейную форму, не все улицы у нас прямые) непросто - потребовалось бы считать проекцию точек с ключевыми значениями, расположенными на дороге, на некую линию, положение которой сильно зависело бы от формы (скажем, если это улица, поворачивающая под острым углом или имеющая z-образный изгиб, взять градиент вдоль линии, соединяющей концы улицы, недостаточно).
UPD: Лет 13 назад меня такой вопрос тоже интересовал, когда я рассматривал картинки с развязками в атласе АГТ-Геоцентра, вот эти http://www.allmaps.ru/products/avto_msk ... g_razv.jpg .
Собственно, даже если бы все было нормально с возможностью назначит полигону градиентную заливку, считать ее параметры было бы в некоторых случаях (когда объект-дорога имеет сложную криволинейную форму, не все улицы у нас прямые) непросто - потребовалось бы считать проекцию точек с ключевыми значениями, расположенными на дороге, на некую линию, положение которой сильно зависело бы от формы (скажем, если это улица, поворачивающая под острым углом или имеющая z-образный изгиб, взять градиент вдоль линии, соединяющей концы улицы, недостаточно).
UPD: Лет 13 назад меня такой вопрос тоже интересовал, когда я рассматривал картинки с развязками в атласе АГТ-Геоцентра, вот эти http://www.allmaps.ru/products/avto_msk ... g_razv.jpg .
-
- Интересующийся
- Сообщения: 15
- Зарегистрирован: 22 июл 2009, 14:48
- Репутация: 0
- Откуда: Москва
Re: Градиентная заливка полигона
Mavka, спасибо за ответ. Но теоретически можно применить растр для отображения интенсивности движения ? Или это какой-то бред с моей стороны?
ericsson, да, Вы всё верно говорите. Видимо придется так делать
Просто вроде как это же задача оформления, а придется плодить новый слой, разбивать существующий слой дорог, в случае создания новой линии, надо не забыть опять ее разделить... Эх 
ericsson, да, Вы всё верно говорите. Видимо придется так делать


-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: Градиентная заливка полигона
Новый слой по идеологии в любом случае делать придется, потому что топологию дорог без данных о загрузке все равно демонстрировать нужно, наверняка.
Ну и такой момент.. Вы же все равно данные интерполировать собираетесь, градиент - не более чем "красивость"? В таком случае смею напомнить, что в соответствии с гидродинамической моделью транспортного потока, как вязкой сжимаемой до определенного предела жидкости с низкой скоростью распространения фронта изменения давления в ней, изменения скорости движения потока происходят почти скачкообразно, так что даже если отображать реальные данные, то плотность или скорость движения меняются на совсем коротком отрезке, и никакие градиенты там на фиг не нужны
Ну и такой момент.. Вы же все равно данные интерполировать собираетесь, градиент - не более чем "красивость"? В таком случае смею напомнить, что в соответствии с гидродинамической моделью транспортного потока, как вязкой сжимаемой до определенного предела жидкости с низкой скоростью распространения фронта изменения давления в ней, изменения скорости движения потока происходят почти скачкообразно, так что даже если отображать реальные данные, то плотность или скорость движения меняются на совсем коротком отрезке, и никакие градиенты там на фиг не нужны

- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Градиентная заливка полигона
ГИС программист
Растр применить не получится. Я думал о таком варианте: взять gheat, генерировать по известным точкам градиенты и потом отсекать результат по полигонам дорог. Но мне кажется, это далеко не лучший вариант.
И ericsson правильно говорит. Если дороги в БД, то можно создать вид, в котором полигоны будут разбиты на отрезки по длине. Для редко обновляемых графов это не скажется на производительности. И периодически генерировать новую таблицу, где каждому отрезку назначать интенсивность движения.
Растр применить не получится. Я думал о таком варианте: взять gheat, генерировать по известным точкам градиенты и потом отсекать результат по полигонам дорог. Но мне кажется, это далеко не лучший вариант.
И ericsson правильно говорит. Если дороги в БД, то можно создать вид, в котором полигоны будут разбиты на отрезки по длине. Для редко обновляемых графов это не скажется на производительности. И периодически генерировать новую таблицу, где каждому отрезку назначать интенсивность движения.
лангольеры под окном жрали время ом-ном-ном
-
- Интересующийся
- Сообщения: 15
- Зарегистрирован: 22 июл 2009, 14:48
- Репутация: 0
- Откуда: Москва
Re: Градиентная заливка полигона
ericsson да, Вы правы, в случае деления на сегменты градиент будет излишней "красивостью" )
Mavka, ericsson теперь встает вопрос как лучше организовать деление на сегменты. Действительно можно создать вьюху в БД, которая бы представляла деленные на сегменты участки дорог. Тогда проблема добавления новых участков и их деления, решалась бы без нас и без разбивки ручками существующих линий
) Но, в моей СУБД (Oracle Spatial) я могу представить так только линии. Там есть ср-ва разбиения линии на сегменты, но чтоб полигонов, такого я не знаю (( Полигоны придется вручную видимо, хм.
Mavka, ericsson теперь встает вопрос как лучше организовать деление на сегменты. Действительно можно создать вьюху в БД, которая бы представляла деленные на сегменты участки дорог. Тогда проблема добавления новых участков и их деления, решалась бы без нас и без разбивки ручками существующих линий

-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: Градиентная заливка полигона
С ораклом не работал.. Может линию на сегменты, а потом вокруг них - буфер в соответствии с типом дороги?
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Градиентная заливка полигона
Если нет готовой функции, то придется делать свою. В PostgreSQL можно что угодно придумать. В Oracle, уверен, тоже. Но явного решения чисто геометрической задачи я не знаю 
У вас же есть центральные линии дорог? Может тогда обойтись наложением на полигональный слой сверху линейного с буфером в две стороны? Если он полупрозрачный то и не сильно заметно будет расхождение в геометрии...

У вас же есть центральные линии дорог? Может тогда обойтись наложением на полигональный слой сверху линейного с буфером в две стороны? Если он полупрозрачный то и не сильно заметно будет расхождение в геометрии...
лангольеры под окном жрали время ом-ном-ном
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя