POLYGON STYLE COLOR TO COLUMN ATTRIBUTE TABLE IN QGIS

Leave a Comment
Assalamualaikum Wr.Wb

Polygon secara ilmu GIS dapat diartikan sebagai sebuah objek berupa vektor yang terbentuk oleh sekumpulan koordinat yang mewakili benda/objek tertentu di muka bumi, sedangkan Color (warna) dapat diartikan sebagai sebuah spektrum tertentu yang terdapat di dalam suatu cahaya sempurna. Identitas suatu warna ditentukan berdasarkan panjang gelombang cahaya tersebut.
POLYGON STYLE COLOR TO  COLUMN
Pada tulisan ini blog INFO-GEOSPASIAL akan menjelaskan bagaimana cara menyalin suatu kode warna di dalam objek polygon di QGIS ke dalam suatu kolom/field di atribut tabel pada layer polygon tersebut.
Caranya, di dalam aplikasi QuantumGIS panggil layer format SHP (shapefile) yang isinya berupa objek polygon.
SHP Bali in QGIS
SHP Administrasi Provinsi Bali di QGIS
Kemudian di dalam atribut tabel layer tersebut tambahkan 2 field/kolom dengan nama 'color_hex' dan 'color_rgb'. Buat dengan type Text (string) dengan panjang karakter 15.
Tabel Layer Administrasi Provinsi Bali
Tabel Layer Administrasi Provinsi Bali
Selanjutnya buat warna objek polygon menjadi di kategorikan berdasarkan field yang di inginkan (contoh pada artikel ini menggunakan field 'nama').
Layer Administrasi Bali dalam tampilan warna yang di kategorikan
Layer Administrasi Bali dalam tampilan warna yang di kategorikan
Dalam tahap berikutnya adalah bagaimana caranya mengambil kode warna objek polygon yang sedang di tampilkan ke dalam kolom 'color_hex' dan 'color_rgb' di dalam atribut tabel. Terdapat dua cara, yang pertama dilakukan dengan manual, yaitu dengan menyalin kode warna pada setiap objek polygon satu per satu. Hal tersebut cukup cepat di lakukan jika jumlah objek polygon yang di beri warna hanya sedikit, tapi itu akan menjadi tidak efektif jika dilakukan untuk objek polygon yang di beri warna berjumlah banyak. Untuk mengatasi hal tersebut, maka kita bisa lakukan cara yang kedua yaitu dengan menggunakan script Python.
Caranya dengan aktifkan tool QGIS Python Console. Kemudian masukan Script Python berikut :
prefix = "'"
layer = iface.activeLayer()
attr = layer.rendererV2().classAttribute()
attrColor = 'color_hex' # Nama field yang akan di isi kode warna
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 )
Python adalah bahasa pemrograman interpretatif multiguna dengan filosofi perancangan yang berfokus pada tingkat keterbacaan kode. Python diklaim sebagai bahasa yang menggabungkan kapabilitas, kemampuan, dengan sintaksis kode yang sangat jelas, dan dilengkapi dengan fungsionalitas pustaka standar yang besar serta komprehensif.
Script di atas berfungsi untuk menyalin kode warna pada objek polygon ke dalam bentuk hexadecimal.
Proses Menjalankan Scipt dengan Python Console
Proses Menjalankan Scipt dengan Python Console
Sebelum menjalankan script di atas, pastikan warna objek polygon sudah di kategorikan, dan layer SHP sudah dalam keadaan editing.
Setelah Script di atas di jalankan di Python Console, maka hasilnya kode warna dalam bentuk hexadecimal akan otomatis terisi pada field 'color_hex' seperti pada gambar berikut :
Tabel Layer Administrasi Provinsi Bali dengan file color sudah terisi dengan kode warna
Tabel Layer Administrasi Provinsi Bali dengan file color_hex sudah terisi dengan kode warna
Untuk menyalin kode warna dalam bentuk RGB (Red,Green,Blue) maka script yang digunakan adalah sebagai berikut :
prefix = "'"
layer = iface.activeLayer()
attr = layer.rendererV2().classAttribute()
attrColor = 'color_rgb' # Nama field yang akan di isi kode warna
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 : str(cat.symbol().color().red()) +','+ str(cat.symbol().color().green()) +','+ str(cat.symbol().color().blue())}
    attrFeatMap[ f.id() ] = attrMap

layer.dataProvider().changeAttributeValues( attrFeatMap )
Jika scipt di atas di jalankan, maka di dalam kolom 'color_rgb' akan di dapat hasil seperti berikut :
Tabel Layer Administrasi Provinsi Bali dengan file color_rgb sudah terisi dengan kode warna
Tabel Layer Administrasi Provinsi Bali dengan file color_rgb sudah terisi dengan kode warna
Tahapan di atas bisa di lihat pada video berikut :
Artikel ini dibuat karena akan menjadi artikel pendukung untuk artikel lanjutan Pembuatan WebGIS dengan Leaflet Javascript yang akan segera di buat. Sumber scipt di atas di dapat dari gis.stackexchange.com, Semoga Bermanfaat . . .

Wassalamualaikum Wr.Wb

0 komentar:

Post a Comment