Saturday, November 27, 2010

IETT Duraklari ve Hatlari

Istanbul IETT durak ve hat verisini yazinin altindaki kaynaktan indirebilirsiniz. Veri iki cesit, duz hat ve durak verisi, bir de Python pickle halinde islenmis veri yapilarinin oldugu .pkl dosyalari. Duz veriyi kullanmaya gerek yok, pickle dosyalari her seyi iceriyor. Veri yapilari, fonksiyonlari "Path-Planning Algorithms for Public Transportation Systems" adli makalede tarif edilen veri yapilaridir.

CS yapisi ortak duraklar (common stops) veri yapisidir; iki hattin ortak, cakistigi duraklarin ismini listeler. K fonksiyonu (verisi) x hatti uzerindeki y duraginin hattin basindan baslayarak sayi olarak "kacinci" oldugunu rapor eder. SR cagrisi bir duraktan gecen hatlar, routestops bir hattin ziyaret ettigi duraklardir.

Python cagrisi olarak bazi ornekler:

59N ve 59R hattinin ortak duraklari

print CS(cs, '59N', '59R')

59N hattindaki L0168A duragi kacinci duraktir (cevap 4).

print K(k, '59N', 'L0168A')

Durak detaylari

print duraklar['L0139J']

Bir hattin gectigi duraklar

print routestops['59N']

Bir duraktan gecen hatlar

print sr['L0168A']

Ustteki cagrilarin hepsi test.py adli dosya icinde.

Bu veriler, veri yapilari kullanilarak iki nokta arasindaki en kisa seyahati bulan kodlar yazilabilir. Hangi hatlara binilecegi, inilecegi gibi.. isin bu kismi ilgilenen okuyuculara odev olsun. Ustteki makalede konu hakkinda guzel detaylar var. Matematiksel olarak kombinatoryel matematik, grafik teorisi (graph theory) gibi konular isin icine giriyor. Tek transfer, iki transfer, vs. hesaplari ayri ayri yapiliyor.

Not: Durak kodlari ayni sayi ama sonunda 'A' ve 'B' gibi eklerle yolun karsilikli taraflarinda, ayni hat uzerinde ama ters yonlere gidecek sekilde konumlandirilmis olabiliyor. Bunu niye soyluyoruz? Eger bir uygulama durak ismini aratarak (mesela "levent" gibi) durak kodu almayi, ve oradan seyahat planlama yapmayi dusunuyorsa birden fazla durak koduyla is yapmaya hazir olmali.

Kodlar

7 comments:

Fikret said...

Merhaba sitenizi bir süredir takip ediyorum. Hiç böyle bir bilgiyle karşılaşacağımı tahmin etmezdim.
Daha önceden tren ve ido sefer saatlerini cep telefonunda görünteleyen bir uygulama geliştirmiştim. (http://www.sefeer.com)
Projeyi iett seferleri ile genişletmek isteyip iett'nin karışık yapısından ötürü vazgeçmiştim. Bu bilgilerden sonra belki yine projeye başlayabilirim. Ama benim problemim bir güncelleme olduğunda bunu nereden edineceğimi bilememek. Hat bilgisi/durak bilgisi değiştiğinde bu değişklikleri nereden bulabilirim. Bunlar kamuya açık bilgiler midir?
Teşekkürler.

Burak Bayramli said...

Merhaba, yazida paylasilan zip dosyasini tekrar indirin, scrape adli dizin altinda veriyi IETT sitesinden alan ekleri goreceksiniz.

Fikret said...

Bu bilgiyi paylaştığınız için çok teşekkürler.
Gerçekten emek harcanarak oluşturulmuş kodlar bunlar.
Elinize sağlık.

erva mübeya firat said...

Merhaba sizin yaptığınız tarz da bir uygulamayı android için yapmak istiyorum, fakat iett den durakları ve saatleri çekerken biraz sıkıntı yaşadım..bu bilgileri android ile nasıl alabilirim acaba?? Yardımcı olursanız çok sevinirim..

Burak Bayramli said...

Merhaba, bilgileri ceken script'leri yazali uzun zaman oluyor, hala ayni sekilde cekebilir mi bilemiyorum, IETT site icerigi degismis olabilir. Script'ler Python ile yazildi, ve uygulama baslamadan once veriyi cekip Android / Web uygulamasinin kullanabilecegi sekilde onlari hazirliyor (duz dosya olarak) ve uygulama baslayinca bu verileri kullaniyor. Siz Android Java kodu icinden mi bu veriyi cekmek istiyorsunuz? Java ile de bu is yapilabilir evet. Anlik / surekli olarak veriyi almaya gerek yok herhalde, bir script ile tamamini alip bir kenara koyabilirsiniz, sonra Android Java kodu bu bilgileri okuyarak islemini yapar.

Nil Feray Erdoğan said...

Hocam bende zip dosyası gözükmüyor. Bende iett ile ilgili bir proje yapacağım iett veri bilgilerine ihtiyacım var yardımcı olursanız çok sevinirim.

Burak Bayramli said...

Yeni indirme adresini ekledim. Tekrar bakin problem cikarsa haber verin.