MapServer: стиль для отрисовки двойной линии
Добавлено: 29 май 2012, 19:11
Потребовалось в MapServer отрисовать границу полигона двойной линией (см. вложение), прчём промежуток между двумя линиями должен быть прозрачным, то есть вариант нарисовать красную линию а потом поверх неё ещё одну сразу отпал. Попробовал описать символ таким образом:
и подключить его в map-файл:
Но при таком варианте возникают артефакты (см. вложение). Попробовал еще пару вариантов, но так и не добился нужного результата. Решил спросить в рассылке MapServer. И получил положительный ответ. Как оказалось, возможность, которой мне следует воспользоваться (а именно, построение буфера) была предложена в MS RFC 64 и реализована не так давно, поэтому даже в документации про это ничего не сказано. Таким образом, для построения заданного стиля линии нужно построить внешний и внутренний буфер в 1px и уже применять символику к этим буферным линиям:
Если кому интересен тред из листа рассылки MapServer, то вот он.
Код: Выделить всё
SYMBOL
NAME "double_line"
TYPE vector
POINTS
0 0 1 0 -99 -99 0 1 1 1
END
END
Код: Выделить всё
CLASS
STYLE
OUTLINECOLOR 255 0 0
SYMBOL 'double_line'
SIZE 3
WIDTH 1
END
END
Код: Выделить всё
CLASS
STYLE
OUTLINECOLOR 255 0 0
GEOMTRANSFORM (BUFFER([SHAPE], -1))
END
STYLE
OUTLINECOLOR 255 0 0
GEOMTRANSFORM (BUFFER([SHAPE], 1))
END
END