Страница 1 из 1
Градиентная заливка полигона
Добавлено: 06 апр 2011, 11:00
ГИС программист
Добрый день, уважаемые форумчане!
Стоит такая задача, необходимо раскрасить полигон градиентно, то есть с переходами например от красного к зеленому. Например, есть полигональная дорогая, и надо плавно показать, что дорожная ситуация ухудшается. Есть у кого мысли как это можно реализовать?
Geoserver
Re: Градиентная заливка полигона
Добавлено: 06 апр 2011, 11:51
Mavka
SLD 1.1.0: "There are two types of fills, solid-color and repeated GraphicFill."
Градиенты (interpolate) предусмотрены только для растров.
Re: Градиентная заливка полигона
Добавлено: 06 апр 2011, 12:26
ericsson
Бить на сегменты и раскрашивать каждый отдельно в сплошной цвет.
Собственно, даже если бы все было нормально с возможностью назначит полигону градиентную заливку, считать ее параметры было бы в некоторых случаях (когда объект-дорога имеет сложную криволинейную форму, не все улицы у нас прямые) непросто - потребовалось бы считать проекцию точек с ключевыми значениями, расположенными на дороге, на некую линию, положение которой сильно зависело бы от формы (скажем, если это улица, поворачивающая под острым углом или имеющая z-образный изгиб, взять градиент вдоль линии, соединяющей концы улицы, недостаточно).
UPD: Лет 13 назад меня такой вопрос тоже интересовал, когда я рассматривал картинки с развязками в атласе АГТ-Геоцентра, вот эти
http://www.allmaps.ru/products/avto_msk ... g_razv.jpg .
Re: Градиентная заливка полигона
Добавлено: 06 апр 2011, 12:50
ГИС программист
Mavka, спасибо за ответ. Но теоретически можно применить растр для отображения интенсивности движения ? Или это какой-то бред с моей стороны?
ericsson, да, Вы всё верно говорите. Видимо придется так делать

Просто вроде как это же задача оформления, а придется плодить новый слой, разбивать существующий слой дорог, в случае создания новой линии, надо не забыть опять ее разделить... Эх

Re: Градиентная заливка полигона
Добавлено: 06 апр 2011, 12:58
ericsson
Новый слой по идеологии в любом случае делать придется, потому что топологию дорог без данных о загрузке все равно демонстрировать нужно, наверняка.
Ну и такой момент.. Вы же все равно данные интерполировать собираетесь, градиент - не более чем "красивость"? В таком случае смею напомнить, что в соответствии с гидродинамической моделью транспортного потока, как вязкой сжимаемой до определенного предела жидкости с низкой скоростью распространения фронта изменения давления в ней, изменения скорости движения потока происходят почти скачкообразно, так что даже если отображать реальные данные, то плотность или скорость движения меняются на совсем коротком отрезке, и никакие градиенты там на фиг не нужны

Re: Градиентная заливка полигона
Добавлено: 06 апр 2011, 13:14
Mavka
ГИС программист
Растр применить не получится. Я думал о таком варианте: взять
gheat, генерировать по известным точкам градиенты и потом отсекать результат по полигонам дорог. Но мне кажется, это далеко не лучший вариант.
И
ericsson правильно говорит. Если дороги в БД, то можно создать вид, в котором полигоны будут разбиты на отрезки по длине. Для редко обновляемых графов это не скажется на производительности. И периодически генерировать новую таблицу, где каждому отрезку назначать интенсивность движения.
Re: Градиентная заливка полигона
Добавлено: 06 апр 2011, 14:05
ГИС программист
ericsson да, Вы правы, в случае деления на сегменты градиент будет излишней "красивостью" )
Mavka,
ericsson теперь встает вопрос как лучше организовать деление на сегменты. Действительно можно создать вьюху в БД, которая бы представляла деленные на сегменты участки дорог. Тогда проблема добавления новых участков и их деления, решалась бы без нас и без разбивки ручками существующих линий

) Но, в моей СУБД (Oracle Spatial) я могу представить так только линии. Там есть ср-ва разбиения линии на сегменты, но чтоб полигонов, такого я не знаю (( Полигоны придется вручную видимо, хм.
Re: Градиентная заливка полигона
Добавлено: 06 апр 2011, 14:16
ericsson
С ораклом не работал.. Может линию на сегменты, а потом вокруг них - буфер в соответствии с типом дороги?
Re: Градиентная заливка полигона
Добавлено: 06 апр 2011, 14:57
Mavka
Если нет готовой функции, то придется делать свою. В PostgreSQL можно
что угодно придумать. В Oracle, уверен, тоже. Но явного решения чисто геометрической задачи я не знаю
У вас же есть центральные линии дорог? Может тогда обойтись наложением на полигональный слой сверху линейного с буфером в две стороны? Если он полупрозрачный то и не сильно заметно будет расхождение в геометрии...