Sitemap
ozan uzun

ozan uzun

Harita Mühendisi & CBS Uzmanı Linkedln : linkedin.com/in/uzunozan41

Arcgispro’da Python ile Toolbox I

4 min readJul 20, 2026

Herkese merhaba,

Bu yazı serisi ile python kullanarak Arcgispro’da çeşitli toolboxlar yapacağız. İlk toolbox projemiz basit bir csv dosyasındaki verileri bir feature class’ın içerisine ekleyeceğiz.

Elimizdeki veriyi İzmir Büyükşehir Belediyesinin açık veri platformundan aldık. Aldığımız veri otobüs hatları güzergahlarının hat numaraları, yönleri ve konumları bulunmatadır.

Kodlamaya başlamadan önce bu veriye uygun bir Feature class oluşturalım.

Press enter or click to view image in full size

Şimdi ilk olarak arcgisprodaki projemizde bir notebook oluşturuyoruz.

Şimdi sırada ihtiyacımız olan kütüphaneleri ekleyelim.

import arcpy
import pandas as pd

Ardından ihtiyacımız değişkenleri tanımlayalım.

fc=r"D:\Medium\Arcpy\Toolbox1\Toolbox1.gdb\Otobus_Hat"
data=r"D:\Medium\Arcpy\Toolbox1\eshot-otobus-hat-guzergahlari.csv"
fields = ['Hat_No', 'Yon', 'SHAPE@']

Kod satırları sırası ile

  • fc:Feature class’ın bulunduğu dizin.
  • data:Verini bulundupu dizin.
  • fields: Feature class içerisinde işlem yapacağımız alanlar. Burada ‘hat_no’ ve ‘Yon’ kullanacağımız fieldlar iken ‘SHAPE@’ ise fc’nin çoğrafi değerlere erişebilmemizi sağlar. Buradaki coğrafi değer hat güzergahının vertex(köşe koordinatları).

Şimdi bu verileri pandas ile okuyalım.

df=pd.read_csv(data,sep=";")
df

Veriyi dikkatli bir şekilde incelediğimiz zaman hat no ve yon değerlerinin tekrar ettiğiniz görüyoruz. Enlem ve boylam değerlerini kullanarak güzergah çizebilmek için hat numaraları ile yon değerlerine göre gruplandırmamız gerekiyor ama bundan önce enlem ve boylam değerlerini tek bir kolona liste biçimin de alalım.

df["KONUM"]=list(zip(df['BOYLAM'], df['ENLEM']))
df

Şimdi gruplandırabiliriz.

df1=df.groupby(["HAT_NO","YON"],as_index=False).agg({"KONUM":list})
df1

Artık en son oluşturduğumuz Dataframe’i bir döngü içerisinde kullanarak güzergahları fc’in içerisine ekleyebiliriz.

with arcpy.da.InsertCursor(fc,fields) as lines:
for row in df1.itertuples(index=False):

point_array = arcpy.Array([arcpy.Point(x,y ) for x,y in row.KONUM ])
polyline = arcpy.Polyline(point_array,arcpy.SpatialReference(4326))

if row.YON==1:
yon="GIDIS"
else:
yon="DONUS"

lines.insertRow([row.HAT_NO,yon,polyline] )

Kodu içerisinde önemli kısımları sırası ile inceleyelim.

  • arcpy.da.InsertCursor: Arcpy kütüphansinin içerisinde bulunan ve fc’in içerisine veri eklememize sağlayan komuttur.
  • df1.itertuples: df’in içerisinde verileri for döngüsü ile almamızı sağlar.
  • arcpy.Array: Her bir güzergahın köşelerinin tamamının liste şeklindeki coğrafi nesne.
  • arcpy.Point: Köşe noktalarının koordinatlarının bulunduğu coğrafi nesne.
  • arcpy.Polyline: Daha önce aluştruduğumuz liste şeklindeki coğrafi nesneyi kullanarak cizgi formatında yeni bir nesne oluşturuyoruz. Burada arcpy.SpatialReference bir koordinat sistemi tanımlamamızı sağlıyor.
  • if ve else : Df’de bulunan YON kolonunda eğer 1 varsa gidiş eğer 2 varsa dönüş olarak yeni bir yon adındaki değişkene atıyoruz.
  • lines.insertRow: Df’de alınan ve oluşturulan tüm değeri fc’a eklememizi sağlar.

Tüm kodları doğru biçimde çalıştırdığınızda verilerin haritada ve tabloda rahatlıkla görebilirsiniz.

Press enter or click to view image in full size

Tasarladığımız bu sistemi kodlama bilmeyen bire paylaşmayı düşünüyorsak onunda kolay kullanabilmesi için bir toolbox içerisine yerleştireceğiz.

Get ozan uzun’s stories in your inbox

Join Medium for free to get updates from this writer.

Bunun için ilk olarak başta tanımladığımız fc ve data değişkenlerini değiştireceğiz.

fc=arcpy.GetParameterAsText(0)
data=arcpy.GetParameterAsText(1)

arcpy.GetParameterAsText Komutu toolbox da oluşturacağımız parametreler ile bağlantı kurmamızı sağlar.

Şimdi yazdığımız notebook’u bir script olarak kaydetmemiz gerekiyor. Bunuda arcgisproda notebook içerisinde çalışırken sol üst köşede bulunan export tuşu ile yapacağız.

Press enter or click to view image in full size

Şimdi proje ile birlikte oluşan toolbox’ın üzerine sağ tıklayarak new>Script diyoruz.

General kısmında tool’un ismi bulunduğu dizin ve açıklama vb. değerleri giriyoruz.

Press enter or click to view image in full size

Parameters kısmında dışarıdan alacağımız parametreleri oluşturuyoruz. Name kısmında parametre adı. Data Type kısmında dışarıdan alacağımız değerlerin tiplerini alıyoruz. Burada fc için Feature Class , csv için ise File seçiyoruz. Type kısmında ki required kısmı tüm parametrelerin gerekli olduğu ve girirmeden tool’un çalışmayacağı anlamında geliyor. Son olarak Direction kısmı ise hem fc’ı hem de Csv dosyasını dışarıdan aldığımız için Input olarak giriyoruz

Press enter or click to view image in full size

Execution kısmıda ise export ettiğimiz script dosyasını yüklüyoruz. Bunu için sağ üsteki dosya simgesini kullanıyoruz. Script’i yükledikten sonra pencereden yazdığımız kodları görebiliriz. Diğer iki kısım bizim için bu projede gerekli olmadığı için pas geçebiliriz.

Press enter or click to view image in full size

Ok tuşuna bastıktan sonra tool’umuzu oluşturmuş oluşturuyoruz ve artık test edebiliriz.

Şimdi tool’umuzu tamamladık yalnız tool’umuz sadece kendi projemizde çalışır sebebi ise tool Script’e bağlı olduğundan dolayı. Eğer toolbox’u başka proje ve bilgisayardan çalışması için embed yapmamız gerekiyor. Bunu sağ tık properties kısmına geldikten sonra execution kısmından çözebiliriz. Embed yapmak için kırmızı alet kutusuna basmalıyız

Press enter or click to view image in full size

Embed işleminden sonra kırmızı alet kutusunun yerine yeşil ok geliyor. Bu yeşil ok python dosyasını export etmemizi sağlar. Dikkat ettiyseniz embedten sonra script dosyasının bulunduğu dizin arık gözükmüyor çünkü kodumuz artık tool’un içerisinde gömülü oluyor. Ayrıca beyaz kilit tuşuna basarak kodumuza şifre koyabiliriz.

--

--