PROJEM İSTANBUL ARAŞTIRMA PROJESİ M İstanbul: Mobil İstanbul Bilgi Sistemi Servisleri Geliştirilmesi ve Optimizasyonu Proje Yüklenicisi: Y.Doç.Dr. Öznur Özkasap Koç Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü 2009-İstanbul. Bu araştırma projesi Projem İstanbul kapsamında İstanbul Büyükşehir Belediyesi tarafından hazırlatılmıştır. İstanbul Büyükşehir Belediyesi ve araştırmacının yazılı izni olmadan çoğaltılamaz ve kopyalanamaz.
İSTANBUL BÜYÜKŞEHİR BELEDİYESİ STRATEJİ GELİŞTİRME DAİRE BAŞKANLIĞI STRATEJİK PLANLAMA MÜDÜRLÜĞÜ NE Konu: Sonuç Raporu 25/05/2009 İstanbul Büyükşehir Belediyesi tarafından desteklenen, M-İstanbul: Mobil İstanbul Bilgi Sistemi Servisleri Geliştirilmesi ve Optimizasyonu konulu akademik araştırmam, araştırma öneri formu, çalışma programı ve Belediyeyle imzaladığım sözleşme çerçevesinde tamamlanmış olup, sonuç raporu ile birlikte ekte sunulmuştur. Bu proje çalışmasının sözleşme başlangıç tarihi: 19.01.2009, bitirme tarihi: 29.05.2009 olarak belirlenmiştir. Gereğinin yapılması hususunu saygılarımla arz ederim. Özkasap Y.Doç.Dr. Öznur Koç Üniversitesi Bilgisayar Mühendisliği Bölümü Sarıyer 34450, İstanbul
Ek:1) Sonuç Raporu ve Akademik Araştırma ( 49 sayfa) (Üç Adet) 2) Üç Adet CD
SONUÇ RAPORU ARAŞTIRMACININ Öznur Özkasap ADI VE SOYADI: ARAŞTIRMANIN Yüksek Lisans Tezi Doktora Tezi NİTELİĞİ: ÜNİVERSİTE: Koç Üniversitesi RAPOR NO : 1 Araştırma Projesi AKADEMİK ARAŞTIRMANIN KONUSU: M İstanbul: Mobil İstanbul Bilgi Sistemi Servisleri Geliştirilmesi ve Optimizasyonu İstanbul Büyükşehir Belediyesi (İBB) Mobil uygulaması ile sağlık, turizm, trafik, haber ve kültür-sanat gibi çeşitli bilgilere mobil cihazlar ve Internet üzerinden etkin ve verimli şekilde ulaşılması hedeflenmektedir. Bu araştırma projesinde, İBB Mobil Bilgi Sistemi servisleri geliştirilmesi ve optimizasyonu konuları ele alınmıştır. Proje kapsamındaki çalışmalarda, mobil İstanbul turizm bilgi sistemine yönelik prototip servisler, mobil İstanBUL şehir rehberi kapsamında çalışacak Mernis tabanlı adres erişim ve kayıt platformu, mobil İstanbul taksi çağırma uygulaması tasarlanmış ve geliştirilmiştir. Bu proje çalışması, İBB Coğrafi Bilgi Sistem (CBS) Müdürlüğü ile işbirliği içinde gerçekleştirilmiştir. Gerçekleştirilen mobil uygulamalar kapsamında CBS Müdürlüğü tarafından sağlanan veriler incelenmiş, veritabanı ve sunucu özelliklerinden yararlanılmıştır. Projede görev alan Koç Üniversitesi Bilgisayar Mühendisliği Bölümü öğrencileri, araştırma çalışmalarını bitirme tezleri kapsamında gerçekleştirmişlerdir. Akademik araştırma süreci sonucunda gerçekleştirilen mobil uygulamaları tanıtan bildiriler (1. Ulusal Mobil Devlet Konferansı na (mdevlet 2009, 28-29 Mayıs, Ankara, http://www.mdevlet.org/) kabul edilmiş ve sunumları yapılmıştır. Ekte sunulan araştırma sonuç raporunda, projemiz kapsamında gerçekleştirilen mobil uygulamaların araştırma, tasarım, uygulama ve optimizasyon ayrıntıları verilmektedir. Bu formda belirtilen bilgilerin doğruluğunu ve uygunluğunu bilgilerinize sunarım. 25/05/2009 Y.Doç.Dr.Öznur Özkasap
İçindekiler 1.GİRİŞ...7 2. MOBİL İSTANBUL TURİZM BİLGİ SİSTEMİ PROTOTİPİ...9 2.1 GENEL YAZILIM TANITIMI VE AMACI...9 2.2 GOOGLE API VE HARİTA UYGULAMALARI...9 2.3 KULLANILAN TEKNOLOJİLER, HARİTA OLUŞTURULMASI VE GÖRÜNTÜ İŞLEMLERİ...11 GÖRÜNTÜ (İMAJ) İŞLEMLERİ...13 2.4 OPTİMİZASYON VE SIKIŞTIRMA...15 2.5 NAVİGASYON VE HARİTA İŞLEMLERİ...18 2.6 BİLGİSAYAR - PDA İLETİŞİMİ VE GÜNCELLEME...19 2.7 İŞARETÇİLER VE VERİTABANI...21 2.8 ARAMA EKRANI...24 2.9 ÖRNEK UYGULAMA KULLANIM SENARYOSU...25 2.9.1 Yönetici Modu...25 2.9.2 Kullanıcı Modu...38 2.10 TARİHİ YARIMADA BİLGİ SİSTEMİ PROTOTİPİ...44 3. İBBMERNIS: MOBİL İSTANBUL ADRES ERİŞİM VE KAYIT PLATFORMU...47 3.1 GİRİŞ...47 3.2 MOBİL İSTANBUL ŞEHİR REHBERİ...47 3.3 İBBMERNİS UYGULAMASININ TANIMI VE KULLANILAN TEKNOLOJİLER...49 3.4 UYGULAMANIN ÇALIŞMASI...52 4. MOBİL İSTANBUL TAKSİ ÇAĞIRMA UYGULAMASI: SÜRÜCÜ BÖLÜMÜ...53 4.1 GİRİŞ...54 4.2 SÜRÜCÜ UYGULAMASININ TANIMI VE KULLANILAN TEKNOLOJİLER...55 4.3 UYGULAMA ALTYAPISI...56
4.3.1 Harita...56 4.3.2 Taksi Sürücüsü İle Sunucu Arasındaki İşlemler...60 4.3.3 Sürücünün Konumunun Belirlemesi ve Yer Araması...62 4.4 ÖRNEK UYGULAMA SENARYOSU...63 5. MOBİL İSTANBUL TAKSİ ÇAĞIRMA UYGULAMASI: MÜŞTERİ BÖLÜMÜ...68 5.1 UYGULAMANIN TANIMI VE KULLANILAN TEKNOLOJİLER...68 5.2 UYGULAMA ALTYAPISI...69 5.3 ÖRNEK UYGULAMA SENARYOSU...70
1 1.GIRIŞ Yakın zamanda kamuoyuna tanıtımı yapılan İBB Mobil uygulaması kentsel servislere ve güncel verilere mobil cihazlardan etkileşimli erişimi sağlamasıyla, belediye hizmetlerinde dünyada bir ilk niteliğini taşımaktadır. İBB Coğrafi Bilgi Sistem Müdürlüğü ile işbirliği içinde gerçekleştirilen bu araştırma projesinde Mobil Bilgi Sistemi servisleri geliştirilmesi ve optimizasyonu amaçlanmıştır. Proje amaçları doğrultusunda öncelikle, İstanbul turizmine yönelik bilgi sistemi için prototip mobil servis, protokol ve algoritmalar tasarlanmış ve geliştirilmiştir. İBB CBS Müdürlüğü ile yapılan görüşmeler sonucunda, gereksinim duyulan mobil uygulama alanları belirlenmiş ve bu konularda araştırma ve geliştirme çalışmaları gerçekleştirilmiştir. Buna göre, İBB Mobil Bilgi Sistemi kapsamında yer alacak mobil adres erişim ve kayıt servisi tasarlanmış ve geliştirilmiştir. Mobil İstanbul adres erişim ve kayıt platformu; Mernis (Merkezi Nüfus İdaresi Sistemi) ve harita tabanlı adres arama, yer bulma, detaylı bilgi sorgulama, yol tarifi alma gibi bilgilere ulaşılmasını sağlayan İstanbul Şehir Rehberi projesinin bir alt bölümü olarak tasarlanmıştır. Projenin bir başka araştırmasında, İBB Mobil Bilgi Sistemi kapsamında mobil taksi çağırma servisi geliştirilmiştir. Geliştirilen uygulamalar ile Java destekli mobil cihazı olan vatandaşların İstanbul içinde nerede olduklarını bilmeseler bile kolayca taksi çağırabilmelerini ve benzer bir yaklaşımla taksi sürücüleri için dijital harita destekli bir PDA uygulaması yardımıyla etkili bir şekilde müşteri bulabilmelerini amaçlamaktadır. Bu çalışmaların gerçekleştirilmesi sırasında, İBB CBS Müdürlüğü ile işbirliği içerisinde çalışılmış ve CBS Müdürlüğü tarafından sağlanan veriler incelenmiş, veritabanı ve sunucu özelliklerinden yararlanılmıştır. Projede görev alan Koç Üniversitesi Bilgisayar Mühendisliği Bölümü öğrencileri, araştırma çalışmalarını bitirme tezleri kapsamında gerçekleştirmişlerdir. Bu çalışmalar sırasında, Koç Üniversitesi, Dağıtık Sistemler ve Bilgisayar Ağları Laboratuarı olanaklarından yararlanılmıştır. Proje programı eğitimsel açıdan da yarar sağlamıştır. Araştırmacı öğrenciler çeşitli Dağıtık Bilgi İşleme, Bilgisayar Ağları, İnternet Hizmetleri, İşletim Sistemleri ve
Veritabanı Sistemleri konularında gerçek problemler üzerinde çalışma olanağı bulmuşlardır. Ayrıca, proje hedeflerinde belirtildiği gibi akademik araştırma süreci sonucunda gerçekleştirilen mobil uygulama ve servisleri tanıtan iki bildirimiz (1. Ulusal Mobil Devlet Konferansı na (mdevlet 2009, 28-29 Mayıs, Ankara, http://www.mdevlet.org/) kabul edilmiş ve konferansa katılarak sunumları yapılmıştır. Bu araştırma raporunun ilerleyen bölümlerinde, proje kapsamında gerçekleştirilen mobil uygulamaların araştırma, tasarım, uygulama ve optimizasyon ayrıntıları verilmektedir. Proje araştırma programında planlanan adımların gerçekleştirimine ilişkin tasarım ayrıntıları da herbir bölümde anlatılmaktadır.
2 3 2. MOBIL İSTANBUL TURIZM BILGI SISTEMI PROTOTIPI Araştırmacılar: Ahmet Cem Kestek & Mehmet Kaan Ergönül 3.1 2.1 GENEL YAZILIM TANITIMI VE AMACI Uygulamanın genel amacı, yöneticiler tarafından eklenen, bir bölgeye ait harita ve o harita üzerindeki yerlerin, kullanıcıların cep bilgisayarları ile kolayca görüntülenebilmesini sağlamaktır. Mevcut uygulama 2 bölümden oluşmaktadır. 1.bölüm yönetici, 2.bölüm ise kullanıcı modudur. Yönetici modunda; Belirlenen bölgelerin haritaları yaratabilir. Yaratılan haritalara yeni yerler eklenebilir. Mevcut yerler düzenlenebilir. Yeni dosyaları kullanıcı modu kurulu olan ve senkronize olmuş cep bilgisayarlarına yollanabilmektedir. Kullanıcı modunda ise; Yöneticiler tarafından eklenmiş haritalar görüntülenebilir. Veritabanında bulunan mevcut bölgeye dair yerler listelenebilir. Yerlerin simgeleri harita üzerinde görüntülenebilir. Simgeleri olan yerlerin detaylarına ulaşılabilir. Veritabanında istenilen yere ait bir anahtar kelime ile arama yapılabilir. Arama sonucu bulunan yerin harita üzerindeki yeri ve detayları görüntülenebilir. 3.2 2.2 GOOGLE API VE HARITA UYGULAMALARI Bu uygulamada Google Map in statik harita bilgilerinden yararlanılmıştır. Google Static Maps API 1 kullanılmıştır. Google Static Maps API, harita koordinatları ve bilgilerini içeren URL nin cevap (response) olarak olan haritaların imajlarını göndermeye yarayan HTTP sorgu servisidir.
Kullanıcı göndereceği URL de şu parametreleri kullanır: center : Istenilen haritanın merkez koordinatları (enlem ve boylam) cinsinden zoom: Istenilen haritanın yakınlaştırma birimi. (0 en uzak, 19 en yakın) size: Istenilen harita imajının pixel cinsinden boyutu (maksimum 640x640) format: Istenilen harita imajının biçimi. (gif, jpeg veya png) maptype: Istenilen haritanın cinsi (roadmap grafiksel yol-, satellite - uydu-, terrain arazi-, hybrid karışık-, ve mobile mobil araçlar için-) Bunlar dışında da bazı parametrelere izin verilmekle birlikte uygulamamızda kullanılmamaktadır. Tipik bir sorgu URL si şu şekildedir: http://maps.google.com/staticmap?center=41.03687,28.98665&maptype=mobil e&zoom=16&format=jpeg&size=320x320 Bu URL nin sonucunda merkez enlemi 41.03687 ve merkez boylamı 28.98665, harita cinsi mobil, yakınlaştırma seviyesi 16 olan 320x320 piksel boyutlarında aşağıda gösterilen jpeg imajını dönmektedir. Uygulamamızda harita yaratımı sırasında kullanılacak görüntülerde 640x640 boyutu ve jpeg biçimi sabitlenmiş olup diğer parametreler kullanıcı tarafından belirlenmekte veya otomatik olarak ayarlanmaktadır.
Bu sorgu sistemine ek olarak, kullanıcının enlem-boylam bilgilerini bilmeksizin, yaratılmasını istediği haritanın sınırlarının adresini vererek, harita koordinatlarının bulunabilmesi için Google Geocoding 2 kullanılmıştır. Google Geocoding, Istiklal Caddesi, Taksim, İstanbul, Türkiye şeklindeki bir adresin enlem ve boylamının bulunmasını sağlayan bir servistir. http://maps.google.com/maps/geo?q=istiklal+caddesi,+taksim,+ Istanbul,+Türkiye&output=csv şeklinde bir sorgu CSV (virgülle ayrılmış değer) formatında 200, 6, 41.0367660, 28.9837840 değerlerini dönmektedir. Burada kullanacağımız değerler 41.0367660 ve 28.9837840 olan enlem ve boylam değerleridir. Böylece kullanıcı enlem ve boylam bilgilerine sahip olmadan istediği haritayı yaratabilir. 3.3 2.3 KULLANILAN TEKNOLOJİLER, HARİTA OLUŞTURULMASI VE GÖRÜNTÜ İŞLEMLERİ Kullanılan Teknolojiler Uygulama geliştirme ve testler sırasında aşağıdaki donanım ve yazılımlar kullanılmıştır. Kullanıcı Modu Donanım: HP ipaq 114 Classic Yazılım: 1. Microsoft Visual Studio 2008 2. Windows Mobile 6.0 3. C# Programlama dili 4. Microsoft.NET Compact Framework 3.5 5. ActiveSync 6. Windows Mobile 6 Standard SDK Yönetici Modu Yazılım: 1. Microsoft Visual Studio 2008 2. C# Programlama dili 3. Microsoft.NET Framework 3.5 4. ActiveSync 5. OpenNetCF.Desktop.Communication Kitaplığı (library)
Harita Yaratımı Uygulama Ekranı Uygulama, Taksim bölge haritası yüklü olarak gelmektedir ve mevcut haritaların üzerine istenildiği kadar yeni harita eklenmesine izin verir. Her eklenen harita eskisiyle kesişen alanlar içerse dahi karışıklık ve hatalara sebep olmamak için yeni harita olarak yaratılır. Kullanıcı, yönetici modundayken İnternete bağlı olmak şartıyla istediği haritayı indirebilir. Bunun için yaratmak istediği haritanın kuzey, güney, doğu ve batı sınırlarının adreslerini vermesi yeterlidir. Harita yaratımında, belirtildiği gibi Google Static Map API servisinden yaralanılmıştır. Yönetici modu açıldıktan sonra Create Maps sekmesine gelinir. Burada Main Region bölümü adreslerin sonuna eklenecek son-ek, yani haritanın şehir ve ülkesini içerir. Taksim için Istanbul, Turkey değerlerini girmek gereklidir. Daha sonra haritanın sınırlarını belirten adresler girilir. Örneğin Taksim haritasının kuzey sınırı için North Bound Latitude satırındaki Find from adres kutusuna ortaklar cd., sisli girilip Find butonuna basıldığında 41.063244 enlemi bulunur. Aynı şekilde diğer sınırların da adresleri girildiğinde haritanın sınır koordinatları bulunmuş olur. Show Map butonuna basılarak yaratılacak haritanın neresi olacağı görülebilir. Daha sonra Map Name bölümüne yaratılacak haritanın ismi girilir ve Map Types tan yaratılması istenen türler seçilerek (mobile sabit) Create Map butonuna basılarak harita yaratılır. Harita yaratılırken anlık ilerlemeyi gösteren bir progress bar kullanıcıya yardımcı olur ve yaratılma tamamlanınca bunu belirten bir uyarı mesajı çıkar. Create_Map Class: Uygulama ekranındaki bilgileri kullanarak haritaları yaratmaktan sorumludur. Create metodu, enlem-boylam, sınır koordinatları, harita biçimleri gibi bilgileri kullanarak 14-17 zoom seviyesi arasındaki haritaları yaratmakla sorumludur. Harita imajlarının yaratım işlemini yardımcı metod olan calculate e yaptırır. Harita yaratımı tamamlandığında harita bilgilerini (harita ismi, başlangıç zoom seviyesi, enlem, boylam, sınır koordinatlar, harita cinsleri) içeren update.dat ismiyle bir dosya oluşturulur. Bu dosya haritanın PDA tarafında seçilerek haritaların yüklenmesini sağlar.
Calculate metodunda bildirilen zoom seviyesi için imajlar yaratılır. Her zoom seviyesi için yaratılacak büyük haritayı bir bütün olarak düşünürsek, bu harita 640x640 lık parçalara bölünür ve sol-alt köşedeki parçadan başlanarak imaj boyutu kadar sağa kaymak suretiyle sağdaki parçalar bulunur. Sonra sağdaki parçalar da bitince üst sıradaki parçaların en soluna geçilir ve işlem en üst satırdaki parçalar bitinceye kadar tekrarlanır. Örneğin orijinal olarak 1500x1500 boyutunda olması gereken bir harita 3x3 lük 9 parçaya bölünür. En sağdaki ve üstteki parçalar 420 piksellik (640 (1500 1280)) harita dışı bölge içermesine rağmen bunlar yine de 640x640 olarak yaratılır. Bu parçaların yaratım sırası aşağıdaki gibidir: Her imajın koordinatı Image_Processes statik class ı yardımıyla hesaplanır ve bu imajlar o imajın zoom seviyesi, merkez koordinat, sınır koordinatlarını içeren standart bir isimle harita cinsi olarak adlandırılan klasörün altına dosya olarak kaydedilir. Örneğin, uygulama klasöründeki map\taksim\images\mobile klasöründe; zoom15lat41,035360lon28,978733east28,992466west28,965000north41,045718south41,025000.jpg isimli dosya 15 zoom seviyesinde, merkez koordinatları (41,035360l ; 28,978733) olan, doğu-batı-kuzey-güney sınır koordinatları sırasıyla (28,992466 ; 28,965000 ; 41,045718 ; 41,025000) olan mobile cinsindeki bir harita imajını içerir. 3.4 GÖRÜNTÜ (IMAJ) İŞLEMLERI Görüntü Hesaplama Uygulamanın temel noktalarından biri de o an görüntülenmesi istenen haritanın mevcut ekrana sığdırılmış parçasının hesaplanıp gösterilmesidir. Önceki bölümlerde haritanın 640x640 piksellik parçalara bölündüğünü açıklamıştık. Burada dikkat edilmesi gereken nokta haritadaki mevcut koordinatlara denk gelen PDA ekran boyutlarındaki küçük bir imajı, bu büyük imaj parçalarını
kullanarak yaratmaktır. Bunun için mevcut ekranın çözünürlüğü, o anki navigasyonun merkez koordinatı, zoom seviyesi, harita ismi ve harita formatının bilinmesi gereklidir. Buna göre map\harita ismi\harita cinsi içindeki imajlarının isimleri kontrol edilerek o anki navigasyonun merkez koordinatını içeren imaj(lar)ın parça(lar)ı kırpılarak ve birleştirilerek ekrana uygun imaj yaratılır. Image_Processes Class: Bu class taki ana metod GetImage dir. Bu metod verilen bilgilere dayanarak harita imajlarından, PDA ekranı boyutundaki bir harita parçasını yaratır. Bu noktada 3 olasılık ortaya çıkar: Aşağıdaki şekillerde sırayla belirtildiği gibi; yaratılması istenen küçük imaj, harita imajlarının birisinin içerisinde olabilir, iki harita imajında da parçaları vardır (2 harita imajının kesişim çizgisi istenilen küçük imajı dikey veya dikey olarak bölmüştür), veya 4 harita imajında da parçaları vardır (4 harita imajının kesişim çizgileri istenilen küçük imajı dikey ve yatay olarak bölmüştür). Bu gibi durumların belirlenmesi için istenilen imajın köşelerinin hangi harita imajının içerisinde olduğu tespit edilir ve bu imajların içerisindeki ilgili küçük
parçalar birleştirilerek istenilen imaj elde edilir. Örneğin yukarıdaki şekilde istenilen imajın elde edilmesi için büyük imajların köşelerine denk gelen 4 tane parça kırpılıp-birleştirilmiştir. GetImage metodunda bu işlemleri yapmak için; istenilen imajın köşelerini içeren imaj(lar) bulunur, ve bulunan her bir harita imajı için Map_Processes statik class ı yardımıyla her harita imajında hangi pikseller arasındaki küçük parçanın istenilen imajın parçasına denk geldiği hesaplanır ve istenilen imaja bu parça yerleştirilir. Büyük haritanın sınırlarına doğru gidildikçe istenilen imajın bir bölümü harita sınırlarının dışına taşabilir, bu durumda (şekilde gösterildiği gibi) calculateboundvertex metoduyla istenilen imaj o sınıra doğru hizalanır. 3.5 2.4 OPTIMIZASYON VE SIKIŞTIRMA İmajların Karşılaştırılması Google Static Map API servisi imaj yaratımı için 5 farklı imaj tipine izin vermektedir. Bunlar: GIF biçimi JPEG sıkıştırma biçimi Non-progressive JPEG sıkıştırma biçimi (jpg-baseline) 8-bit PNG biçimi (png8) 32-bit PNG biçimi. (png32) GIF ve PNG kayıpsız imaj formatları olmasına rağmen, PDA lerdeki bellek ve depolama sorunu sebebiyle uygulamamızda haritaları JPEG formatında saklamayı tercih ettik. Bu format zaten sıkıştırılmış olduğu için herhangi bir ek sıkıştırma işlemine gerek yoktur ve aynı zamanda mümkün de değildir. Tabloda görüldüğü gibi sıkıştırma sonucu oluşan nispi görüntü kaybına rağmen
JPEG formatı en düşük boyutu sağlamaktadır. Ayrıca en düşük boyutlu harita tipi de mobil cihazlar için kullanılan mobile dır. (Terrain (arazi) haritası az bilgi içerdiği ve her zoom seviyesinde kullanılabilir olmadığı için bazen boyutu düşük olmasına rağmen yeterli verimliliği sağlamamaktadır. Bu nedenle, harita yaratımında mobile cinsi harita tipi ön-şartı sağlanmıştır.) http://maps.google.com/staticmap?center=41.03687,28.98665&zoom=15&size=32 0x320 İmaj formatı / mobile roadmap satellite hybrid terrain Harita cinsi JPG 31.93 KB 34.77 KB 40.36 KB 43.23 KB 27.37 KB JPG-baseline 33.81 KB 36.7 KB 44.29 KB 47.35 KB 28.94 KB GIF 39.35 KB 45.36 KB 95.56 KB 88.71 KB 62.3 KB PNG 8bit 35.55 KB 39.1 KB 81.14 KB 75.96 KB 55.64 KB PNG 32bit 114.16 KB 130.49 KB 304.24 KB 298.92 KB 208.97 KB JPEG Görüntü Biçimi 3 Dosya biçimi JPEG standardında görüntü saklayan dosya biçimi de JPEG olarak adlandırılır. Bu dosyalar genellikle.jpg,.jpe ya da.jfif uzantılıdır, ancak çoğunlukla.jpg uzantısı kullanılır. Ancak, JPEG standardı sadece görüntünün nasıl kodlanacağını tanımlar, görüntünün herhangi bir saklama ortamında depolanma biçimini belirtmez. JPEG olarak bildiğimiz dosya biçimi, Independent JPEG Group adlı başka bir grubun JFIF (JPEG File Interchange Format - JPEG Dosya Alışveriş Biçimi) adlı standardı tarafından tanımlanmıştır. Bu dosya biçimi, WWW üzerinden görüntü iletmek ve fotografik görüntü saklamak için en popüler dosya biçimi olmuştur. JPEG / JFIF formatı, web için gerçekten de başarılı bir depolama ve veri transfer yapısına sahiptir. Çünkü bu işi yapan GIF formatı sadece 256 rengi desteklediğinden fotografik görüntülerde yetersiz kalmaktadır. PNG'nin görüntü kalitesi daha iyi olsa da
web için yeterli boyut optimizasyonunu yapamadığı için büyük boyutlu resimler ortaya çıkmaktadır. Bu da fotografik resimlerin web için kullanılacağı durumlarda da JPEG i kullanışlı ve tercih edilir bir format haline getirmektir. Genel dilde JPEG kısaltması, JPEG standardından çok JFIF dosya biçimine karşılık gelir. Ancak TIFF gibi başka dosya biçimleri de JPEG standardında görüntü saklayabilmektedir. Görüntü kodlama yöntemi JPEG, ayarlanabilir kayıplı sıkıştırma kullanır, dolayısıyla JPEG verisinden okunan görüntü ile veriyi yaratmak için kullanılan görüntü aynı değildir. Ancak, kayıplar insan görme sisteminin daha az önem verdiği detaylarda gerçekleştiği için çoğu zaman fark edilmez. Renk uzayı dönüşümü ve alt örnekleme JPEG kodlamada ilk adım, görüntünün RGB uzayından farklı bir uzay olan YCbCr uzayına dönüştürülmesidir. Böylelikle görüntü pikselleri birer parlaklık ve ikişer renk bileşeni ile gösterebilirler. YCbCr, renkli TV yayınlarında da kullanılan YUV uzayına benzer bir uzaydır. İnsan retinası, yapısı nedeniyle bir görüntüdeki renk verisini parlaklık verisine göre daha düşük çözünürlükte görür. Dolayısıyla renk verisinin parlaklığa göre daha düşük bir çözünürlükte örneklenmesi, çoğunlukla hissedilir bir değişikliğe neden olmaz. JPEG, yatayda ve/veya düşeyde renk verisinin parlaklığın yarısı çözünürlükte örneklenmesine imkân verir. Sıkıştırma kaynaklı görüntü bozulmaları Sıkıştırma oranı arttıkça görsel detayda azalma görülür. Oranın artmasıyla keskin hatların etrafında dalgalanmalar ve detay kaybı, yüksek sıkıştırma oranlarında da bloklaşma belirgin hale gelir. JPEG görüntülerin çeşitli dönüşümler geçirmesi (ör. ölçeklenme) sıkıştırma yan etkilerini daha belirgin hale getirebilir. JPEG kodlanmış görüntüde yüksek frekans bileşenleri görüntü detay bilgisinin önemli bir kısmını içerir. Sıkıştırma oranı yükseldikçe yüksek frekans bileşenlerinin daha fazlası kaybedilir. En yüksek sıkıştırma oranlarında ise
sadece en düşük frekans bileşeni sıfırdan farklıdır, bu nedenle görüntü bloklar halinde görünür. JPEG'in kullanım alanları JPEG, özellikle doğa görüntüleri gibi yüksek frekanslı bileşenleri görece önemsiz görüntüleri çok az görsel kayıpla, kayıpsız sıkıştırma yöntemlerinden çok daha yüksek verimle sıkıştırabilir. Ancak, çizimler ya da keskin hatlı cisimler içeren görüntülerde sıkıştırma miktarı arttıkça keskin hatların etrafında dalgalanma görülür. 3.6 2.5 NAVIGASYON VE HARITA İŞLEMLERI Navigasyon esnasında gösterilen ekran görüntüsü tüm ekran çözünürlüklerinde çalışmak üzere ayarlanmıştır. Ayrıca G-Sensor destekleyen cihazlarda cihazın yönünü değiştirince ekran dönmesi esnasında program yeni ekran çözünürlüğüne uyum sağlamaktadır. Navigasyon Yönetici veya kullanıcı modundayken harita üzerinde aşağı-yukarı-sağa-sola gidilebilir ve haritaya yakınlaşıp-uzaklaşılabilir. Navigasyon sırasında temelde mevcut görüntünün merkez enlem ve boylamlarından yararlanılır. Mevcut ekranda gösterilen görüntünün merkez koordinatı ve piksel cinsinden ekran boyutları bilindiği için navigasyon sonucu elde edilecek yeni harita hesaplanabilir. Mevcut konumdan başka, yatay bir yöne gitmek isteniyorsa (sağa veya sola) merkezin sağ veya sola olan piksel uzaklığı hesaplanır (ekran genişliği / 2). Bu uzaklığın zoom seviyesine göre piksel boylam farkı dönüşümü yapılır ve 2 * hesaplanan boylam farkı ile yeni görüntünün merkez koordinatının boylamı bulunmuş olur. Yatayda hareket edildiği için enlem aynı kalır. Eğer dikey bir yöne gitmek isteniyorsa (yukarı veya aşağı) merkezin yukarı veya aşağı olan piksel uzaklığı hesaplanır (ekran yüksekliği / 2). Bu uzaklığın zoom seviyesine göre piksel enlem farkı dönüşümü yapılır ve 2 * hesaplanan enlem farkı ile yeni görüntünün merkez koordinatının enlemi bulunmuş olur. Dikeyde hareket edildiği için boylam aynı kalır. Mevcut
görüntünün merkez koordinatı bulunan yeni koordinata eşitlenir ve buna uygun imaj Image_Processes yardımıyla gösterilir. Zoom işlemlerinde merkez koordinatı değişmediği için sadece mevcut haritanın zoom seviyesi değiştirilir ve yeni imaj gösterilir. Map_Processes Class: Bu class, navigasyon sırasında değiştirilen koordinat ve zoom değerlerine bağlı olarak yeni koordinatı hesaplamak için kullanılır. Bu hesaplamanın temelinde, ekrandaki imajlarda piksel cinsinden, harita navigasyonunda enlem ve boylam cinsinden hesaplama yapılması ve bunların dönüşümü vardır. Dünyanın şekli sebebiyle sabit bir dönüşüm dünyanın her yerinde doğru sonuç vermeyeceği ve değişik zoom seviyeleri için piksel hesaplamaları değişeceği için standart bir katsayı ile hesaplama yerine dünyanın çevresi, zoom seviyesi ve offset değerleri ile doğru sonuçlar hesaplanmaktadır. Örneğin 200 piksel sağdaki noktaya gitmek zoom seviyesi düşükken başka bir ülkeye gitmek anlamına gelirken, zoom seviyesi düşükken başka bir sokağa gitmek anlamına gelir. Ayrıca, aynı zoom seviyesindeyken bile ekvatorda veya kutuplara yakın bir noktada 200 piksel sağa gitmek yine farklı sonuçlar verecektir. Bu class ın asıl metodu olan getbound a verilen gidilecek yön, şu anki merkez koordinatları ve zoom seviyesi sonucu yeni koordinat hesaplanabilmektedir. Çeşitli class ların da kullandığı diğer yardımcı metodlar yardımıyla koordinat piksel veya piksel koordinat dönüşümü ve verilen merkez koordinatın sınır koordinatları bulunabilmektedir. Ayrıca findcoorfromaddr metodu ile admin moda Google Geocoding (1.1) yardımıyla adres koordinat dönüşümü yapılabilmektedir. 3.7 3.8 2.6 BILGISAYAR - PDA İLETIŞIMI VE GÜNCELLEME Active Sync Uygulamamız Bilgisayar PDA iletişimini sağlamak için ActiveSync kullanmaktadır. ActiveSync, Windows tabanlı işletim sistemleri arasındaki veri
senkronizasyonunu sağlamak amacıyla Microsoft tarafından geliştirilen bir programdır. Her türlü bilgisayar ve ActiveSync protokolünü destekleyen mobil aygıt, mobil telefon gibi portatif cihazlar arasında veri transferi yapılabilir. Bu uygulama bilgisayarlara ücretsiz olarak indirilebilir. Desteklenen cihazlar arasında Windows Mobile veya Windows CE işletim sistemine sahip olan PDA ve Smartphonelar ile WM kullanmayan, Palm OS veya Symbian platformlarında çalışan cihazlar ve iphone vardır. Önemli bir fonksiyonel farklılık içermesine rağmen Windows Vista ile ActiveSync Windows Mobile Device Center (WMDC) ismini almıştır. 4 ActiveSync ile bağlantı sağlamak için herhangi bir ek ayara gerek duyulmamakta, bilgisayar ve portatif cihazda ActiveSync programları kurulu olduktan sonra tercih edilen bir bağlantı (bluetooth, wireless, USB) ile senkronizasyon Windows tarafından otomatik olarak sağlanır. İletişim ActiveSync ile iletişim için bağlantı isteği PDA tarafından bilgisayara gönderilir ve iletişim gerçekleşir. Bluetooth ile iletişim örneğinde COM4 portu üzerinden bağlantı kurulmuştur. Bunun haricinde wireless ve USB kablosu üzerinden de iletişim gerçekleştirilebilir. ActiveSync iletişimi için kullanıcı tarafında herhangi bir ek işleme gerek yoktur. Zaten kullanıcı programı açık olmasına gerek olmadan Windows sistemi tarafından bağlantı ve dosya transferi sağlanmaktadır. Bağlantı işlemleri yönetici modunda tanımlanmıştır. Bağlantı için OpenNetCF.Desktop.Communication 5 kütüphanesi kullanılmıştır. Bunun için OpenNetCF.Desktop.Communication.dll dosyası referans olarak projeye eklenmiştir. Kullanıcı Publish butonuna bastıktan sonra önce bu kütüphanede tanımlanan RAPI nesnesi yaratılır. Daha sonra basit bir şekilde bu nesnenin Connect metodu ile PDA e bağlantı sağlanır ve CopyFileToDevice metoduyla dosyalar PDA e kopyalanır. Güncelleme Bağlantı kurulduktan sonra, hazırlanan haritaları PDA e göndermek için yönetici modundayken Publish Maps sekmesine gelinir. Burada Select
update file bölümüne update.dat dosyasının yolu yazılır veya Find File butonuna tıklanarak update.dat dosyası seçilir. İşaretçi veritabanında değişiklik yapıldıysa ve update işlemine dahil edilmek isteniyorsa Include markers database file kutusu işaretlenir ve Publish butonuna basılır. Bu aşamada eğer ActiveSync ile PDA e bağlantı sağlanamadıysa bunu belirten bir mesaj çıkacak, bağlantı başarılıysa gönderim işlemi otomatik olarak başlayacaktır. PDA tarafında gönderim sırasında herhangi bir işlem yapmaya gerek yoktur. Update dosyaları PDA de My documents klasörü içine harita ismine sahip olan klasöre kaydedilecektir. Kullanıcı modunda update işleminin gerçekleştirilmesi için Options Update butonlarına basılır ve update.dat dosyası seçilir. update.dat dosyasıyla aynı klasörde bulunan imajlar ve (varsa) veritabanı dosyası program klasöründeki maps klasörüne ve (veritabanı opsiyonu seçildiyse) files klasörüne kopyalanır. Update işlemi gerçekleşmiş olur ve Maps sekmesine yeni harita eklenmiş olur. 3.9 3.10 2.7 İŞARETÇILER VE VERITABANI İşaretçiler İşaretçiler (markers), kullanıcıya 4 ana başlık altında toplanmış olan mekân tiplerini mevcut harita üzerinde kendilerine özel olan işaretler ile göstermekte kullanılır. Kullanıcı modunda Options menüsünden Markers sekmesini seçerek bu fonksiyon aktif hale getirilir. Aktif hale gelen Select_Places formunda işlemler tamamlandıktan sonra harita yenilenir ve seçilen yerlerin simgeleri haritada gözükür. Kullanıcı yeni haritadaki simgelerden birinin üstüne tıklamak suretiyle o yerin veritabanında kayıtlı olan detaylarını listeleyebilir. Ana ekranda seçilen yerin detayları bulma ve gösterme işlemi picturebox1_click fonksiyonu ile sağlanmaktadır. Bu fonksiyon tıklama gerçekleştikten sonra devreye girer ve ilk olarak imlecin (cursor) tam olarak nerede olduğunu bulur. Daha sonra kendi içindeki checkplace() fonksiyonunu çağırır. Eğer fonksiyon bir yer eşlemesi yapamaz ise o zaman harita üzerinde
tıklanan yerin doğu, batı, kuzey veya güneye gitmek için mi seçildiğine bakılır. Eğer başka bir yöne gitmek için tıklanmışsa, imlecin koordinatına göre yeni harita eşlenir ve kullanıcıya gösterilir. checkplace() Fonksiyonu: Bu fonksiyon ana ekrana bir tıklama gerçekletiğinde picturebox1_click içerisinde çağırılır ve amacı tıklanan yere isabet eden bir yer olup olmadığını bulmaktır. Yeri bulabilmek için ilk önce mevcut gösterimde olan haritanın merkez enlem ve boylamı bulunur. Bulanan değerlerine yardımı ile imlecin piksel değerleri gerçek koordinatlara çevrilerek hafızadaki yerlerden eşleme yapılır. Koordinatı eşleşen yerine detayları (telefon, adres vb.) MessageBox.Show() komutu ile kullanıcıya gösterilir. Select_Places Class: Select_Places Class ı kullanıcı modundaki Markers sekmesinin işaretlemesi ile aktif hale gelir. Burada kullanıcıya 4 adet ana başlık ve her bir başlığın yanında onay kutusu (checkbox) gösterilir. Kullanıcı, simgesini görmek istediği başlığı veya başlıkların yanındaki onay kutularını işaretledikten sonra Submit butonuna basar ve işlemi sonlandırır. İşlem sonucunda işaretlenmiş olan yer tipleri mevcut listeden bulunarak kendilerine ait olan simgeler ana ekrandaki haritaya eklenir. Veritabanı Uygulamada veritabanı olarak XML (genişletilebilir işaretleme dili) kullanılmıştır. XML kullanımının başlıca sebebi etkin bir şekilde programa uyarlanabilmesi ve okuma esnasındaki başarımıdır. Ayrıca XML de, standart metin dosyasından farklı olarak her bir girdi için özel yazım kontrolü yapılması gerekmemektedir. Bir ek özellik olarak da, her bir nitelik (attribute) için isim atayabilmemiz dosyayı daha rahat okunabilir kılmaktadır (readibility). Örnek olarak bir metin dosyasında bir satırın 4.elemanını okurken neyi okuduğumuzu bilmemiz gerekmektedir, fakat XML de her bir elemanın ismi atandığından dolayı sadece ismini yazdığımız değer bize geri dönecektir, bu da güvenilirliği arttırmaktadır. Uygulama için gerekli olan bilgiler files klasörünün altındaki database.xml isimli dosyada tutulmaktadır.kullanıcı modunda mevcut dosya arama ve işaretçiler fonksiyonlarında sadece okuma amaçlı kullanılır. Yönetici modunda ise bu dosyayı hem içindeki bilgileri okumak hem de yazmak için kullanır.