Teknoloji, CBS ve Hayata Dair Herşey
CBS
Türkiye’de CBS’nin durumu
4 Oca
Artık eskisi gibi yazamıyorum. Vakit bulamıyorum dersem yalan olur. Yazmak istediğim çok fazla konu var fakat bu yazılarda klavyemden dökülecekler biraz tepki çekebilir diye çekiniyorum. Ama gene de alanım olan Coğrafi Bilgi Sistemleri (CBS) konusunda birazcık da olsa birşeyler yazmak istiyorum.
2002 yılında aldığım ilk ders ile CBS’ye girişimi yaptım. Senelerdir bilişim ile uğraşmanın verdiği heyecanla CBS yeni bir alan olarak karşıma çıktı. Haritalar ve uydu fotoğrafları ile mekanlara ve belki de olaylara yukarıdan bakıp, resmin geneline bakmayı öğrendim. Sene 2011 ve hala bu sektörde heyecanımı koruyarak çalışmaya çalışıyorum. Çalışmaya çalışıyorum çünkü Türkiye’de her sektörde olduğu gibi bu sektörü de kendilerini BALON gibi şişirip farklı tanıtan yüzlerce (belki de binlerce) kişi doldurmaya başladı. Kim bunlar derseniz; CBS’ye “ci bi es” diyenlerden tutun da 1-2 defa ArcGIS ya da MapInfo gibi yazılımları açanlara kadar liste uzar gider.
Twitter’da gördüğüm bir yazı çok hoşuma gitmişti :
“Dünyanın temel sorunu, budalalar ve fanatikler kendilerinden hep çok eminken, bilge insanların şüpheyle dolu oluşu” -Bertrand Russell.
Türkiye’de her sektörde olduğu gibi CBS sektöründe de bir “UZMAN” furyası devam ediyor. Herkes CBS Uzmanı, herkes bilirkişi! Lafa gelince mangalda kül bırakmayan kişilerin yaptıkları işlere bakınca nedense dumanları bile tütmüyor. Ama reklamlarını öyle yapıyorlar ki Google Maps ile rakip bile oluyorlar. İşte anlayamadığım nokta bu. Şu an Google Maps ya da Facebook benzeri web uygulamaları yazmak zor değil, hatta çok kolay diyebiliriz ama bir Google ya da Facebook olmak da sadece yazılım ile olmuyor. Arka plana 2-3 sunucu koyarak Google Maps’e rakip olmak bana çok ama çok komik geliyor. Ayrıca bir de Açık Kaynak Kütüphanelerin (örneğin OpenLayers) “Find-Replace” ile “namespace”lerini değiştirip API yazdık demek de ne kadar “Etik” oluyorsa! Sektörde yazılımcı olarak ben de Açık Kaynak kodlardan/kütüphanelerden kullanıyorum ama hiçbir zaman da çıkıp hepsini yazdım demiyorum. 2009 yılında ESRI DevSummit Mashup Challenge’da birincilik aldığım ödülde bile kullandığım kütüphaneleri döküman dosyamda belirttim ve yazanlara teşekkür ettim.
Neyse uzun zamandır yazmayıp yeni yılın ilk yazısını böyle şeylerle doldurduğum için kusura bakmayın, ama biraz kendimi de rahatlatmam gerekiyordu
Herkese yeni yılın mutluluk, sağlık ve huzur getirmesi dileklerimle yazımı sonlandırırken; yeni yılda günlüğüme daha da önem vermeyi planlıyorum. Hatta iOS için Native uygulama geliştirmek yerine PhoneGap’e geçişim ve bununla ilgili yazılarımı da yazmayı planlıyorum.
Google Earth Engine nedir? Yenir mi?
3 Ara
Malum insanoğlu çevreye bugüne kadar yeterince zarar verdi ve artık iklim değişikliği ve kirlilik gibi konular ortaya çıkınca da verdikleri zararı nasıl geri çevirebiliriz diye düşünmeye başladılar. Artık her gün yeni bir bu gidişata dur deme eylemi ya da aksiyonunu görür ya da duyar olduk.
Google da bu kervana katıldı ve olaya yeni boyut kattı. Google Earth Engine adı verilen projeyi devreye aldı. Projenin isminden dolayı Google Earth’e benzese de yapı olarak biraz farklı. Gene olay haritalar üstüne kurulu fakat bu sefer Google’un yol, uydu görüntüsü ya da yükseklik katmanlarına ek olarak bilim adamlarınca çok kullanılan evrensel katmanları da Google Maps üzerinde görebiliyorsunuz.
Öncelikle Landsat’ın 25 yıllık arşivini ve MODIS görüntülerini kullanabileceksiniz. Tabi olay sadece bu görüntüleri görmek değil bu görüntüler üzerinde analiz de yapmak. Sağladıkları sistem sayesinde (şu an kapalı beta olarak çalışıyor) bilimsel hesaplamalarınızı Google altyapısı ile daha hızlı bir şekilde yapabileceksiniz. Ayrıca Google’ın sağladığı araçlar ile görüntüler üstündeki bulut ve kirlilikleri de silebileceksiniz.
Örneğin Meksika Ulusal Orman Komisyonu ile yaptıkları projede normalde 15.000 (evet yanlış okumadınız on beş bin) saat süren bir görüntü işleme olayını Google’ın altyapısını kullanarak 1 günden kısa bir sürede tamamlamışlar. Böyle bir yapıyı kullanmak gerçekten bilime ve insanlığa hız kazandıracaktır.
Google önümüzdeki 2 yıl için 10 Milyon CPU saatini bu iş için bağışlamış bulunuyor. Daha önce Amazon da S3 hizmetinde uluslararası fayda sağlayan dosyaları ücretsiz barındıracağını duyurmuştu. Böyle adımlar ile insanoğlu umarız yaptıkları yanlışları düzeltmenin bir yolunu bulur
ve karşınızda : Google Earth 6
30 Kas
CBS ile ilgisi olsun olmasın herkesin favori programları arasında yer alan Google Earth’ün 6. versionu çıktı. Yeni versiyonda 3 yeni özellik göze çarpıyor :
- Google Streetview ile entegrasyon sağlanmış, artık Google Earth içerisinden Streetview’e erişim var.
- 3 Boyutlu Ağaçlar ile gerçek görünüm arttırılmış. 50 değişik ağaç türünün sisteme eklendiği söylenmekte.
- Tarihsel Görüntüleme de geliştirilmiş, böylelikle eski görüntülere daha rahat erişim sağlayabiliyorsunuz.
Tabi bu özelliklerin çoğu veri ile ilgili olduğu için ülkemizde bunları görmemiz şu an için pek mümkün görünmüyor ama gene de hoşgeldin Google Earth 6 diyorum
Bing Maps ve Microsoft’a neler oluyor
24 Kas
Uzun zamandır Açık Kaynak türevlerine savaş açan Microsoft artık bu rüzgara karşı yelken açmak yerine bu rüzgarla beraber yol almayı seçecek gibi. Yazdıklarımdan Microsoft Windows’u ya da Office’i açık kaynak yapacak anlaşılmasın ama Microsoft daha önce ürünü olan Bing Maps’te açık kaynağın bir uzantısı olarak nitelendirilebilecek olan Open Street Maps’e yer verdi. Dün de yeni bir haber ile Open Street Maps’in kurucusu Steve Coast’u Bing Maps’e transfer etti. Ayrıca Open Street Maps’e uydu görüntüsü desteği de vereceğini açıkladı.
Bu gelişme ile Microsoft Google’un kendi harita verilerini toplamasına karşın Open Street Maps’in arkasındaki topluluğu arkasına alarak kendini güçlendirmeyi hedefliyor sanırım. En azından bloglardaki yorumlar buna işaret ediyor.
Hadi hayırlısı diyorum
Google Maps’e erişim sorunu çözüldü
17 Eyl
Dün itibari ile Google tarafından bu adresten yayınlanan yazıda da görüleceği üzere artık Google Maps’e erişim sorununun giderildiğinden bahsetmekte.
Sözde YouTube yasağı bahane edilerek Google diş geçirme çabaları arasında araya kaynayan Google Maps erişimi ile gerek özel gerekse kamu sektöründe sıkça kullanılan Google Maps API kullanımı tekrar düşünülmeye başlamıştı. Neyse ki bu kadar sık güncellenen harita verileri ve uydu görüntüleri üzerine sistemlerini kuran firma ve kamu kuruluşları bir nebze de olsa rahatlamış olacaklar.
Ama gene de alternatifler üzerinde de çalışmak gerektiğini düşünmekteyim. Malum burası Türkiye, ne zaman ne olacağını kestiremiyoruz
Bing Maps yenilenmiş
17 Eyl
Uzun zamandır Türkiye verisini güncellemediği için pek uğramadığım Bing Maps (ya da eski adı ile Live Maps) yeni kartografyası ile OpenStreetMap’e benzese de Türkiye için daha detaylı yol haritaları vermeye başlamış.
Ayrıca harita verisinin güncellenmesi ile yol tarifleri de güncellenmiş. Böylelikle ilerisi için Google Maps’e alternatif bir altlığımız da gelmiş oldu. Yeni görünüm için aşağıdaki ekran görüntülerine bakabilir ya da www.bing.com/maps adresine giderek kendiniz test edebilirsiniz.
Google Maps JS API V3 – Olaylar (Events)
29 Ağu
http://code.google.com/apis/maps/documentation/v3/events.html
JavaScript de diğer programlama dillerinde olduğu gibi çeşitli olaylar içererek bunlara cevap verip kullanıcı ya da program içerisindeki diğer modüllere ulaşır. Bu olaylar sayesinde programın işleyişi şekillenmektedir. Örneğin haritanın merkezi değiştiğinde şunu yap, ya da şu yaklaşma seviyesinin altına inme gibi şeyleri olaylar yardımıyla yapabilirsiniz.
Yeni versiyonda da V2′deki gibi bir olay sistemi mevcut. Bu versiyonda 2 tip olay bulunmakta :
Kullanıcı Olayları (kullanıcının haritaya tıklaması ya da yaklaşması gibi)
MVC Yapısındaki durum değişiklikleri ile ilgili olaylar
Buradaki MVC (Model-View-Controller) yapısı daha önceki yapıda bahsettiğim Nesne Yönelimli Yapı ile ilgili bir terim. Bunun için biraz Google’dan makale okuyabilirsiniz.
İlgili olayları “google.maps.event” alan adı aldındaki metodlar ile yapabilirsiniz. Bununla ilgili detaylı örneği birazdan vermiş olacağım.
Kullanıcı Olayları :
‘click’ –> ekrana tıklayınca ortaya çıkar.
‘dblclick’ –> ekrana çift tıklayınca ortaya çıkar.
‘mouseover’ –> bir obje üzerine gelince ortaya çıkar.
MVC Durum Değişiklikleri :
Bu tipde haritanın bir özelliği değiştiğinde ortaya çıkabilir. Örneğin haritanın üstünde bir uzaklaşma/yakınlaşma olması durumunda “zoom_changed” olayı ortaya çıkmaktadır.
Harita Olayları :
Harita ile ilgili olayları addListener() metodu ile ekliyoruz. Bu metot 3 parametre almaktadır : sırası ile takip edilecek obje, objenin olayı ve olay sonrası çalışacak fonksiyon/metot. Aşağıdaki örnekte haritanın yaklaşma seviyesinin değişmesi durumunda ne yapacağımızı göreceksiniz.
var harita;
function haritayiBaslat() {
var merkezNokta = new google.maps.LatLng(39.918689, 32.801743);
var haritaAyarlari = {
zoom: 9,
center: merkezNokta,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var harita = new google.maps.Map(document.getElementById("harita_div"), haritaAyarlari);
google.maps.event.addListener(harita, ‘zoom_changed’, function () {
alert(‘Haritanın zoom seviyesi değişti!!’);
}
}
</script>
Olaylarda Parametreler :
Bazı olaylar sonucunda ortaya bazı parametrelerde çıkar. Örneğin haritaya tıklanma olayında çalışacak fonksiyona tıklanılan noktanın koordinat bilgileri de gitmektedir. Böylelikle daha interaktif bir geliştirme ortamı sunulmuş olmaktadır. Aşağıdaki örnekte haritayı takibe alıp tıklanıldığında tıklanılan noktanın koordinatları ekranda göstereceğiz.
var harita;
function haritayiBaslat() {
var merkezNokta = new google.maps.LatLng(39.918689, 32.801743);
var haritaAyarlari = {
zoom: 9,
center: merkezNokta,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var harita = new google.maps.Map(document.getElementById("harita_div"), haritaAyarlari);
google.maps.event.addListener(harita, ‘click’, function (event) {
alert(‘Noktanın koordinatları : ‘ + event.latLng.lat() + ‘,’ + event.latLng.lng());
});
}
</script>
Olaylar sırasında kullanılabilecek farklı teknikler bulunmakla beraber, bunların en önemlisi kapatma (closure) olarak isimlendirilen JavaScript’te özel (private) kullanımını sağlayan bir yaklaşımdır. Fakat bunu sonraki yazılarımızda daha detaylı olarak işleyeceğiz.
Google Maps JS API V3 – Giriş
28 Ağu
http://code.google.com/apis/maps/documentation/v3/introduction.html
Bu kısımda da Google Maps JS API V3′ün yukarıdaki eğitsel dökümanını takip edeceğiz. Bu dökümanda da örnekle başladığı gibi ben de örnekle başlayacağım.
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&amp;amp;amp;language=tr"></script>
<script type="text/javascript">
function haritayiBaslat() {
var merkezNokta = new google.maps.LatLng(39.918689, 32.801743);
var haritaAyarlari = {
zoom: 9,
center: merkezNokta,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var harita = new google.maps.Map(document.getElementById("harita_div"), haritaAyarlari);
}
</script>
</head>
<body onload="haritayiBaslat()">
<div id="harita_div" style="width:100%; height:100%"></div>
</body>
</html>
Örnekte yaptıklarımızın üstünden adım adım gidersek :
a) Öncelikle sayfamıza Google Maps JS API’yi eklememiz gerek. Ayrıca bu kısımda mobil cihazlar için daha önceki yazımızda bahsedilen “meta” etiketler ile ayarlarımızı tamamlıyoruz. API’yi kullanırken ileride kullanacağımız GPS için “sensor=true” diyoruz. Ayrıca dil olarak Türkçe kullanacağımızı “language=tr” diyerek tamamlıyoruz.
b) Haritamızın görüntüleneceği alanı belirten “div”i ayarlıyoruz ki burada mobil cihazları düşünerek ekranın tamamını kaplayacağını varsayıyoruz.
c) Haritamızı oluşturmadan önce belli özelliklerini tanımlamamız gerekiyor ki bunu “haritaAyarlari” objesi ile oluşturuyoruz. Eğer JavaScript’teki objeler konusunda eksiğiniz var ise Google’dan bu eksiğinizi gidermenizi tavsiye ederim.
var haritaAyarlari = {
zoom: 9,
center: merkezNokta,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
V3 ile birlikte öncelikli tanımlı bir harita tipi gelmediği için bu da dahil olmak üzere harita başlangıç merkez noktası ve yaklaşma seviyesini ayarlamanız gerekmektedir. Bunun için öncelikle “google.maps.LatLng” sınıfı ile bir nokta tanımlıyoruz. Bu noktayı (center) da yaklaşma seviyesi (zoom) ve harita tipi (mapTypeId) ile beraber tanımlıyoruz.
Harita tiplerine ise aşağıdaki gibi ulaşılmaktadır. (google.maps.MapTypeId.HARITA_TIPI, buradaki HARITA_TIPI yerine aşağıdaki elemanlar gelmelidir.)
ROADMAP –> Yol haritası
SATELLITE –> Sadece uydu görüntüsü
HYBRID –> Uydu görüntüsü üzerinde yol haritası
TERRAIN –> Yükseklik haritası
d) Bu kısımda harita objemizi oluşturuyoruz. Bunun için haritayı tutan “div”in IDsi ve daha önce tanımlamış olduğumuz harita özellikleri objesi gerekmektedir.
Burada Maps sınıfından “harita” objesini oluşturuyoruz.
e) Artık haritamıza tarayıcımız yüklenince çalışması komutunu verebiliriz.
Görüldüğü üzere ilk uygulamamızı hazırladık. Uygulama Ankara üstünde standart kontroller ile 9. yaklaşma seviyesinde bir görüntü ile açılacaktır. Siz de enlem ve boylamı değiştirerek kendi istediğiniz bölgeden başlatabilirsiniz.
Google Maps JS API V3 – Konsept
26 Ağu
http://code.google.com/apis/maps/documentation/v3/basics.html
Bu yazı yukarıdaki eğitsel dökümanın Türkçe özeti olarak tanımlanabilir.
Google Maps uzun zamandır kullandığı JS API’ya (v2) yeni bir version (v3) daha ekleyerek daha çok mobil cihazları hedefleyen daha hızlı olan bir güncelleme yaptı.
Bu versiyon ile ilk etapta yüklenen JS dosyasının boyutu düşürülerek “Nesne Tabanlı” bir yapıya geçildi. Bu versiyon ile beraber daha modüler bir yapı tasarlandı. Yazımız boyunca Google Maps JS API V3′ü inceleyerek örnek mobil uygulamalar geliştireceğiz.
Yeni versiyonda ilk göze çarpan yenilik “Anahtar”sız olması. Bildiğiniz üzere önceki versiyonu sitenizde ya da geliştirme ortamınızda kullanmanız için GMail adresiniz ile bir anahtar almanız ve bu anahtarı da sayfanıza eklemeniz gerekmekteydi. Oysa V3 ile beraber bundan kurtuluyoruz.
V3′te JS API’yi sayfanıza aşağıdaki şekilde ekliyorsunuz :
Buradaki “sensor” parametresi mobil cihazlarınızdaki GPS gibi sensorleri kullanıp kullanmayacağınıza göre değişiyor. Eğer kullanmayacaksanız bile bu değeri “false” diyerek sistemin az da olsa yükünü hafifletebilirsiniz.
Bu versiyonu mobil cihazlarda kullanacağımız için aynı zamanda “div” ayarlarını da ona göre yapmak lazım. En uygun çözüm “div”in genişlik (width) ve yükseklik (height) özelliklerini 100% yapmak. Eğer genel bir uygulama geliştiriyorsak ve bunun aynı zamanda IPhone ve Android cihazlarda da çalışmasını istiyorsak o zaman cihaz tipine göre davranmak en mantıklısı olacaktır. Bu durumda aşağıdaki JS kodunu kullanmak uygun olacaktır.
var useragent = navigator.userAgent;
var mapdiv = document.getElementById("map_canvas");
if (useragent.indexOf(‘iPhone’) != -1 || useragent.indexOf(‘Android’) != -1 )
{ //eger IPhone ya da Android ise ekrana oturt
mapdiv.style.width = ’100%’;
mapdiv.style.height = ’100%’;
}
else
{ //masaüstü ise de 800*600′lük bir div hazırla.
mapdiv.style.width = ’600px’;
mapdiv.style.height = ’800px’;
}
}
Ayrıca kullanıcının görüntünün boyutunu değiştirmemesi için HTML tarafında da mobil tarayıcıların anlayacağı “meta” etiketleri kullanmamız gerekmektedir. Bunun için sayfanın “head” kısmına
eklersek sorun çözülecektir.
Yerelleştirme :
Eğer Türkiye dışında da kullanılacak bir uygulama geliştiriyorsanız, o zaman yerelleştirme de uğraşmanız gereken konular arasında olacaktır. Bu noktada çok detaya girmeden Google’ın bize sunmuş olduğu harita kontrolleri konusundaki yerelleştirmeden bahsedeceğim.
Yukarıdaki kodu kullandığınız takdirde harita Türkçe destekli olarak yayınlanacaktır.
Bu kısım konuya giriş olarak nitelendirilebilir. Bir sonraki kısımda yavaştan uygulama geliştirmeye başlayacağız.
Mobil CBS için ESRI Araçları (JavaScript API ve IPhone SDK)
9 Tem
Yazı başlığı biraz ilginç oldu ama bazı kelimelerin tam Türkçe karşılığı olmayınca böyle yazmak zorunda kalıyorum.
Daha önceden mobil cihazlarda CBS uygulamaları için Google Maps API V3 kullanıyordum ama bu haber ile artık ESRI araçlarını da mobil CBS uygulamaları için kullanabileceğim.
http://help.arcgis.com/en/webapi/javascript/arcgis/help/jshelp_start.htm#jshelp/inside_compactbuild.htm adresinden ulaşabileceğiniz ESRI JavaScript API Compact Build ile temel özelliklere mobil cihazlar üzerinden erişebileceksiniz.
Mobil uygulamalar için ayrıca ESRI’nin bu sene duyurduğu IPhone SDK ile de Objective-C ile native IPhone uygulamaları yazabilirsiniz.
Son olarak ESRI App Store’a yeni ücretsiz bir uygulama ekledi. Bu uygulama ile ArcGIS Servislerine ulaşıp IPhone’nunuz üzerinden görebilmektesiniz.



