GeoJSON’a kardeş geliyor : TopoJSON

Dün D3 ile başladığım yazıma gene D3’ün yaratıcısı Mike Bostock’tan GeoJSON’a kardeş olarak gelen TopoJSON ile devam etmek istedim. GeoJSON pekçok açık kaynak ya da ticari yazılım tarafından desteklenen ve GML’in tahtına aday olan bir format olmasına rağmen eksiklikleri de yok değil. GML’e göre çok hafif ve daha okunabilir bir yapısı olan GeoJSON’ın en büyük sıkıntısı belki de bir topoloji yapısının olmaması nedeniyle bitişik olan poligonlarda kendini tekrar etmesiydi. Bu tekrarlar nedeniyle de boyutta şişmeler olmaktaydı. Aslında hala GML’e göre hala hafif olan GeoJSON bu topoloji değişimine uğradıktan sonra daha da bir hafifledi. Yani anlayacağınız TopoJSON ile tekrar eden koordinatlar azaltılarak yeni ve daha hafif bir format oluşturuldu. Bu arada formatta daha farklı değişikliklerde var ama o konuya şu an değinmeyeceğim.

TopoJSON’ı değerledirmek için Türkiye İller verisini PostGIS üzerinde basitleştirerek gene PostGIS fonksiyonları ile GeoJSON olarak çıktısını aldım. Sonrasında uygun bir dönüştürücü ile TopoJSON’a çevirdim. 284 KB olan GeoJSON verisi TopoJSON’a çevrilince 72 KB oldu. Yani sonuç olarak %75’lik bir sıkıştırma ile aynı veriyi sunabilir hale geldik. Tabi bu veriyi sunabilmek için de standart harita kütüphaneleri henüz kullanılabilir değil. Bu nedenle gene D3 kütüphanesini kullandım.

Aşağıdaki adresten TopoJSON ve D3 kullanarak hazırladığım örnek uygulama ile veri boyutu da dahil olmak üzere 120 KB ile tüm Türkiye’nin illerini gösterebilir oldum. Açık Kaynağın gün geçtikçe bu kadar ilerlemesi ile Github gibi sosyal kodlama sitelerinin popülerliğinin artması bu tarz inovatif oluşumların önünü daha da fazla açacaktır diye düşünüyorum 🙂

Uygulama Adresi : http://www.mekansal.com/demo/topojson/

Türkiye İllerinin Hareketli Versiyonu (JavaScript ile)

Uzun zamandır farklı birşeyler yapmak istiyordum, haftasonu D3’ü keşfedip sonrasında GEO kütüphanelerinin de olduğunu görünce Amerika eyaletleri için yapılmış versiyonu neden Türkiye İlleri için çevirmeyeyim dedim ve yaptım 🙂

Uygulama illerin merkezlerini bulup bir nevi voronoi diagramı oluşturuyor. Sonra da sanki lastik ile bağlanmış gibi illeri birbirine bağlıyor. Açıkçası biraz uğraştırdı ama sonunda değdi diye düşünüyorum. Umarım sizler de beğenirsiniz. Uygulamaya aşağıdaki bağlantıdan ulaşabilirsiniz.

Uygulama Bağlantısı : http://www.mekansal.com/demo/d3/

Windows 8 ve ilk Uygulamam : iEczane

Merhabalar,

Gene uzun bir ara sonrası ilk yazım ile devam ediyorum. Gene aklımda periodik olarak bloga yazmak var, ama ne kadar başarılı olurum bilmiyorum 🙂 Neyse gene birçok proje ve yeni sistem üzerinde çalışıyorum ARGE olarak ama sonuçta ortaya ne çıkar ilerleyen dönemde göreceğiz.

Uzun zamandır üstüne çalıştığım projelerden birinden bahsetmek istiyorum bu yazımda. Aslında öncelikle Microsoft’un yeni çıkardığı Windows 8’e biraz göz atalım isterim. Öncelikle Windows 8 Microsoft’un yeniden dirilişi olmak zorunda çünkü uzun zamandır izlediği bir piyasa olan tablet piyasasına ve çok geriden girdiği telefon piyasasına yeni bir soluk getirmeyi umuyor. Fakat diğer şirketlerden ayrı olarak eskiden yaptığı iş olan masaüstü uygulamaları da aynı ortamda sunması gerekiyor. Durum böyle olunca (Windows Phone 8’i ayrı tutuyorum) hem tablet hem de masaüstünü bir araya getiren Windows 8 ürününü geçtiğimiz günlerde tüm dünyada tanıttı. Aslında Windows 8 geçen seneden beri farklı sürümler ile beta modunda yayındaydı ve biz geliştiriciler gerek alışmak gerekse yazılım geliştirmek için kullanmaktaydık.

Benim Windows 8 maceram da Şubat ayı gibi başladı. Aslında bir iOS fanı olsamda yeni teknoloji beni her zaman kendine çekmiştir. Hatta bu nedenle yurtdışından bir Lumia 800 getirtmiş ve Windows Phone deneyimimi daha önceki bir yazımda paylaşmıştım. Kısaca tecrübemi paylaşacak olursam iOS’tan ayrıldığım noktada Android yerine Windows Phone’u tercih edebilirim diye yazmıştım 🙂 Lumia 800’ü kullandıktan sonra “Tile” mantığını çok sevdim ve hemen bir Windows 8 kurdum. Sonrasında aklıma daha önce iOS için yazdığım iEczane’yi neden Windows 8 için yazmayayım dedim.

Bu süreç sonrasında önümde 2 seçenek vardı. (ya da 3 🙂 ) Ya XAML+C# ya da HTML+CSS+JavaScript olacaktı. JavaScript tecrübemi göze alınca direk 2. seçeneği yani HTML+CSS+JavaScript’i tercih edip WinRT ve WinJS ile yola çıktım. Birçok Build 2011 ve Microsoft videosu izledikten sonra artık kod yazmaya gelmişti sıra. Bu noktada Microsoft’un bloglarını ve dökümantasyonunu takdir ederek takip ederek uygulamamı geçtiğimiz aylarda yayınladım.

Aslında uygulama henüz istediğim kıvamda değil, hatta yorumlarda bir hayli eksikliklerden de bahsediliyor ama bu bir öğrenme süreci olduğu için kullanıcıların affına sığınıyorum, zira iEczane’yi iOS’ta olduğu gibi burada da ücretsiz devam ettirmeyi düşünmekteyim. Bu nedenle şu an için eksiklikleri anlayışla karşılayabileceğinizi düşünmekteyim.

Uygulamaya http://apps.microsoft.com/webpdp/tr-tr/app/ieczane/8de10812-b1c9-4fe3-98ae-7b9f6fcf03b3 adresten ulaşıp indirebilirsiniz.

Geliştirme ortamından biraz bahsetmek gerekirse uzun zamandır mesafeli olduğum Visual Studio 2012 üzerinde WinJS ile JavaScript diyebilirim. Aslında Visual Studio 2012 ile Microsoft JavaScript severlerin resmen kalbini çalmış da diyebiliriz 🙂 Ayrıca geliştirme sırasında daha önceden kullandığınız HTML5, CSS ve JavaScript bilgileri ile JQuery gibi kütüphaneleri de kullanabilmek gerçekten süper bir deneyim. Gerçi WinRT kısmında dahili bir veritabanı olmaması hayal kırıklığı yatarmadı da değil. Sonradan SQLite Windows 8 desteğini açıklasa da şu saat itibari ile henüz JavaScript’ten SQLite’a bağlantı kurabilmiş değilim. 🙂

Neyse işin özü ben Windows 8 platformuna ve getirdiklerine bir hayli güvenmekteyim. Umarım ilerleyen dönemde yeni uygulamalar ile Türkiye Uygulama Marketine daha fazla katkı sağlarım 🙂

Flash ve Silverlight güle güle… Hoşgeldin HTML5

Uzun zamandır bu konuda yazmak istiyordum ama bir türlü yoğunluktan fırsat bulamıyordum ama artık zamanın geldiğini düşünüyorum. Eskiden Flash ile ArcIMS tabanlı CBS uygulamaları geliştirdim ve o zaman için de destekledim ama gün geçtikçe tarayıcılar hızlandı ve yetenekleri arttı. Sonra Microsoft Adobe’a ve Flash’a karşı bir hamle ile Silverlight’ı çıkardı. İlk başta güzel olabilir diye düşünsem de plugin istemesi nedeniyle pek yaygınlaşamayacağını düşündüğümden Silverlight’a da pek şans vermedim. Sonra ne oldu Google rakiplerine karşı bir standartı destekledi ve HTML5 ön plana çıkmaya başladı. Tarayıcı işine girerek Chrome’ı çıkarttı. Javascript motoru V8’i yazarak Javascript’e yeni bir yön verdi. Bu destek sonrasında diğer tarayıcılar da sırası ile HTML5’e arka çıkmaya başladılar. Öyle ki Microsoft bile bu rüzgara karşı duramadı ve geçtiğimiz ay çıkarttığı tarayıcısı Internet Explorer’ın 9. versiyonun kısmen de olsa HTML5’e destek verdi. (kısmen olayını başka bir yazıda yazarım 🙂 )

Bu arada iPhone ve iPad ile diğer şirketleri sollayan Apple’da Flash’a ve Silverlight’a karşı HTML5’i destekleyeceğini ve iOS cihazlarda kesinlikle bu pluginleri çalıştırmayacağını söyledi ki sonrasında yeni nesil MacBook’larında Flash öntanımlı olarak bile kurulu gelmemeye başladı. Hatta internette yapılan testlerle Flash çalışmayan MacBook’lar çalışanlara göre 2 saat daha uzun pil ömrü vaadediyordu.

Yıl 2011 olduğunda rekabet daha da hızlandı ve neredeyse tüm tarayıcıların son sürümleri HTML5 desteğine kavuştu. Artık Flash ve Silverlight’ın varlığı sorgulanmaya başlandı ki bu noktada ben de özellikle CBS konusundaki çalışmaları görünce birşeyler yazmak istedim. Daha önceki yazılarımda da belirttiğim üzere burada yazdıklarım benim şahsi görüşlerimi belirtmektedir.

Bilindiği üzere Coğrafi Bilgi Sistemleri (CBS) Google Maps’in verdiği ivme ile daha hızlanmış ve teknolojiler Google Maps’i destekler bir hale gelmiştir. Google Maps ile hayatımıza giren kayan haritalar ile masaüstü deneyimine yakın bir ölçüde web harita uygulamaları geliştirilmeye başlandı ve kullanıcılar da gerek lisans gerekse program kurma zahmetinden kurtuldukları için bu yeni nesil web tabanlı CBS uygulamalarını tercih ettiler. Ama bu uygulamalar yukarıda bahsettiğimiz 3 farklı teknoloji ile geliştirilmeye başlandı ve Flash/Silverlight ile geliştirilen uygulamalar son kullanıcılara plugin kurma gerekliliği getirdiler. Bu durum hem uygulamalara zenginlik getirmiş olsa da Türkiye’de özellikle ESRI’nin geliştirdiği standart Flex/Silverlight şablonları ile yapılan birbirine benzer onlarca uygulama ortaya çıktı. Ayrıca Flash birçok bilgisayarda kurulu olsa da Silverlight’in kurulu olmaması insanları kurulum yapmaya zorluyor. Ayrıca halka hitap etmesi gereken belediye kent rehberi gibi uygulamaların da Silverlight benzeri teknolojiler ile geliştirilmesi bana garip geliyor. Hazırlanan uygulamalardaki özelliklerin neredeyse tamamı HTML ve Javascript ile de yapılabiliyorken neden ekstra eklentilere ihtiyaç duyalım.

Gelecek Google ve Apple’in önderliğinde HTML5’e doğru giderken, Microsoft ve Adobe’da bunu görmüşken hala neden eklentili gerektiren uygulamalar geliştiriyoruz? İşte kendimize sormamız gereken soru bu.

İlerleyen günlerde HTML5 ile ilgili yazılara devam etmek dileklerimle.

ExtMap Touch – Mobil CBS Uygulama Çatısı

Uzun zamandır sessizliğe bürünmüştüm, sebebi ise üzerinde uğraştığım projeydi. Daha önce ExtMap JS ve iExtMap adında web ve iPhone ortamları için uygulamalar geliştirmiştim ama hayalimde mobil web ortamında çalışacak, yanı neredeyse tüm mobil tarayıcılarda çalışacak bir uygulama yazmak vardı. Sencha Touch JS Uygulama Çatısının (Framework) yayınlanması ile birlikte Sencha firması bir mobil geliştirme yarışması düzenledi ve ben de bu yarışmaya katılmaya karar verdim. Bu yarışma uygulamaya başlamam için iyi bir motivasyon kaynağı oldu.

Geçen hafta yarışma sonuçları açıklandı ve sonuç biraz hüsran oldu 😀 Ama bu yarışma nedeniyle başladığım uygulamamı bitirmek belki de daha güzel bir ödül oldu benim için.

Daha önce ExtMap JS ile başladığım yola sonrasında iOS (iPhone) uygulaması olan iExtMap ile devam ettim. Aslında mobil bir uygulama yazmıştım ama yazdığım uygulama “native” bir uygulama olduğu için sadece iOS cihazlarda çalışmaktaydı. Ben de Sencha Touch ile HTML5/JavaScript ve CSS3’ün getirdiği avantajları kullanarak ExtMap Touch’u yazdım.

ExtMap Touch’ı yazma sebeplerimin başında yukarıda da bahsettiğim gibi her platformda çalışacak bir mobil CBS uygulaması yazmaktı ki bu noktada Mobil Web en uygun platform olacaktı. Çünkü günümüzdeki popüler mobil platformlar; iOS, Android, WebOS, Bada, BlackBerry ve Symbian vb, web tarayıcı için Apple’in açık kaynak olarak geliştirdiği WebKit motorunu kullanmaktalar. Durum böyle olunca web geliştiricinin hayali olan tek bir tarayıcı için geliştirme yapmak gerçekleşmiş oluyor. Tabi bu noktada bütün platformlarda aynı tip WebKit fonksiyonları da bulunmayabiliyor, yani uygulamanızın kesin çalışacağı garantisi maalesef olmamakta ama gelecekte aynı motoru kullandıkları için ortak bir payda da birleşeceklerini umut etmekteyim.

WebKit’in mobil ortamlarda defakto standart olmasının yanı sıra HTML5’e tam destek vermesi de yeni nesil uygulamalar için süper yetenekler anlamına geliyor. Örneğin ExtMap Touch’da kullanıcının eklediği katmanlar, favori noktalar ve son kaldığı nokta ile harita tipi tarayıcıda WebSQL ve LocalStorage aracılığı ile saklanıyor, böylelikle kullanıcı sonraki ziyaretinde aynı yerden devam ediyor. Üstelik sunucu tarafında hiçbirşey tutulmadan.

Uygulamada altlık harita olarak

  • Google Maps
  • Bing Maps
  • Open Street Maps
  • Boş (kendi altlık haritanız için)

olmak üzere 4 farklı kaynaktan beslenmekte.

Uygulamanın fonksiyonlarına gelirsek :

  • Dinamik olarak katman ekleme (ArcGIS Server katmanları, WMS, KML/GeoRSS ve Tile Servisleri)
  • GeoLocation (kullanıcının mevcut pozisyonunu alır)
  • Yaklaş / Uzaklaş
  • ArcGIS Server Katmanlarında sorgu yapma
  • Favori nokta ekle/gör
  • Enlem-Boylam ve yükseklik gör
  • Girilen Enlem-Boylam’a git
  • Adres bulma (Geocoding-Reverse Geocoding)

Uygulama kapsamında hem HTML5 hem de CSS3 teknolojileri JavaScript ile iç içe kullanıldı. Öyle ki harita değişimleri arasında CSS3’ün 3-Boyut geçiş efektleri kullanıldı.

Uygulama ilgili detaylara aşağıdan ulaşabilirsiniz. Bu arada bu sefer ExtMap JS’deki Açık Kaynak felsefesi bu uygulama için geçerli olmayacak. İnsanların açık kaynak kodları alıp, sonra da ben yaptım demesi ki Türkiye’de çok yapılan bir hareket. Bu sebepler nedeniyle uygulama kapalı olarak gelişecek 🙂

Uygulamanın Demo Adresi : www.extmap.com/touch

ExtMap’in Genel Adresi : www.extmap.com

Uygulamanın Videosu :


Internet Explorer 9 şaşırtıyor

Uzun zamandır ben ve benim gibi web geliştiricilerinin dert yandığı Internet Explorer sonunda kendini aştı ve 8 sürümü ile beraber uymaya başladığı standartlara devam dedi. Şu an beta olarak herkesin kullanımına sunulan Internet Explorer 9, standartlara uyumu ile bizleri şaşırtmaya devam ediyor. Sırası ile gelen değişikliklere bakalım :

Standartlara Uyum :

Bu sürümün en önemli kısmı standartlara uyum oldu. Belki son kullanıcı için ilk etapta çok birşey anlamasalar da HTML5 desteği ile önümüzdeki günlerde webde neler yapılabildiğinin sınırları zorlanacak. Birçok web sitesi sitelerinin HTML5 uyumlu versiyonlarının test yayınlarına başladılar ki günümüz yeni nesil mobil telefonları da HTML5 destekli tarayıcılar içerdiğinden HTML5 ilerisi için çok şey vaadetmekte. Gelelim gelen yeniliklere :

* HTML5 ses ve video elemanları
* Web font
* DOM Level 2 ve Level 3
* SVG
* HTML5’s Canvas elemanı
* ECMAScript 5 (JavaScript standartı)
* Gelişmiş CSS3 desteği

Bu gelen yeniliklerle daha önce büyük işkence olan sitelerin Internet Explorer için yeniden gözden geçirilme durumu değişecek gibi duruyor.

Performans Artışı :

Internet Explorer 9 ile doğal olarak performans artışı da geliyor. Microsoft bunun için Chrome’un V8 JavaScript Motoru gibi bir motor olan “Charka”yı geliştirmiş. Bu JavaScript motoru ile ciddi performans artışı olduğunu iddia ediyorlar. Tabi bunu zamanla göreceğiz.

Ayrıca Internet Explorer 9 ile donanımsal hızlandırma geliyor ki Windows 7 üzerinde çoklu çekirdekli işlemcileri daha efektif kullandığını iddia ediyorlar. Ayrıca grafikler için de donanımsal GPU desteği gelmiş ki yoğun grafiksel sitelerde bir hali hızlanma olacağını tahmin etmekteyiz.

Modern Tasarım :

Modern tarayıcılarda olduğu gibi Internet Explorer 9’da arayüz sadeleştirilip web için daha fazla alan bırakılmış. Aşağıdaki ekran görüntüsünde de görüleceği üzere Chrome’a benzeyen bir yapıya çevrilmiş.

Ayrıca yeni pencere açtığınızda en çok girdiğiniz sitelere kolay erişim sağlayabiliyorsunuz. Bir de Windows 7 üzerinde siteleri windows araç çubuğuna ekleyebiliyor ve sanki programlara erişir gibi favori sitelerinize erişebiliyorsunuz. (Pinned Sites) Bu eklenen sitelere hızlı erişim bağlantıları da ekleyebiliyorsunuz. (JumpLists)

Diğer tarayıcılarda olan adres çubuğunda arama yapma olayı da artık Internet Explorer 9 ile geliyor.

Internet Explorer 9 ile bilgi penceresi de alt tarafa çekilip daha düzgün bir hale gelmiş. İlgili ekran görüntüsüne aşağıdan ulaşabilirsiniz.

Yeniliklerin arkası gelmiyor ve Internet Explorer 9 ile bir Dosya İndirme Yöneticisi (Download Manager) geliyor. Bununla ilgili görüntüye de aşağıdan ulaşabilirsiniz.

Bunlar harici Internet Explorer 9 ile tarayıcının göçme durumunda geri gelmesi için araçlar (Hang Recovery) ve daha çok kurumsal yöneticilerin işine yarayacak yeni “Group Policy” ayarları gelmekte.

Geliştirici Ayarları :

Uzun zamandır web geliştiricilere dert olan Internet Explorer’da debug etme sorunu artık kendi içindeki araçlarla çözülebiliyor. “F12 Developer Tools” olarak adlandırılan araçlar ile Firebug tarzı bir geliştirme ortamı sunulmuş oluyor. Testlerini tam yapmadığım ama en basitinden artık “console.log()” diyebiliyoruz 🙂

Tüm bu yenilikleri görsel olarak görmek için Internet Explorer’ın yeni sitesi : http://www.beautyoftheweb.com e bakabilir. Ya da Microsoft’un basın duyurusuna bakabilirsiniz.

Internet Explorer 9’u indirmek için ise buraya tıklayabilirsiniz.

Sonunda Microsoft’u tebrik ediyor ve hoşgeldin Internet Explorer 9 diyorum…

Mobil CBS için ESRI Araçları (JavaScript API ve IPhone SDK)

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.