Как использовать палитры цветов из каталога cpt-city с PyQGIS - PullRequest
0 голосов
/ 20 мая 2018

В QGIS (как вы знаете) есть 31 предопределенная цветовая шкала, а также их больше в каталоге cpt-city.И я хочу получить доступ к одной цветовой шкале, которая находится в каталоге cpt-city (имя: visspec).
Это мой код для предопределенной цветовой шкалы, которая работает:

myRenderer  = QgsGraduatedSymbolRenderer()
myRenderer.setClassAttribute("totalTraffic")
myRenderer.setMode(QgsGraduatedSymbolRenderer.EqualInterval)
myRenderer.updateClasses(layer, 
QgsGraduatedSymbolRenderer.EqualInterval,500000)
#get default style
myStyle = QgsStyle().defaultStyle()
#get a list of default color ramps [u'Blues', u'BrBG', u'BuGn'....]
defaultColorRampNames = myStyle.colorRampNames()
# setting ramp to Blues, first index of defaultColorRampNames
ramp = myStyle.colorRamp(defaultColorRampNames[7])
myRenderer.updateColorRamp(ramp)
layer.setRenderer(myRenderer)
QgsProject.instance().addMapLayer(layer)

И это мой код, куда я пытаюсь напрямую импортировать файл нужной цветовой шкалы, но этот код работает неправильно.Просто дает случайные цветные пиксели.

myRenderer = QgsGraduatedSymbolRenderer()
myRenderer.setClassAttribute("totalTraffic")
myRenderer.setMode(QgsGraduatedSymbolRenderer.EqualInterval)
myRenderer.updateClasses(gridMilano, QgsGraduatedSymbolRenderer.EqualInterval,10000`)
myStyle = QgsStyle().defaultStyle()
defaultColorRampNames = myStyle.colorRampNames()
ramp = myStyle.colorRamp("C:/Program Files/QGIS 3.0/apps/qgis/resources/cpt-city-qgis-min/jjg/physics/visspec.svg")`
myRenderer.updateColorRamp(ramp)
gridMilano.setRenderer(myRenderer)
QgsProject.instance().addMapLayer(gridMilano)

Это результат, который я получаю, когда непосредственно применял рампу visspec ccolor в QGIS введите описание изображения здесь

И это то, что я получаю со своим вторым кодом введите описание изображения здесь

Заранее спасибо:)

1 Ответ

0 голосов
/ 21 мая 2018

Вы должны использовать QgsCptCityColorRamp class:)

    myRenderer  = QgsGraduatedSymbolRenderer()

    myRenderer.setClassAttribute("totalTraffic")

    myRenderer.setMode(QgsGraduatedSymbolRenderer.EqualInterval)

    myRenderer.updateClasses(layer,
                QgsGraduatedSymbolRenderer.EqualInterval,100000)

    #using color ramp visspec

    ramp = QgsCptCityColorRamp("jjg/physics/visspec","",False,True)

    myRenderer.updateColorRamp(ramp)

    layer.setRenderer(myRenderer)

    QgsProject.instance().addMapLayer(layer)
...