CBS'te Ağ Analizi: En Kısa Yol ve Servis Alanı Hesaplama
Bir ambulansın en hızlı yoldan hastaneye ulaşması, bir perakende zincirinin depo konumlarını optimize etmesi ya da belediyenin yeni açacağı okulun kaç kişiye 15 dakika içinde ulaşabileceğini hesaplaması — bunların tümü ağ analizi ile yanıtlanır. CBS'te ağ analizi, yollar, boru hatları veya iletişim altyapısı gibi birbirine bağlı doğrusal unsurlar üzerinde en kısa yol, servis alanı ve erişilebilirlik hesaplamalarını gerçekleştiren güçlü bir yöntemler bütünüdür. Bu yazıda ağ analizinin temel kavramlarını, algoritmaları ve QGIS ile Python ile nasıl uygulandığını ele alıyoruz.
Ağ Veri Yapısı: Düğümler ve Kenarlar
Bir coğrafi ağ iki temel bileşenden oluşur:
- Düğümler (Nodes / Vertices): Kavşaklar, istasyonlar, tesisler gibi nokta unsurlar. İki kenarın kesiştiği veya başladığı/bittiği her nokta bir düğümdür.
- Kenarlar (Edges / Links): Düğümleri birbirine bağlayan yollar, kanallar veya hatlar. Her kenara ağırlık atanabilir: mesafe, seyahat süresi, trafik, maliyet veya engel türü.
Ağırlık seçimi sonuçları doğrudan etkiler. Aynı iki nokta arasındaki "en kısa yol" mesafeye göre farklı, süreye göre farklı bir güzergah üretebilir. Gerçek dünya uygulamalarında yön kısıtlamaları (tek yönlü sokaklar), dönüş kısıtlamaları ve hız limitleri de ağ modeline dahil edilir.
En Kısa Yol Analizi
En kısa yol analizi, iki nokta arasındaki en düşük maliyetli güzergahı bulur. CBS yazılımlarında kullanılan başlıca algoritmalar şunlardır:
Dijkstra Algoritması
1956'da Edsger Dijkstra tarafından geliştirilen bu algoritma, bir kaynak düğümden tüm diğer düğümlere olan en kısa yolları hesaplar. Negatif ağırlık içermeyen ağlar için garantili optimum sonuç verir. QGIS ve ArcGIS'in arka planda kullandığı temel algoritmadır. Büyük kentsel ağlarda hesaplama maliyeti artabilir; bu nedenle yalnızca iki nokta arasındaki yol hesaplanacaksa A* algoritması tercih edilir.
A* (A-Star) Algoritması
A*, Dijkstra'nın üzerine bir sezgisel fonksiyon ekler: hedef düğüme olan tahmini uzaklığı (genellikle Öklid mesafesi) hesaba katarak gereksiz düğümlerin ziyaret edilmesini önler. Bu sayede büyük ağlarda Dijkstra'dan çok daha hızlı sonuç üretir. OSMnx ve NetworkX kütüphanelerinde varsayılan algoritma olarak kullanılmaktadır.
| Kriter | Dijkstra | A* |
|---|---|---|
| Garanti optimum sonuç | Evet | Evet (uygun sezgisel ile) |
| Hız (büyük ağlar) | Yavaş | Hızlı |
| Negatif ağırlık desteği | Hayır | Hayır |
| Tek kaynak → tüm hedefler | Verimli | Daha az verimli |
| Tipik kullanım | Tüm ağ analizi | Navigasyon, gerçek zamanlı rota |
Pratik not: "En kısa yol" her zaman en az mesafe anlamına gelmez. Seyahat süresi, yakıt maliyeti veya karbon emisyonu gibi farklı ağırlıklar kullanarak aynı ağ üzerinde farklı "en iyi güzergahlar" elde edebilirsiniz. Doğru ağırlık seçimi analizin amacına bağlıdır.
Servis Alanı Analizi ve İzokron Haritaları
Servis alanı analizi, belirli bir noktadan (hastane, itfaiye, okul, mağaza) belirli bir süre veya mesafe içinde ulaşılabilecek alanı harita üzerinde gösterir. Bu haritalar izokron (eşit süre eğrisi) olarak da adlandırılır. Bir acil servis biriminin 5, 10 ve 15 dakikalık erişim alanlarını ya da bir deponun 50 km yarıçapındaki teslimat bölgesini görselleştirmek için kullanılır.
İzokron Haritalarının Uygulama Alanları
- Sağlık planlaması: Hastane veya sağlık ocağına 10 dakika içinde ulaşamayan mahalleleri tespit etmek
- Eğitim: Yeni açılacak okul için en fazla öğrenciye ulaşan konumu belirlemek
- Perakende: Rakip mağazaların servis alanlarını karşılaştırmak
- Afet yönetimi: Tahliye güzergahlarını ve toplanma noktalarına erişim sürelerini modellemek
- Kentsel planlama: Toplu taşıma duraklarından yürüme mesafesindeki nüfusu hesaplamak
Python ile Ağ Analizi: OSMnx ve NetworkX
Python ekosisteminde ağ analizi için en yaygın kullanılan iki kütüphane şunlardır:
- OSMnx: OpenStreetMap verilerini doğrudan Python'a indirerek ağ nesnelerine dönüştürür. Sokak ağlarını, yürüyüş yollarını ve bisiklet ağlarını saniyeler içinde çekebilirsiniz.
- NetworkX: Genel amaçlı grafik analiz kütüphanesidir. OSMnx ile birlikte kullanıldığında en kısa yol, merkezilik ve bağlantı analizleri yapılabilir.
En Kısa Yol: OSMnx + NetworkX
import osmnx as ox import networkx as nx # İstanbul Kadıköy için yol ağını indir G = ox.graph_from_place("Kadıköy, İstanbul, Türkiye", network_type="drive") # Kaynak ve hedef koordinatları orig = ox.nearest_nodes(G, X=29.023, Y=40.991) dest = ox.nearest_nodes(G, X=29.048, Y=40.978) # En kısa yolu hesapla (süre bazlı) route = nx.shortest_path(G, orig, dest, weight="travel_time") # Haritada görselleştir fig, ax = ox.plot_graph_route(G, route, route_linewidth=4, node_size=0)
Servis Alanı (İzokron) Hesaplama
import osmnx as ox import networkx as nx import geopandas as gpd from shapely.geometry import MultiPoint from scipy.spatial import ConvexHull import numpy as np G = ox.graph_from_place("Beşiktaş, İstanbul, Türkiye", network_type="walk") G = ox.add_edge_speeds(G) G = ox.add_edge_travel_times(G) # Merkez nokta (örn. bir hastane konumu) center_node = ox.nearest_nodes(G, X=29.006, Y=41.043) # 5, 10 ve 15 dakikalık erişim düğümleri for minutes in [5, 10, 15]: subgraph = nx.ego_graph(G, center_node, radius=minutes*60, distance="travel_time") nodes = ox.graph_to_gdfs(subgraph, edges=False) print(f"{minutes} dk: {len(nodes)} düğüm")
QGIS ile Ağ Analizi
QGIS'te ağ analizi için iki temel araç bulunur:
- İşleme Araçları → Ağ Analizi → En Kısa Yol (Nokta-Noktadan): İki nokta arasındaki en kısa veya en hızlı güzergahı mesafe ya da süre kriterine göre hesaplar.
- İşleme Araçları → Ağ Analizi → Servis Alanı (Noktadan): Belirli bir seyahat mesafesi veya süresi için izokron poligonu üretir.
QGIS'te ağ analizi yapabilmek için önce yol katmanının topolojik olarak doğru olması gerekir: kesişen yolların düğüm paylaşması, kesik segmentlerin bulunmaması. GRASS → v.clean veya SAGA → Poliline to Vertices araçları topoloji temizliği için kullanılabilir.
Yazılım Karşılaştırması
| Yazılım | Güçlü Yanları | Sınırlılıkları |
|---|---|---|
| QGIS (ücretsiz) | Görsel arayüz, OSM entegrasyonu, temel analizler | Büyük ağlarda yavaş, ileri optimizasyon sınırlı |
| ArcGIS Network Analyst | Kapsamlı, kurumsal destek, trafik verisi entegrasyonu | Lisans maliyeti yüksek |
| Python (OSMnx + NetworkX) | Ücretsiz, esnek, otomatize edilebilir, büyük veri | Programlama bilgisi gerektirir |
| pgRouting (PostgreSQL) | Çok büyük ağlar, SQL tabanlı entegrasyon | Kurulum ve yapılandırma karmaşık |
Uygulama Alanları Özeti
- Acil servis optimizasyonu: Ambulans, itfaiye ve polis istasyonu konumlarının müdahale sürelerine göre değerlendirilmesi
- Lojistik ve dağıtım: Araç rota optimizasyonu, depo konumu seçimi
- Kentsel erişilebilirlik: Engelli bireylerin toplu taşımaya erişim analizleri
- Turizm ve navigasyon: Yürüyüş rotaları, bisiklet ağı planlaması
- Altyapı planlaması: Su, elektrik ve doğal gaz ağlarında arıza senaryoları
Ağ Analizi ve CBS Projeleriniz İçin Uzman Desteği
En kısa yol, servis alanı ve erişilebilirlik analizleri için profesyonel CBS danışmanlığı alın.
CBS analizi için uzman desteği alınKaynaklar
- Boeing, G. (2017). OSMnx: New Methods for Acquiring, Constructing, Analyzing, and Visualizing Complex Street Networks. Computers, Environment and Urban Systems, 65, 126–139.
- Dijkstra, E. W. (1959). A note on two problems in connexion with graphs. Numerische Mathematik, 1(1), 269–271.
- Hart, P. E., Nilsson, N. J., & Raphael, B. (1968). A formal basis for the heuristic determination of minimum cost paths. IEEE Transactions on Systems Science and Cybernetics, 4(2), 100–107.