Daha çox

PyQGIS-də bir QComboBox-a sahə dəyərlərinin əlavə edilməsi


'Şəhərlər' deyən bir təbəqəm var. Qatda 'NAME_1' adlı bir sütun var. GUI-də bir QComboBox var, burada 'NAME_1' sütununun dəyərlərinin yalnız açılan qutunun açılan hissəsində göstərilməsini istəyirəm.

Pythonda müəyyən bir sütundan dəyər almaq və birləşdirilmiş qutuda göstərməyim üçün hər kəs mənə kömək edə bilərmi?


Bunun üçün xüsusi bir QGIS GUI widgetı olmadığı üçün (ən azı tapa bilmədim), belə bir şey edə bilərsiniz:

PyQt4.QtGui idxal QComboBox lyr = iface.activeLayer () idx = lyr.dataProvider (). fieldNameIndex ('NAME_1') uv = lyr.dataProvider (). uniqueValues ​​(idx) cb = QComboBox () cb.addItems (uv)

Sahənin unikal dəyərlərini əldə etdiyimizi unutmayınNAME_1, çünki istədiyim davranış budur deyə düşünürəm. Əks təqdirdə istifadəçilərinizə a üçün həqiqətən uyğun olmayan təkrarlanan dəyərləri göstərən bir siyahı göstərərdinizQComboBox.


Atribut cədvəli içərisindəki dəyərlər PyQGIS istifadə düzənində bir əfsanədə göstərilir

Hal-hazırda xəritəm daxilində məlumatları işləyən və sonra çap bəstəkarında bir yerleşim şəklində ixrac edən bir skriptim var. Xəritədə xəritədəki məlumatlara istinad edən bir əfsanə açarı var. Əfsanəm daxilində & # 8216MM1 1.0 Buffer & # 8217 adlı sarı bir tampon var. Bu vektor sənədinin atribut cədvəli içərisində, zəlzələdən təsirlənmiş əhalinin dəyəri olan, bufer ərazidə & # 8216LAC_Population_sum & # 8217 adlı bir sütun var. Lakin, bu dəyəri almaq üçün bir yol tapa bilmədiyim üçün, düzəndəki əfsanəmin içində göstərilir.

Yaddaş tamponu yaratmaq üçün istifadə etdiyim skript:

LAC_Population_sum dəyəri olan MM1 1.0 Buferi üçün Mənim Atribut cədvəlim:

Əfsanəmin hazırda göstərdiyi şey:

LAC_Population_Sum sahəsini yaradan kodum:

Bir cavab

Qatınız üçün kateqoriyalı bir stil yarada bilərsiniz, beləliklə təbəqənin adı və çoxbucağın dəyəri belədir:

Bunu PyQgisdə bu kodla edə bilərsiniz, yalnız ilk 2 sətirdə rəng və qeyri-şəffaflığı dəyişdirməlisiniz:

Buna bənzər bir şey əldə etmək üçün təbəqənin adını da dəyişə bilərsiniz: