QGISには、各ポリゴンにランダムカラースタイルを適用したポリゴンレイヤーがあります。[レイヤプロパティ]-> [スタイル]で、カテゴリ化されたスタイルを選択し、ランダムなカラーランプを生成しました。レイヤーテーブルに色の列を追加しました。スタイルで割り当てられた色を「#ff0000」の形式で各ポリゴンの色列に自動的にコピーする方法はありますか?
最終的には、GeoJSONレイヤーとしてエクスポートし、リーフレットマップにインポートします。色の列は、リーフレットの色を設定します。
QGISには、各ポリゴンにランダムカラースタイルを適用したポリゴンレイヤーがあります。[レイヤプロパティ]-> [スタイル]で、カテゴリ化されたスタイルを選択し、ランダムなカラーランプを生成しました。レイヤーテーブルに色の列を追加しました。スタイルで割り当てられた色を「#ff0000」の形式で各ポリゴンの色列に自動的にコピーする方法はありますか?
最終的には、GeoJSONレイヤーとしてエクスポートし、リーフレットマップにインポートします。色の列は、リーフレットの色を設定します。
回答:
そのためにPyQGISを使用できます(ただし、それが最善の解決策であるとは限りません)。
QGIS ToCでレイヤーを選択(またはアクティブ化)し、QGIS Pythonコンソールを開き、次のコードスニペットをコピーします。
prefix = "'"
layer = iface.activeLayer()
attr = layer.rendererV2().classAttribute()
attrColor = 'color' # Name of the field to store colors
fieldIndex = layer.dataProvider().fieldNameIndex(attrColor)
attrFeatMap = {}
for cat in layer.rendererV2().categories():
expr = "\""+attr+"\"="+prefix+unicode(cat.value())+prefix
for f in layer.getFeatures(QgsFeatureRequest(QgsExpression(expr))):
attrMap = { fieldIndex : cat.symbol().color().name()}
attrFeatMap[ f.id() ] = attrMap
layer.dataProvider().changeAttributeValues( attrFeatMap )
色を保存するフィールドは「色」と呼ばれます。それを実行した後、私はこれを取得しました:
問題が発生した場合はお知らせください。
cat.symbol().color().name()
、このような何かを:str(cat.symbol().color().red()) +','+ str(cat.symbol().color().green()) +','+ str(cat.symbol().color().blue())