Spatial Join’in gizli özelliği: Birden fazla özniteliği tek bir sütunda nasıl gösterebilirsiniz?

Bazen yıllarca deneyimi olan CBS kullanıcıları bile ArcGIS Desktop’ın önceki sürümlerinde de bulunmasına rağmen daha önce hiç kullanmadığı araçlara veya işlevlere denk gelebiliyoruz.

Bunlardan birine örnek olarak, Spatial Join aracının pek bilinmeyen bir yeteneği olan, birden çok detayı tanımlayan değerleri bir ayraç kullanarak tek bir sütuna yazdırabilmeyi gösterebiliriz. Örneği uyguladığınızda ne kadar basit olduğuna şaşıracaksınız:

Örnek:

Geometri tipi poligon olan ve kadastro parsellerini temsil eden bir katmanınız olduğunu ve bunun altında da gene başka bir poligon katmanının bu kadastro parsellerinin ada adı altında ada numaralarını barındırdığını varsayalım.

Biz Spatial Join aracını kullanarak kadastro parseli katmanı ve ada adı katmanındaki poligonların birbirleriyle kesişenlerini birleştirerek, yeni bir katmanda ada ve parsel numarası özniteliklerini birlikte göstermek istediğimizi var sayalım. Bizim senaryomuz da bunu yaptığımızda bazı kadastro parsellerinin birden çok ada adı poligonuyla kesiştiğini görüyoruz. (Bazı “kadastro parseli” poligonlarının alttaki “Ada Adı” poligonlarından ikisine birden düşmesi gibi.)

Aşağıdaki Resim 1’deki basit örnekte de görebileceğiniz gibi bazı kadastro parselleri iki Ada Adı poligonuyla aynı anda kesişmekte, gerçek hayatta bundan daha fazlasıyla da kesişebilmektedir.

Kadastro ve Ada ParselleriResim 1

Kesişen değerleri tek bir sütunda göstermek istediğimizde, sadece tek bir işlem yaparak “Ada Adı” özniteliğini kadastro parselleri katmanının tablosuna ekleyebileceğinizi söylesek, işiniz daha kolay olmaz mıydı? Farkı daha iyi anlayabilmek için ilk önce bildiğimiz Spatial Join yöntemiyle bunu deneyelim:

Spatial Join One To ManyResim 2

Göreceğiniz gibi eğer Spatial Join aracının varsayılanları olarak gelen yukarıdaki örnek parametrelerle kullansaydınız ve hatta JOIN_ONE_TO_ONE ya da JOIN_ONE_TO_MANY işlemlerinin ikisini de deneseydiniz de aşağıdaki tabloda göreceğiniz gibi birden çok örtüşen poligonla uğraşmak zorunda kalacaktınız.

Spatial Join Tablo 1Resim 3

Yeni oluşan bu poligonları temizleme konusunda Overlay araçları da yardımcı olamayacaktır. Union kullanırsanız daha da çok poligonla karşılaşırsınız ve bu oluşan poligonları da Dissolve kullanarak tekrar bir araya getirmek isteyebilirsiniz. Fakat bunu denediğinize göreceğiniz gibi bu da bir işe yaramayacak çünkü Ada Adı sütunu, fark edeceğiniz gibi bir sayı değil text yani yazı sütunudur ve yazı biçiminde olan sütunlar istatistiksel hesaplamalarda kullanılamaz. ☹

Bunları aşmak için, bir yöntem olarak Python kullanabilirdiniz ama bunun yerine çok daha kolay bir yol olan Spatial Join aracının gizli bir işlevi olduğunu söylesek. Bu işlev, belirli bir alandaki özellik değerlerini listelemeye ve bunları kullanıcının tanımlayabildiği bir ayraç kullanarak seçtiğiniz bir öznitelik bilgisine yazdırmaya izin veriyor.

Bu işlev şöyle çalışıyor:

  • Spatial Join aracının açılır kutusunda, birleştirilmekte olan veri kümesinin satırına gidin ve sağ tuşla tıklayın. Gelen menüden Properties’i yani özellikleri seçin.

Spatial Join One To OneResim 4

  • Ardından aşağıdaki ayarları yapınız:
    • Length: Değeri uygun sayıda saklayabileceğiniz sayıya ayarlayınız.
    • Merge Rule: Join’i seçiniz.
    • Delimeter: İstediğiniz herhangi bir ayraçı buraya yazarak kullanın, mesala biz burada “,” kullandık.
    • Join Operation (optional) kısmını “One to one” olarak ayarlayınız.
    • Ve son olarak aracı çalıştırınız.

Spatial Join ayraç eklemeResim 5

Yeni oluşan katmanın öznitelik tablosunu açarsanız kesişen poligonların “ada adı” bilgilerinin seçtiğiniz ayraçlarla ayrılan metin değerleri olarak yan yana gösterildiğini görebilirsiniz.

Spatial Join ayraçlı tabloResim 6

Bunun gibi küçük işlevler büyük verilerle çalışırken, Python komut dosyalarını yazarken ya da öznitelikleri tek tek elle girerek harcayacağınız zamanı size kazandırabilir.  ESRI Türkiye çalışanları olarak, bu ve bunun gibi işlevleri kullanarak işlerinizi kolaylaştırmanızdan mutlu oluruz 😊

.author { position: absolute; top: 0; } li.author { border: none !important; }