QgsSymbolLayerV2Utils saveSymbol Python Qgis 1.8

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
DimaMix
Новоприбывший
Сообщения: 13
Зарегистрирован: 19 янв 2010, 17:26
Репутация: 2

QgsSymbolLayerV2Utils saveSymbol Python Qgis 1.8

Сообщение DimaMix » 17 июл 2014, 12:04

Добрый день.
Для сохранения описания правил отображения слоя пытаюсь использовать QgsSymbolLayerV2Utils.saveSymbol,
но не могу понять где мне взять данные для аргумента subSymbols.

QDomElement saveSymbol (QString name, QgsSymbolV2 *symbol, QDomDocument &doc, QgsSymbolV2Map *subSymbols=NULL)

Код: Выделить всё

    from PyQt4.QtCore import *
    from PyQt4.QtGui import *
    from PyQt4.QtXml import *
    from qgis.core import *
    vlayer=qgis.utils.iface.activeLayer()
    prov = vlayer.dataProvider()
    rnd  = vlayer.rendererV2()
    for cat in rnd.categories():
      sFeature=unicode(cat.value().toString())
      doc=QDomDocument("FeatureXML_V2")
      doomEl=QgsSymbolLayerV2Utils.saveSymbol(sFeature,cat.symbol(),doc,None)
      doc.appendChild(doomEl)
      # saving in DB
      print doc.toString()

DimaMix
Новоприбывший
Сообщения: 13
Зарегистрирован: 19 янв 2010, 17:26
Репутация: 2

Re: QgsSymbolLayerV2Utils saveSymbol Python Qgis 1.8

Сообщение DimaMix » 22 июл 2014, 13:15

Сам спросил, сам ответил ))))
Получилось так.....

Код: Выделить всё

vlayer=qgis.utils.iface.activeLayer()
prov = vlayer.dataProvider()
rnd  = vlayer.rendererV2()
for cat in rnd.categories():
  sFeature=unicode(cat.value().toString())
  doc=QDomDocument("FeatureXML_V2")
  symbolsEl = doc.createElement( "symbols" );                            
  doomEl=QgsSymbolLayerV2Utils.saveSymbol(sFeature,cat.symbol(),doc,None)
  symbolsEl.appendChild(doomEl)                                          
  sCat = cat.symbol()                                                    
  slrs = sCat.symbolLayerCount()                                         
  for il in range(slrs):                                                 
    sl=sCat.symbolLayer(il)                                            
    ss=sl.subSymbol()                                                  
    if ss:                                                             
      subname = QString( "@%s@%d"%( sFeature,il ))                   
      subEl=QgsSymbolLayerV2Utils.saveSymbol(subname,ss,doc,None)    
      symbolsEl.appendChild( subEl );                                
  doc.appendChild(symbolsEl)                                             
  # saving in DB
  print doc.toString()

Ответить

Вернуться в «QGIS»

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

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