Привет, всем ГИСовцам!
У меня такой вопрос:
Есть шейп с точками глубины необходимо раскрасить цифры по определенной палетке. Цвет зависит от глубины. Как можно это сделать? Была идея создать классы на каждое значение, но.. .. это очень долго.
Может у кого есть еще идеи?
Заранее спасибо.
Цветовая палетка для глубин
-
- Активный участник
- Сообщения: 184
- Зарегистрирован: 05 июн 2013, 11:45
- Репутация: 0
Цветовая палетка для глубин
- Вложения
-
- примерный результат
- Глубины.png (59.87 КБ) 4186 просмотров
-
- Активный участник
- Сообщения: 163
- Зарегистрирован: 28 июн 2012, 01:02
- Репутация: 84
- Откуда: Vladivostok
Re: Цветовая палетка для глубин
Правильно, на мой взгляд, было бы таки создавать отдельные классы подписей в свойствах слоя. Что бы упростить задачу, можно разбить слой по значениям в поле с глубиной. Потом назначить их как классы подписей, и настроить (раскрасить). В ArcGIS усть довольно удобный интерфейс для таких манипуляций: Построение классов надписей из классов символов.
Либо же использовать упоминавшуюся разбивку слоя и точечным символам в качестве условного знака поставить символ с соответствующей цифрой. Потом их соответственно раскрасить.
Либо же использовать упоминавшуюся разбивку слоя и точечным символам в качестве условного знака поставить символ с соответствующей цифрой. Потом их соответственно раскрасить.
-
- Активный участник
- Сообщения: 184
- Зарегистрирован: 05 июн 2013, 11:45
- Репутация: 0
Re: Цветовая палетка для глубин
Долгий путь все таки. Но всеравно спасибо!
-
- Активный участник
- Сообщения: 163
- Зарегистрирован: 28 июн 2012, 01:02
- Репутация: 84
- Откуда: Vladivostok
Re: Цветовая палетка для глубин
Если классы подписей из классификации слоя уже сделали, могу помочь с раскраской:
Другие настройки надписей в python, к сожалению, не доступны.
P.S. Скрипт написал "на коленке", но он работает. И общую идею, я думаю, можно понять.
Код: Выделить всё
def linear_gradient(start_color, finish_color, n):
# за функцию градиента благодарим http://bensouthgate.com/p/12_3_13.php
s = start_color
f = finish_color
colors =
for t in range(1, n):
v = tuple(int(s[j]+(float(t)/(n-1))*(f[j]-s[j])) for j in range(3))
colors.append(v)
return colors
# запускаем код из консоли карты
mxd = arcpy.mapping.MapDocument('CURRENT')
# обрабатываемый слой должен быть первым в таблице содержания
lyr = arcpy.mapping.ListLayers(mxd)[0]
# RGB цвет для наименьшего значения
start_color = (190, 232, 255)
# RGB цвет для наибольшего значения
finish_color = (0, 132, 168)
number_of_colors = len(lyr.labelClasses)
colors = linear_gradient(start_color, finish_color, number_of_colors)
for color, lable in zip(colors, lyr.labelClasses):
# визуальное оформление надписей можно менять за счет выражения
style_on = "<CLR red='{0}' green='{1}' blue='{2}'>".format(*color)
style_off = "</CLR>"
lable.expression = '"{0}" & {1} & "{2}"'.format(style_on, lable.expression, style_off)
arcpy.RefreshActiveView()
P.S. Скрипт написал "на коленке", но он работает. И общую идею, я думаю, можно понять.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей