Градиентная заливка полигона

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
ГИС программист
Интересующийся
Сообщения: 15
Зарегистрирован: 22 июл 2009, 14:48
Репутация: 0
Откуда: Москва

Градиентная заливка полигона

Сообщение ГИС программист »

Добрый день, уважаемые форумчане!

Стоит такая задача, необходимо раскрасить полигон градиентно, то есть с переходами например от красного к зеленому. Например, есть полигональная дорогая, и надо плавно показать, что дорожная ситуация ухудшается. Есть у кого мысли как это можно реализовать?

Geoserver
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Градиентная заливка полигона

Сообщение Mavka »

SLD 1.1.0: "There are two types of fills, solid-color and repeated GraphicFill."
Градиенты (interpolate) предусмотрены только для растров.
лангольеры под окном жрали время ом-ном-ном
ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Градиентная заливка полигона

Сообщение ericsson »

Бить на сегменты и раскрашивать каждый отдельно в сплошной цвет.
Собственно, даже если бы все было нормально с возможностью назначит полигону градиентную заливку, считать ее параметры было бы в некоторых случаях (когда объект-дорога имеет сложную криволинейную форму, не все улицы у нас прямые) непросто - потребовалось бы считать проекцию точек с ключевыми значениями, расположенными на дороге, на некую линию, положение которой сильно зависело бы от формы (скажем, если это улица, поворачивающая под острым углом или имеющая 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: Градиентная заливка полигона

Сообщение ericsson »

Новый слой по идеологии в любом случае делать придется, потому что топологию дорог без данных о загрузке все равно демонстрировать нужно, наверняка.
Ну и такой момент.. Вы же все равно данные интерполировать собираетесь, градиент - не более чем "красивость"? В таком случае смею напомнить, что в соответствии с гидродинамической моделью транспортного потока, как вязкой сжимаемой до определенного предела жидкости с низкой скоростью распространения фронта изменения давления в ней, изменения скорости движения потока происходят почти скачкообразно, так что даже если отображать реальные данные, то плотность или скорость движения меняются на совсем коротком отрезке, и никакие градиенты там на фиг не нужны :)
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Градиентная заливка полигона

Сообщение Mavka »

ГИС программист
Растр применить не получится. Я думал о таком варианте: взять gheat, генерировать по известным точкам градиенты и потом отсекать результат по полигонам дорог. Но мне кажется, это далеко не лучший вариант.

И ericsson правильно говорит. Если дороги в БД, то можно создать вид, в котором полигоны будут разбиты на отрезки по длине. Для редко обновляемых графов это не скажется на производительности. И периодически генерировать новую таблицу, где каждому отрезку назначать интенсивность движения.
лангольеры под окном жрали время ом-ном-ном
ГИС программист
Интересующийся
Сообщения: 15
Зарегистрирован: 22 июл 2009, 14:48
Репутация: 0
Откуда: Москва

Re: Градиентная заливка полигона

Сообщение ГИС программист »

ericsson да, Вы правы, в случае деления на сегменты градиент будет излишней "красивостью" )

Mavka, ericsson теперь встает вопрос как лучше организовать деление на сегменты. Действительно можно создать вьюху в БД, которая бы представляла деленные на сегменты участки дорог. Тогда проблема добавления новых участков и их деления, решалась бы без нас и без разбивки ручками существующих линий :)) Но, в моей СУБД (Oracle Spatial) я могу представить так только линии. Там есть ср-ва разбиения линии на сегменты, но чтоб полигонов, такого я не знаю (( Полигоны придется вручную видимо, хм.
ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: Градиентная заливка полигона

Сообщение ericsson »

С ораклом не работал.. Может линию на сегменты, а потом вокруг них - буфер в соответствии с типом дороги?
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Градиентная заливка полигона

Сообщение Mavka »

Если нет готовой функции, то придется делать свою. В PostgreSQL можно что угодно придумать. В Oracle, уверен, тоже. Но явного решения чисто геометрической задачи я не знаю :)

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

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость