색상 스타일을 레이어 속성 테이블의 색상 열에 복사하는 방법은 무엇입니까?


15

QGIS에는 각 다각형에 임의의 색상 스타일을 적용한 다각형 레이어가 있습니다. 레이어 속성-> 스타일에서 분류 된 스타일을 선택한 다음 임의의 색상 램프를 생성했습니다. 레이어 테이블에 색상 열을 추가했습니다. 스타일에 할당 된 색상을 "# ff0000"형식으로 각 다각형의 색상 열에 자동으로 복사하는 방법이 있습니까?

궁극적으로 GeoJSON 레이어로 내 보내서 전단지 맵으로 가져오고 싶습니다. 색상 열은 전단지의 색상을 설정합니다.

답변:


22

이를 위해 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 )

색상을 저장하는 필드를 '색상'이라고 가정합니다. 그것을 실행 한 후에, 나는 이것을 얻었다 :

여기에 이미지 설명을 입력하십시오

문제가 발생하면 알려주십시오.


RGB를 위해 할 가능성이 있습니까?
Diogo Caribé

확실한. 전화하는 대신 cat.symbol().color().name()다음과 같이하십시오.str(cat.symbol().color().red()) +','+ str(cat.symbol().color().green()) +','+ str(cat.symbol().color().blue())
Germán Carrillo

API 이름 바꾸기 rendererV2-> 렌더러를 제외하고 qgis 3.6에서 여전히 유효합니다.
sabas

QGis 3.6에서 작동하지 않았습니다. rendererV2의 이름을 렌더러로 바꾸었지만 작동하지 않았습니다.
Paladini
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.