🐍 Python & CBS

Python ile Mekansal Veri Analizi: GeoPandas Rehberi

📅 5 Haziran 2026 ⏱️ 10 dk okuma 🐍 Python & CBS

GeoPandas, Python'ın popüler pandas kütüphanesini coğrafi veri desteğiyle genişleten açık kaynaklı bir kütüphanedir. Shapefile, GeoJSON ve GeoPackage gibi mekansal veri formatlarını doğrudan okuyabilir; projeksiyon dönüşümü, tampon analizi (buffer), kesişim (intersect) ve mekansal birleştirme (spatial join) gibi temel CBS işlemlerini birkaç satır kodla gerçekleştirmenize olanak tanır. Bu rehberde GeoPandas'ı sıfırdan kurulumdan pratik bir uygulama örneğine kadar adım adım inceliyoruz.

GeoPandas Nedir ve Nasıl Kurulur?

GeoPandas; shapely (geometri işlemleri), fiona (dosya okuma/yazma), pyproj (koordinat dönüşümü) ve matplotlib (görselleştirme) kütüphanelerini tek bir çatı altında birleştirir. Conda ortamında kurulum en güvenli yoldur:

conda create -n cbs python=3.11 conda activate cbs conda install -c conda-forge geopandas matplotlib contextily

pip ile kurulum yapmak istiyorsanız önce GDAL bağımlılığını sisteminize kurmanız gerekir; bu nedenle Conda veya WSL ortamı tercih edilir. contextily eklenerek arka plana OpenStreetMap veya başka döşeme haritaları eklenebilir.

GeoDataFrame Yapısı

GeoPandas'ın temel veri yapısı GeoDataFrame'dir; standart bir pandas DataFrame'e ek olarak en az bir geometry sütunu içerir. Bu sütun Shapely nesnelerini (Point, LineString, Polygon veya çok parçalı varyantları) barındırır. GeoDataFrame aynı zamanda aktif CRS (koordinat referans sistemi) bilgisini de saklar.

import geopandas as gpd gdf = gpd.read_file("turkiye_iller.gpkg") print(gdf.crs) # EPSG:4326 gibi print(gdf.geometry.type.unique()) # ['Polygon'] ya da ['MultiPolygon'] print(gdf.head()) # il adı, nüfus, geometry sütunları görünür

Shapefile ve GeoJSON Okuma / Yazma

GeoPandas, read_file() fonksiyonu ile Shapefile (.shp), GeoJSON, GeoPackage (.gpkg), KML ve daha birçok formatı otomatik olarak tanır. Dosyayı kaydetmek için to_file() yeterlidir:

# Okuma gdf = gpd.read_file("iller.shp") # GeoJSON olarak kaydetme gdf.to_file("iller.geojson", driver="GeoJSON") # GeoPackage (çok katmanlı, önerilen modern format) gdf.to_file("proje.gpkg", layer="iller", driver="GPKG")

Pratik İpucu: Shapefile formatı .shp, .dbf, .shx, .prj gibi birden fazla dosya içerir; bu dosyaları paylaşırken hepsini birlikte göndermek gerekir. Bunun yerine tek dosyalı GeoPackage (.gpkg) kullanmak hem daha güvenli hem de daha hızlıdır.

Temel Mekansal İşlemler

Buffer (Tampon Analizi)

Bir geometri etrafında belirtilen mesafede alan oluşturur. Mesafeyi metre cinsinden vermek için önce metrik bir CRS'e (ör. EPSG:32636) dönüşüm yapılmalıdır:

hastaneler = gpd.read_file("hastaneler.geojson") hastaneler_utm = hastaneler.to_crs("EPSG:32636") # 5 km tampon tampon = hastaneler_utm.copy() tampon["geometry"] = hastaneler_utm.buffer(5000)

Intersect (Kesişim) ve Overlay

İki katmanın kesişen alanlarını bulmak için overlay() kullanılır. how parametresi "intersection", "union", "difference" veya "symmetric_difference" olabilir:

tarim_alanlari = gpd.read_file("tarim.gpkg") su_havzalari = gpd.read_file("havza.gpkg") # Aynı CRS'de olduklarından emin olun tarim_alanlari = tarim_alanlari.to_crs(su_havzalari.crs) kesisim = gpd.overlay(tarim_alanlari, su_havzalari, how="intersection")

Dissolve (Birleştirme)

Belirli bir sütuna göre geometrileri birleştirerek özet istatistikler hesaplar. Örneğin ilçeleri iller bazında birleştirmek:

ilceler = gpd.read_file("ilceler.gpkg") iller = ilceler.dissolve(by="il_adi", aggfunc={"nufus": "sum"})

Spatial Join (Mekansal Birleştirme)

sjoin() ile iki katman arasında konuma dayalı birleştirme yapılır. Örneğin her noktanın (okul) hangi ile ait olduğunu bulmak:

okullar = gpd.read_file("okullar.geojson").to_crs("EPSG:4326") iller = gpd.read_file("iller.gpkg").to_crs("EPSG:4326") okullar_il = gpd.sjoin(okullar, iller[["il_adi","geometry"]], how="left", predicate="within")

Koordinat Dönüşümü (CRS)

GeoPandas'ta CRS dönüşümü için to_crs() yeterlidir. Coğrafi koordinatlar (derece) ile metrik koordinatlar (metre) arasında geçiş yaparken hangi bölgede çalıştığınıza göre doğru UTM bölgesini seçin. Türkiye için çoğunlukla EPSG:32636 (UTM Zone 36N) ya da EPSG:32635 (UTM Zone 35N) kullanılır.

Pratik Örnek: İl Bazında Nüfus Yoğunluğu Haritası

Aşağıdaki örnek, Türkiye il sınırları ve nüfus verisini birleştirerek km² başına nüfus yoğunluğu haritası üretir:

import geopandas as gpd import pandas as pd import matplotlib.pyplot as plt # Veri yükleme iller = gpd.read_file("turkiye_iller.gpkg") # geometri nufus = pd.read_csv("nufus_2025.csv") # il_adi, nufus sütunları # Birleştirme iller = iller.merge(nufus, on="il_adi", how="left") # Alan hesaplama (m² → km²) iller_utm = iller.to_crs("EPSG:32636") iller["alan_km2"] = iller_utm.geometry.area / 1_000_000 # Nüfus yoğunluğu iller["yogunluk"] = iller["nufus"] / iller["alan_km2"] # Görselleştirme fig, ax = plt.subplots(figsize=(14, 7)) iller.plot(column="yogunluk", cmap="YlOrRd", legend=True, legend_kwds={"label": "Kişi/km²"}, ax=ax, edgecolor="white", linewidth=0.4) ax.set_title("Türkiye İl Bazında Nüfus Yoğunluğu (2025)", fontsize=14) ax.axis("off") plt.tight_layout() plt.savefig("nufus_yogunlugu.png", dpi=150)

GeoPandas vs ArcGIS/QGIS: Ne Zaman Hangisi?

KriterGeoPandas (Python)QGIS / ArcGIS
Otomasyon ve toplu işlemÇok güçlü; döngü ve betikle kolayca ölçeklenirModel Builder ile mümkün ama daha sınırlı
Görsel arayüz ihtiyacıYok; kod tabanlı çalışmaZengin GUI, tıkla-kullan arayüzü
İstatistik entegrasyonupandas, scikit-learn, PySAL ile tam entegrasyonHarici araçlara bağımlı
Büyük veri (>1 GB shapefile)Dask-GeoPandas ile paralel işlem mümkünPerformans sorunu yaşanabilir
Öğrenme eğrisiPython bilgisi gerektirirDaha kolay başlangıç
MaliyetÜcretsiz, açık kaynakQGIS ücretsiz; ArcGIS pahalı lisans

Sonuç olarak tekrarlayan ve büyük ölçekli analizler ile makine öğrenmesi entegrasyonu gerektiren projelerde GeoPandas açık ara üstündür. Hızlı görsel keşif, dijitleştirme veya özel CBS araçlarına ihtiyaç duyulan durumlarda ise QGIS ideal tercihtir.

Başlangıç Kaynağı: Türkiye il sınırları için GADM (gadm.org) veya Türkiye İstatistik Kurumu'nun coğrafi veri portalından ücretsiz shapefile indirebilirsiniz. Koordinat sistemi genellikle WGS84 (EPSG:4326) olarak gelir; alan ve mesafe hesaplamaları için UTM'e dönüştürmeyi unutmayın.

Python ile CBS Analizi Projeniz için Profesyonel Destek

GeoPandas, mekansal istatistik ve harita üretimi konularında uzman kadromuzdan destek alın.

Python ile CBS analizi projeniz için profesyonel destek alın

Kaynaklar

  • GeoPandas Development Team. (2026). GeoPandas Documentation. geopandas.org
  • Rey, S. J., Arribas-Bel, D., & Wolf, L. J. (2020). Geographic Data Science with Python. CRC Press.
  • McKinney, W. (2017). Python for Data Analysis (2nd ed.). O'Reilly Media.