Arcgispro’da Python ile Label (Etiket düzenleme)
Herkese merhaba,
Arcgis veya benzeri bir cbs yazılımında çalışırken etiketler fieldlardaki bilgileri almamızı sağlar ama bazen birden fazla bilgisiyi etiket ile almak isteyebiliriz. Bu işlemi Arcgisproda python kullanarak yapacağız.
Bu yazıdaki Waikato District Council tarafından sağlanan WDC — Water Supply Line (İçme suyu hattı )verisini kullanacağız.
Veri içerisinde en çok kullanacağımız Diameter(Çap) ve Material (malzeme) fieldları olacak.
İlk olarak işlemi yapacağımız fc’ye sağ tıklayıp Labeling porperties diyoruz ve ardından label class pencerisi açılıyor.
Pencereyi incelediğimizde. Class kısmında kodları yazacağımız kısım bulunacak. Symbol kısmında yazı rengi ve kalınlığı . Position kısmında ise yazının hat üstündeki konumunu belirliyoruz. Bu yazıda tüm işlemlerimizi Class içerisimde yapacağız.
Get ozan uzun’s stories in your inbox
Join Medium for free to get updates from this writer.
Class kısmını incelediğimizde Language kısmı işlem yapacağımız programa dilini seçiyoruz bizim için bu Python. Fields kısmında kullanabileceğimiz filedlar, Functions kısmında hazır fonksiyonlar ,Expression kısmında ise kod yazacağımız alan bulunur. Burada Advanced tikini işaretlediğimizde otomatik fonksiyon oluşur. Biz tüm işlemlerimizi fonksiyon içerisinde tamamlayacağız. Aşağıdaki basit fonksiyon hatların üstünde çapların yazmasını sağlar.
def FindLabel ( [Diameter] ):
return [Diameter]Şimdi kademe kademe bu fonksiyonu geliştirelim. İlk olarak çapların yanına Ø sembolünü ekleyelim.
def FindLabel ( [Diameter] ):
output="Ø"+" "+[Diameter]
return outputŞimdi yanına malzemeleri de ekleyelim. Bunun için fonksiyonun içerisinde 2. bir değişken koymalıyız.
def FindLabel ( [Diameter] ,[Material] ):
output="Ø"+" "+[Diameter]+[Material]
return outputŞimdi ise bilgi olarak mesafeleri ekleyelim.
def FindLabel ( [Diameter] ,[Material] ,[Length]):
output="Ø"+" "+[Diameter]+[Material]+" "+[Length]
return outputEvet metrajlar yazdık ama çok okunaklı değil. Bu yüzde metrajı alt tarafa indirelim.
def FindLabel ( [Diameter] ,[Material] ,[Length]):
output="Ø"+" "+[Diameter]+[Material]+"\n"+"L= "+[Length]+" m"
return outputBöylece daha okunabilir oldu birden fazla field’daki bilgileri almış olduk. Şimdi fieldlardan bilgi alalım ama verinin kendinde olmayan bir çıktı verelim. Örnek olarak düşük çaptaki borular abone yüksek çaptaki borulara ise ana hat diyelim. Bunu if,else yapısı ile yapacağız sınır olarak 50mm kullanacağız.
def FindLabel ( [Diameter]):
if int([Diameter])<=50:
output="Abone"
else:
output="Ana Hat"
return outputSon olarak bir önceki fonksiyona geri dönelim ve çaplara göre yazıların renk ve boyutlarını ayarlayalım.
def FindLabel ( [Diameter] ,[Material] ,[Length]):
if int([Diameter])<=50:
output="<CLR red='255' green='255'><FNT size = '10'>"+ "Ø"+" "+[Diameter]+[Material]+"\n"+"L= "+[Length]+" m"+ "</FNT></CLR>"
else:
output="<CLR red='255'><FNT size = '16'>"+ "Ø"+" "+[Diameter]+[Material]+"\n"+"L= "+[Length]+" m"+ "</FNT></CLR>"
return outputVe böylece basit python kodları çalışma alanımızı özelleştirmede ciddi kolaylık sağladığını görmüş olduk.









