ÖZGÜR CBS YAZILIMI GELĠġTĠRME: QUANTUM GIS ÖRNEĞĠ H. Şebnem DÜZGÜN duzgun@metu.edu.tr Volkan Osman KEPOĞLU vkepoglu@gmail.com ODTÜ, Jeodezi ve Coğrafi Bilgi Teknolojileri (JCBT) Ana Bilim Dalı ODTÜ JCBT Ekim, 2008
Tanımlar 1. Kaynak kod 2. Özgür Yazılım X Kapalı Kaynak kodlu yazılımlar Sahipli Yazılımlar 3. Özgür Yazılım ~= Açık Kaynak Kodlu Yazılımlar Özgür Yazılım Vakfı nın kurucusu Richard Stallman özgür yazılım kavramını Eric Raymond The Cathedral and the Bazaar ve Açık Kaynak Direktivleri Vakfı
Özgür Yazılım Nedir? 1. Her türlü amaç için yazılımı çalıştırma özgürlüğü 2. Yazılımın nasıl çalıştığını inceleme ve kendi gereksinimleri doğrultusunda değiştirme özgürlüğü 3. Yeniden dağıtma ve toplumla paylaşma özgürlüğü 4. Yazılımı geliştirme ve gelişmiş haliyle topluma dağıtma özgürlüğü
Özgür Yazılımın Faydası CBS Araştırmacılar için 1. Uygulanmış bir algoritmayı tekrar yapmaktan kurtarmaktadır. 2. Mekansal veri analiz tekniklerinin aslına uygun bir şekilde nasıl çalıştıklarını öğrenebilmektedirler. 3. Yeni teknikleri deneyebilecekleri ve geliştirebilecekleri gelişmiş bir test ortamına sahip olmaktadırlar. 4. En iyi dökümantasyona sahiptirler. 5. Sınırlama olmaksızın araştırmanın ihtiyaçlarına göre geliştirilebilmektedirler. 6. Yeni geliştirmeler ve keşfedilen teknikler anında yayınlanabilmekte ve diğer araştırmacılar ile paylaşılabilmektedir. 7. Diğer alanda geliştirilen yazılım ürünü ile CBS yazılımı entegre edilebilmektedir.
Özgür Yazılım Projesi Geliştirme Teknik Boyutu Sürüm Kontrol Sistemi (ör: Subversion, Concurrent Versions System) Hata Takip ve Raporlama Sistemi (ör: Bugzilla,Trac) İletişim Kanalları (ör: e-posta listeleri (GNU Mailman, Hypermail), haberleşme ve IRC programları (kopete, xchat)) Paket Hazırlama Sistemleri (ör:red Hat Package Manager (RPM), Advanced Packaging Tool (DEP) ) Döküman Hazırlama (ör:lyx, latex) Projenin İnternetten Yayınlanması (ör:web sayfası hazırlama araçları, forumlar, bloglar veya bu hizmetlerinin bir kaçını birden bir arada web üzerinden sunan depolar (örnek: GNU Savannah, SourceForge, BountySource, vb.) ) Projenin Duyurulması (ör:freshmeat, directory.fsf.org, O'Reilly Net, Linux Weekly News, IBM developerworks)
Özgür Yazılım Projesi Geliştirme Ekonomik Boyutu Özgür Yazılım Projesini Başlatanlar Aktörler 1. Kurumsal (Kamu Desteği, Ticari Firma Desteği, Üniversite Desteği, Vakıflar gibi Sivil Toplum KuruluĢları, vb.) 2. Bireysel (Bir ve birden fazla geliģtirici) Projenin Gelişmesine Katkı Sağlayan Aktörler 1. Kurumsal Katkılar 2. Bireysel Katkılar (bağıģlar, geliģtirme talepler, vb.) A. Kullanıcı (dökümantasyon hazırlamak, paketleme yapmak, yerelleģtirme ve tercüme çalıģmalarına katılmak, programı test etmek, hataları raporlamak vb.) B. Programcı (yeni özellikler için algoritma geliģtirebilirler) C. Geliştirici (destek hizmeti, danıģmanlık, eğitim, vb)
Özgür Yazılım Projesi Geliştirme Sosyal Boyutu Özgür Türk Programcıları Motivasyon Nedenleri Bilgi paylaşmak, iş birliği yapmak ve daha iyi bir dünya için katkıda bulunmak % 67 Programlama yaparken eğlenmek ve hoş vakit geçirmek % 22 Yeni beceriler öğrenmek ve kendini geliştirmek % 11 Yazılımlar özel mülk sahiplerine ait olmamalı % 8 Milliyetçilik duyguları % 5 Ticari yazılımların çözemediği bir problemi çözmek % 5 İş fırsatları geliştirmek % 2 Kaynak: GÖZÜKELEŞ, İ. İ., (2006), Free and Open Source Software Hackers in Turkey, http://opensource.mit.edu/papers/wp.pdf (31.07.2006).
Hangi Özgür CBS Yazılımı? freegis.org Eylül 2008 de 339, opensourcegis.org Mayıs 2007 de 238, Eylül 2008 de 256. Diğer kaynaklar; Wikimedia MapTools.org gisdevelopment.net Steiniger (2008) Karşılaştırmalı bir çalışma Ramsey (2007) Geliştirme diline göre sınıflandırma Open Source Geospatial Vakfı
Genel Özgür CBS Yazılım Listesi Masaüstü CBS (GRASS GIS, SAGA GIS, Quantum GIS, MapWindow GIS, ILWIS, udig, gvsig, JUMP GIS, OpenEV) Web Haritalama (deegree, Mapbender, MapBuilder, MapGuide Open Source, MapServer, Geoserver, OpenLayers) Mekansal Kütüphaneler (FDO, GDAL/OGR, GEOS, GeoTools, Proj4, JTS Topology Suite) Diğer Araçlar (GeoNetwork, OSSIM, TerraLib, GMT, PostGIS)
Open Source Geospatial Vakfı
Neden Quantum GIS? (QGIS) Open Source Geospatial Vakıf desteği Geniş bir topluluk desteği GNU GPL lisansı Modüler bir yapı API Kütüphanesi tanımları Yeni bir CBS yazılımı geliştirebilme Eklenti desteği GRASS GIS in fonksiyonel yapısı Python desteği Kullanıcı dostu Çapraz platform desteği Aktif bir proje Ve eğlence için
QGIS Sürüm 0.10.0
QGIS Sürüm 0.10.0
QGIS in özellikleri Linux, Unix, Mac OSX ve Windows ta çalışan kullanıcı dostu ve açık kaynak kodlu özgür bir coğrafi bilgi sistemi yazılımıdır. GDAL kütüphanesi desteği sayesinde coğrafi raster formatları (GeoTIFF, Erdas Imagine Images, Arc/Info ASCII Grid, vb.), OGR kütüphanesi ile de vektör formatlarını (ESRI Shapefile, MapInfo, GML, vb.) desteklemektedir. Web haritalama servisi (Web Map Service) ekleme, PostgreSQL veritabanına Postgis eklentisi sayesinde coğrafi veritabanı bağlanma, Farklı projeksiyona sahip verileri otomatik olarak arka planda dönüştürüp üst üste bindirme (on the fly projection) ESRI shapefile formatında veri yaratma ve editleme vb. özellikler sunmaktadır. QGIS geliştirme işgücü 50 personel bir yıl, maliyeti 2,757,345$ dır (Ohloh portal istatistikleri 25 Eylül 2008).
QGIS de Geliştirme Olanakları QGIS, 2002 yılından itibaren C++ ile geliştirilmektedir. Qt sürüm 4.2 ile Ekim 2006 da QGIS Sürüm 0.9 ile birlikte Python dili geliştirme desteği sunulmaya başlanmıştır. API Düzeyinde Geliştirme (Yeni bir CBS yazılımı geliştirme) C++ Python Eklenti Geliştirme (QGIS arayüzü içinde) Ana Eklentiler (dağıtımla birlikte varsayılan olarak gelmekte) C++ (sadece QGIS geliştirme ekibi tarafından) Kullanıcı Destekli Eklentiler C++ Python Eklenti Deposu Kurma ve Yayınlama XML
QGIS de diğer Kütüphaneler Flex, Bison, GRASS, GEOS, GDAL/OGR, SQLITE, GSL, EXPAT, POSTGRES, Proj4, PostGIS, Expat dır.
Python ile QGIS de Geliştirme Yapmak için Gerekli Ürünler QGIS (GNU GPL) Python (GNU GPL + ticari amaçlar içinde kodu kapatabilme) Qt (Çift Lisanslı; GPL + Ticari Lisans) Qt Designer Qt Assistant Qt Linguist qmake PyQt (Çift Lisanslı; GPL + Ticari Lisans) pyuic4 pyrcc4 pylupdate4
Yeni CBS Yazılım Geliştirme Yeni CBS Yazılımın Özellikleri Katman Ekleme Bir raster görüntü Bir vektör veri Vektör veri üzerinde etiketleme Yönlendirme Araçları Yakınlaştırma Uzaklaştırma Kaydırma Araç çubuğu Menü penceresi
Yeni CBS Yazılım Geliştirme
Yeni CBS Yazılım Geliştirme
Yeni CBS Yazılım Geliştirme
Yeni CBS Yazılım Geliştirme Uygulama 1
Yeni QGIS Eklentisi Geliştirme Yeni Eklentinin Amacı: Qt Kütüphanesindeki mesaj kutusu sınıfına bir çağrı göndererek bir metin gösterilecek.
Yeni QGIS Eklentisi Geliştirme
Yeni QGIS Eklentisi Geliştirme Uygulama 2
QGIS Sürüm 1.0.0.preview-1
Yeni QGIS Eklenti Depomuz http://ggit.metu.edu.tr/ ~volkan/plugins.xml
Yeni QGIS Eklenti Depomuz Uygulama 3
Yeni QGIS Eklentisi: SDATool Sistemin Amacı: Mekansal Veri Analiz dalını yaygınlaştırmak Hedefler: 1. CBS ile entegre etmek. 2. Kullanıcı dostu bir arayüze sahip olmak. 3. Mekansal Veri Analiz araçlarını bir bütünlük altında bir sistem yapısı altında derleyerek toplamak 4. Araçların nasıl çalıştığını tüm detayları ile açıklamak 5. Mekansal Veri Analiz kütüphanesi geliştirmek 6. Ücretsiz erişim imkanı sağlamak 7. Yasal olarak dağıtımının ve paylaşımının yapılabildiği bir yapı ortaya çıkarmak 8. Sürekli geliştirilebilir bir ortam sunabilmek 9. Endüstri standartlarını kullanmak
Yeni QGIS Eklentisi: SDATool QGIS de SDATool adında bir eklenti geliştirilmeye başlanmıştır. Örnek olarak Kernel Density Intensity Function adlı bir araç özgür yazılım ürünleri kullanılarak uygulanmıştır. Diğer araçlar da özellikle nokta bazlı coğrafi veriler üzerinde analiz yapan mekansal veri analiz araçları da sisteme entegre edilecektir. Eklentinin kaynak koduna ve sistemin yapısı ile ilgili detaylı bilgiye şu web adresinden ulaşılabilir. http://ggit.metu.edu.tr/~volkan/
Yeni QGIS Eklentisi: SDATool Sistem Tanımı / Kullanılan Yazılım Araçları 1. Quantum GIS 1.0.0.preview-1 [new!] 2. Qt 4.3.2 3. PyQt 4.3.2 4. Python 2.5.2 5. R 2.6.1 6. R Packages 1. Sp: Classes and methods for spatial data 2. Maptools: Tools for reading and handling spatial objects 3. SpatStat: Spatial Point Pattern analysis, model-fitting, simulation, tests 4. Rgdal: Bindings for the Geospatial Data Abstraction Library 7. RPy 1.0.1 8. Pywin32 2.1.0
Yeni QGIS Eklentisi: SDATool R Konsol > library(spatstat) This is mgcv 1.3-29 spatstat 1.12-8 Type 'help(spatstat)' for information > data(swedishpines) > x <- swedishpines > x planar point pattern: 71 points window: rectangle = [0, 96] x [0, 100] units (one unit = 0.1 metres) > summary(x) Planar point pattern: 71 points Average intensity 0.0074 points per square unit (one unit = 0.1 metres) Window: rectangle = [0, 96] x [0, 100] units Window area = 9600 square units Unit of length: 0.1 metres > plot(x)
Yeni QGIS Eklentisi: SDATool Uygulama 4
TeĢekkürler Sorular??? İletişim: vkepoglu@gmail.com