karar destek ve modelleme ortamı olarak 3 boyutlu
Transkript
karar destek ve modelleme ortamı olarak 3 boyutlu
KARAR DESTEK VE MODELLEME ORTAMI OLARAK 3 BOYUTLU SANAL KÜRE YAZILIMI Serdar Sultanoğlu (a), Özgür Balcı(a), Serkan Gazel (a) (a) ULUSAL CAD VE GIS ÇÖZÜMLERİ A.Ş., Cyberpark, Bilkent, ANKARA, {serdar.sultanoglu, ozgur.balci, serkan.gazel }@netcad.com.tr ÖZ Bu bildiride, karar destek, kavramsal modelleme, benzetim ve görselleştirme amaçları ile kullanılabilecek 3 Boyutlu Sanal Küre Yazılımının geliştirilmesi sırasında elde edilen deneyimler anlatılmaktadır. Bu amaçla Harita Genel Komutanlığı (HGK) için geliştirilen 3 Boyutlu Sanal Küre Yazılımı projesinde elde edilen deneyimler paylaşılmaktadır. Bu projede, HGK bünyesinde bulunan raster, vektör ve yükseklik verilerini sanal küre üzerinde gösterme, kesintisiz 3 boyutlu arazi modeli oluşturup oluşan model üzerinde, Görünürlük Analizi, Kesit Alma, Harekat Planlama gibi işlemleri yapabilme, OGC WMS ve WFS standartlarında veri sunma ve bu standartlarda veri sunan uygulamalardan içerik alma ve Tehdit Analizi, Meteorolojik Analiz, Kayan Harita Sistemi gibi özel ihtiyaçlar için uygulama geliştirme arayüzü elde etme gibi konular gerçeklenmiştir. Anahtar Kelimeler: 3B, Benzetim, CBS, Sanal Küre, Sayısal Yükseklik Modeli 3D VIRTUAL GLOBE SOFTWARE AS DESICION SUPPORT AND MODELING ENVIRONMENT ABSTRACT This paper explains experiences in development of 3D virtual globe software which can be used for decision support, conceptual modeling and simulation and visualization purposes. This software, which is developed for General Command of Mapping, contains solutions such as visualization of raster, vector and elevation data on virtual globe, generation of continuous terrain model and performing visibility analysis, profile generation, operations planning on this model, serving and consuming data compatible to OGC WMS and WFS standards and development of application programming interface for potential future requirements such as meteorological analysis, threat analysis, floating map system. Keywords: 3D, Digital Elevation Model, GIS, Simulation, Virtual Globe 1. GİRİŞ 3 boyutlu görselleştirme, özellikte arazinin çok önemli bir unsur olduğu askeri alanda, son kullanıcı açısından 2 boyutlu görselleştirmeye oranla daha tatmin edici sonuçlar ortaya çıkmasını sağlamaktadır. Bu alanda çözüm sunan yazılımlar, günümüzde gittikçe daha fazla alanda kullanılmakta, bu da yeni kullanıcı beklentileri oluşmasına neden olmaktadır. HGK için geliştirilen 3 boyutlu sanal küre yazılımına, Glonet’e, de bu nedenlerden ötürü ihtiyaç duyulmuştur. HGK tarafından belirlenen gereksinimler, 4 ana başlık üzerinde toplanmıştır. Bunlar aşağıda özetlenmiştir. Bu bildiride, 3 numaralı ileri istemci yazılımı geliştirme sırasında çözülen problemler ve elde edilen deneyimler detaylandırılacak, diğer bileşenlerden bilgilendirme amacı ile söz edilecektir. Yazılım Bileşenleri: 1. Coğrafi veri sunum yazılımı OGC standartlarında veri sunan, 250 eş zamanlı isteğe yanıt verebilen, raster, vektör ve yükseklik katmanlarını güvenlik ayarları ile sunan, performans ve kullanım istatistikleri oluşturabilen, web tabanlı sunum yazılımıdır. 2. Basit istemci yazılımı Web browser üzerinde çalışan, raster ve vektör verileri görüntüleyen ve sorgulayan, katman yönetimi arayüzü bulunan istemci yazılımıdır. 3. İleri istemci yazılımı Sunucudan aldığı yükseklik verilerini kullanarak sanal küre üzerinde kesintisiz arazi modeli oluşturan, bu model üzerinde sunucudan gelen raster verileri doku olarak kaplayan ve vektör verileri gösteren temel yazılım bileşenidir. OGC WMS ve WFS standartlarındaki verilere ek olarak, KML/KMZ ve SHP formatındaki verileri destekler, katman yönetimi desteği sunar. Bunların yanında ölçümleme, hareket planı oluşturma, kesit alma, görüş analizi yapma işlevlerine sahiptir ve tüm bu yetenekleri aynı zamanda API olarak da sunar. 4. Uygulama geliştirme arayüzü Sunucu ve istemci işlevselliğini API olarak sunan, C++, C#, COM destekli tüm dillerde programlanabilen, yeni komutlar, menüler ve analizler ekleme, kullanıcı arayüzlerinde değişiklik yapma gibi gereksinimleri karşılan uygulama geliştirme kütüphanesidir. 2. COĞRAFİ SUNUM YAZILIMI Coğrafi Sunum Yazılımı gereksinimlerinin birçoğu Netgis Server üzerinde var olduğu için, sıfırdan bir yazılım geliştirilmemiştir. Sadece, yükseklik verilerinin sunumu için Netgis Server’a eklenti yapılması gerekmiştir. Yükseklik verilerinin sunumu konusunda geliştirilmesi gereken çözüm için temel gereksinimlerin en önemlileri; eş zamanlı 250 istemci desteğini sağlayacak ölçüde yüksek performans ile verilerin sunulabilmesi, kurumun elinde bulunan STRM, DTED gibi veri türlerinin desteklenmesidir. Bu gereksinimleri karşılamak için kullanılacak çözüm yükseklik verilerinin önceden karolar halinde oluşturup sunulmasına dayanmaktadır. Bu çözüm, web sunucunun işlem yükünü azalttığı için sunum performansının en üst seviyeye çıkmasını sağlamaktadır. Yapılan testlerde sistemin 10 saat süre ile 250 eş zamanlı isteğe yanıt verdiği gözlenmiştir. 3. BASİT İSTEMCİ YAZILIMI Basit istemci gereksinimleri de Netgis Server tarafından karşılandığı için bu bileşen için bir geliştirme yapılmamıştır. 4. İLERİ İSTEMCİ YAZILIMI İleri istemci 3 boyutlu sanal küre olması itibari ile en önemli yazılım bileşenidir. Bu bileşende teknik karmaşıklık seviyesi yüksek birçok probleme çözüm geliştirilmeye çalışılmıştır. Aşağıda bu konuların detayları paylaşılmaktadır. 4.1. Arazi Modeli Oluşturma Arazi modeli, askerî bir harekât için vazgeçilmez bir unsur olan arazinin kullanıcılara basit ve etkili biçimde sunulabilmesini sağlamaktadır. Bu modeli etkin bir yöntemle oluşturma çözülmesi gereken en temel problemlerden bir tanesidir. Bir grid seklinde düşünülebilecek yükseklik verisini arazi görselleştirmek için kullanmadan önce yüzeylere dönüştürmek gerekmektedir. Genelde bu, her üç noktaya karşılık gelen yükseklik verisinden bir üçgen oluşturarak yapılır. Bu işleme üçgenleme (triangulation) denir. Üçgen model ile arazi modellenebilir ancak tüm dünyanın yükseklik verisinden üçgen model oluşturmak ve bunu görselleştirmek uygulanabilir bir yöntem değildir. Verilerin gösterim yapılan ölçeğe göre uygun detaydaki halinin kullanılması ve bu hale kabul edilebilir sürede getirilebilmesi gerekmektedir. Bu durum dörtlü ağaç yapısı (Şekil–la) kullanmayı gerekli kılmıştır. [1] a) Ağaç Gösterimi b)Arazi Gösterimi c)Eleman - Arazi Şekil 1 Dörtlü Ağaç Dörtlü ağaç yapısında her bir elemanın temsil ettiği karesel alan, ait olunan üst seviye elemanın alanının ¼ üne karşılık gelir (Şekil-1b). Arazi bu şekilde her seferinde 4’e bölünerek ağaç yapısı üzerine yerleştirilirken, bölünmenin sonlandırılması için elde edilmek istenen detay seviyesi ve görülen bölge içerisinde kalan alan dikkate alınır. Burada kritik konu, modelin sürekliliğinin sağlanması ve komşular arasında boşlukların oluşmaması için, alt seviye elemanların uygun şekilde üçgenlere ayrılması ve ekrana çizilmesi gerektiğidir. Kullanılan algoritma, ağaç oluşturulurken, alt seviye elemanların komşularıyla aralarındaki detay seviye farkını belirli bir bölge için bir alt veya bir üst seviye ile sınırlandırır. Belirlenen bölge dışında en hızlı bozulma sağlanarak etkin alanda daha fazla üçgen modellenebilmesi sağlanır. Elde edilen en alt seviye elemanlar, temsil ettikleri kareleri köşegenlerinden bölmek suretiyle en az 4 ayrı üçgen, ya da komşu düğüm detay seviyesi göz önüne alınarak, bu üçgenlerin bazılarının veya hepsinin tekrar bölünmesiyle en fazla 32 ayrı üçgen olarak ekrana çizilir ve 5x5 noktadan oluşur. (Şekil–1c). Böylece poligon sayısı azaltılıp performans artışı sağlanırken, ekranda görülen arazi yüzeyi üzerinde bozulma olmadan detay seviyesi yüksek tutulabilmektedir. [2] Dörtlü ağaç yapısındaki en büyük problemlerden bir tanesi bölünmeleri kontrol altına almaktır. Daha fazla yükseklik detayını daha az sistem kaynağı kullanarak göstermek için görüş piramidi (Şekil 2) dışarısında kalan karoları daha fazla bölmemek ilk tercih edilen yöntem olmuştur. Bu yöntem görüş piramidi dışında bir bölgeye yönelindiğinde hazır olmayan yükseklik ve raster verileri nedeniyle sürekliliğin kaybolmasına neden olmuştur. Kullanıcıları çok fazla rahatsız etmese de sürekliliği daha gerçekçi hale getirmek için görüş piramidi sınırlarına doğrudan bağlı olmayan farklı algoritmalar uygulanmıştır. İzlenen yöntemde izlenilmekte olan bölgede her seviye için bir küre oluşturulmaktadır. Bölmeye çalışılan karo bu bölge içerisinde ise daha alt seviyelere bölünmektedir. Bu ekranda seviye sayısı kadar görüş piramidi olması şeklinde düşünülebilir. Bu yöntemle izlenmekte olan bölge en fazla üçgeni kullanarak gösterilebilmektedir. [3] Şekil 2 Görüş Piramidi Bir diğer problem ise sunucu üzerinde yükseklik ve raster verilerin ne kadar detaylandığı, dörtlü ağacın bölünmesinin ne zaman duracağı konusudur. Başlangıçta OGC karo servis standartlarında da var olan her bölge için belirlenen seviye meta verilerinin kullanılması tercih edilmiştir. Raster yükseklik verisi sunan diğer sunucular için bu yöntemi desteklemeye devam edilmektedir. Gerçekte özellikle raster veriler düzensiz bir şekilde detaylanmaktadır. Bu detaylanmayı metaveriler ile elde etme, sunucuya sorma, sunucudan verisi bulunmayan karo için bilgi isteme gibi ağ trafiğini artıran yöntemler yerine istemciye karo/karolar için gönderilen verilerde bölünecek karolar için meta veri kullanmak uygun görülmüştür. 4.2. Karo Verilerin Hazırlanması Karoları gerçek zamanlı oluşturmak sunucu yükünü artıracaktır. Bu nedenle yükseklik ve raster verilere ait karoları önceden hazırlama yöntemi tercih edilmiştir. Yükseklik verilerinin dörtlü ağaç üzerindeki her seviye için hazırlanması yerine bir kaç seviye için büyütülmüş karolar kullanılması sağlanmıştır. Bu şekilde, yapılan indirme isteği sayısı optimize edilerek performans artışı elde edilmiştir. Raster verilerin karolarının her seviye için hazırlanması tercih edilmiştir. Ana katman için hazırlanan raster karolar bir alt seviyeye geçiş için veri bulunup bulunmadığına ait metaveriyi içerecek şekilde hazırlanmıştır 4.3. Temel Akış Diyagramı Uygulama Netcad 3D+ modülü üzerinde geliştirilmiştir. API üzerinde kullanımı üst seviyede tutmak için merkezde küre katmanını yönetmeyi sağlayan IGlobe nesnesi gerçeklenmiştir. Bu nesne 3D+ üzerindeki olayları yakalayıp çizilecek katmanlara olayları bildirmek ile görevlendirilmiştir. Çizim amacı ile kullanan katmanlar için IGlobeRenderable arayüzü hazırlanmıştır. Bu mimari, farklı katmanların farklı yöntemler ile gerçeklenmesine olanak sağlamaktadır. Genel akış aşağıda görülebilir. (Şekil 3) Şekil 3 Temel İş Akışı 4.4. Vektörlerin Gösterilmesi ve Araziye Uydurulması Birçok uygulamada vektör verilen araziye tam olarak uydurulmamakta, vektör veri üzerinde alınan belirli örnekler araziye uydurularak modellenmektedir. Belirli örnekler alarak modelleme istemci performansını artırmakta, fakat vektör veriler kaba bir modelleme yapılmasına yol açmaktadır. Bu nedenle bu projede görüntü kalitesi için arazi üzerindeki her bir üçgen ile kesişimleri hesaplayan yöntemler sunulmuştur.[4] Ayrıca performansı ön planda tutulan verilerde sıkça kullanılan belirli örneklerin araziye uydurulması tercih edilmiştir. 4.5. Etiketleme Dörtlü ağaç üzerinden elde edilen etiket verileri sayıca oldukça fazla olabilmektedir. Bu etiketleri belirli bir öncelik ve mesafe sırasına göre süzerek göstermek performans artırmak için kaçınılmazdır. Bu sıralama ve süzme işlemleri için RTree kullanılmıştır. RTree, BTree ailesinden gelen ve konumsal nesneleri indekslemede kullanılan dengeli bir ağaç yapısıdır. İndekslemede nesneleri çevreleyen dikdörtgenler kullanılır ve sorgulamada önemli bir performans kazanımı sağlanır. (Şekil 4) Şekil 4 R-Tree Süzme işlemi ne kadar performanslı olursa olsun asıl performans kaybı etiketlerin gösterilmesi sırasında ortaya çıkmaktadır. Etiketleri üçgenlenmiş vektörler olarak göstermek veya platformun sağladığı font desteğini kullanmak istenen performansa ulaşmayı sağlamamıştır. Bu nedenle bitmap font kullanımı tercih edilmiştir. Bu yöntemle her bir karakter tek bir bitmap üzerine konumu bilinen bir alanda yer almaktadır. Bitmap doku (texture) olarak belleğe alınıp etiketler listeler kullanılarak gösterilmektedir. [5] 4.6. Kullanıcı Arayüzleri ve Çok Kanallı Programlama ( Multithreading ) Küre uygulamasında tüm yükseklik ve raster verileri istemcide olsa dahi modeli çizim (render) sırasında oluşturmak, ağacın dallanmasını aynı kanalda çalışan bir metot üzerinde tamamlamak kullanıcı arayüzünde beklemelere neden olacaktır. Bu nedenle verinin sunucudan indirilmesi, dörtlü ağacın detaylanması, üçgen modelin hazırlanması, raster verinin ve yükseklik verisinin belleğe alınması, işlenmesi gibi zaman alan işlemler bağımsız kanallar üzerinde yapılmıştır. Bu kanalların önceliği çizim işleminin yapıldığı kanaldan daha düşüktür. Bu sayede kullanıcı hazır olan veriyi herhangi bir takılma olmadan görebilmektedir. Çok kanallı programlama birden fazla kanalın aynı anda aynı veriye ulaşmasına olanak verir. Bu durum bir kanal veriyi güncellemeye çalışmadığı sürece faydalıdır. Küre uygulamasında veriler ve detaylar sürekli değişmektedir. Bir kanalın artık gerekmeyen bir karo için çalışması kritik olan işlemci kaynağını boşa kullanmaya neden olacaktır. Çizim için hazır bir verinin arazi sürekliliği için güncellenmesi ile çizilmesi aynı sırada yapılırsa uygulama yarı doğru bir çizim yapabilecek veya artık bellekte olmayan bir üçgeni çizmeye çalışıp hata oluşmasına neden olabilecektir. Artık üzerinde çalışılması gerekmeyen veriler için kanalın iptal edilmesi, sistem kaynaklarının aşılmasına neden olacak kadar kanalın oluşturulmaması için IThreadManager hazırlanıp gerçeklenmiştir. IThreadManager ile IGlobe üzerindeki hiç bir katmanın ayrıca bir kanal kodlaması yapması gerekmemektedir. Aynı verinin birden fazla kanal üzerinde kullanılmasına engel olmak için karo sınıfları ile birlikte kilitlenebilecek nesneler sunulmuştur. Veri değiştiren veya veri değişiminde hata oluşabilecek parçalar bu nesneleri kilitleyerek farklı bir kanalın veriye erişimine engel olur. Eğer nesneler uzun süre kilitlenirse çizim sırasındada nesneye ulaşılamayacağından takılmalar oluşacaktır. Nesneler mümkün olan en kısa sürede kilitli tutulmalıdır. 4.7. Birlikte çalışabilirlik Sunulan verilerin başka sistemler tarafından da kullanılabilmesi ve başka sistemler tarafından sunulan verilerin bu sistemde kullanılabilmesi bu projedeki birlikte çalışabilirlik hedeflerini özetlemektedir. Projedeki hem sunucu hem de istemci yazılımları aşağıdaki tablodaki standart ve verileri desteklemektedir. OGC WMS Web Map Service (Web Harita Servisi) Open Geospatial Consortium tarafından tanımlanan, haritaları web üzerinden imaj olarak sunma konusundaki standarttır. OGC WFS Web Feature Service (Web Özellik Servisi) Open Geospatial Consortium tarafından tanımlanan, web üzerinden haritaları vektör ve öznitelik kümesi paylaşmaya ve sorgulamaya imkan veren standarttır. KML Google tarafından geliştirilen, daha sonra OGC standardı olmuş, coğrafi verileri iki ve üç boyutlu görüntüleyicilerde görüntülenebilecek şekilde tanımlayan dosya formatıdır. SHP Esri tarafından geliştirilen popüler konumsal veri formatıdır. Oracle Spatial Oracle veritabanında tutulan, konumsal bilgileri ve yer bilgilerini sorgulama, sunma, güncelleme imkanı veren veri şemasıdır. SQL Server 2008 Microsoft SQL Server veritabanında tutulan, konumsal bilgileri ve yer bilgilerini sorgulama, sunma, güncelleme imkanı veren veri şemasıdır. Postgis PosgreSQL veritabanında tutulan, konumsal bilgileri ve yer bilgilerini sorgulama, sunma, güncelleme imkanı veren veri şemasıdır. 4.8. Analizler Arazinin 3 boyutlu olarak görselleştirilmesi arazinin tanınması için yeterli olsa da bazı durumlarda daha kesin sonuçlara gerek duyulmaktadır. Örneğin, iki nokta arasındaki arazi kesiti üzerinden belli bir rota üzerindeki maksimum eğimin öğrenilmesi gerekebilir (Şekil 5-a) ya da bir gözlemcinin arazi üzerinde gördüğü ve göremediği noktalar kesin olarak görülmek istenebilir. (Şekil 5-b) a) Kesit Analizi b)Görüş Analizi Şekil 5 Arazi Modeli Üzerinde Yapılan Analizler Bu analizler, sisteme modül olarak eklenmiştir. Her iki analiz, Glonet API üzerinden yükseklik verilerine erişmekte, kullanıcıdan alınan noktalara ve kriterlere göre yükseklik verisinden örnekler almaktadır. 5. UYGULAMA GELİŞTİRME ARAYÜZÜ Glonet uygulama geliştirme arayüzü tasarlanırken, yazılımın kullanıcı gereksinimleri doğrultusunda özelleştirilebilmesini sağlayan bir API sunmanın yanında, modül desteği olması da sağlanması gereken koşul olarak dikkate alınmıştır Yazılım API’si, programın tüm yeteneklerinin uygulama geliştiriciler tarafından kullanılabilmesini, aynı zamanda da tüm özelliklerin özelleştirilebilmesini hatta baştan yazılabilmesini sağlayacak detayda hazırlanmıştır Bu konu, programın açık ve birlikte çalışabilir olmasının ön koşullarından biri olarak görüldü. Bu API üzerinden yazılım geliştiren kişi, programın arayüzünü değiştirebilecek, çizimlerin QuadTree den farklı bir yapı üzerinden yönetilmesini sağlayabilecek, görüş analizi algoritmasını baştan yazabilecek ya da yeni analizler ekleyebilecektir. Modüler yapı sayesinde Glonet’e çalışma zamanında yeni modüller yüklenebilir hale gelinmiştir. Bu modüller de tüm API’ye erişebilmektedir. 6. SONUÇ İstemci üzerinde mümkün olan en az veri ile çalışmak performansı artıracak, ağ trafiğini azaltacaktır. Model hazırlama, veri indirme, çizim gibi işlemlerin eş zamanlı yapılması kullanıcı açısından sürekliliği ve gerçek zaman hissini sağlamak için gereklidir. Gerçekçi görüntüler oluşturmak CPU yükünü artıracak, uygulamanın yavaş çalışmasına neden olacaktır. Donanım destekliyorsa işlem yükünün bir kısmını Shader gibi teknolojiler ile GPU’ya yüklemek kullanıcı açısından daha seri uygulamalar hazırlanabilmesine olanak verecektir. Küre modelleme sırasında dörtlü ağacın detaylanması performans açısından en kritik konu olsa da tüm bileşenlerin işlemci üzerinde bir yük oluşturacağı dikkate alınarak uygulama geliştirilmeli, mümkün yerlerde işlem yükünün bir kısmı grafik kartı ile paylaşılmalıdır. Bu bize çok düşük donanımlı sistemlerde çalışma olanağı sağlar. Ayrıca yüksek donanımlı sistemlerde daha gerçekçi görüntüler elde edilebilmesine de olanak verir. 7. KAYNAKÇA [1] Selçuk SÜMENGEN, Selim BALCISOY (2004), Hava ve Kara Araç Gruplarının Detaylı Arazi Verisi Üzerinde Gerçek Zamanlı Simülasyonu Willem H. de Boer (2000), Fast Terrain Rendering Using Geometrical MipMapping Andreas Örgen (2000), Continuous Level of Detail In Real-Time Terrain Rendering Christian Dick, Jens Krüger, and Rüdiger Westermann (2009), GPU Ray-Casting for Scalable Terrain Rendering Steve Baker (2002), Fast Text in OpenGL [2] [3] [4] [5]
Benzer belgeler
DEM vs TIN - sercanerhan
This paper explains experiences in development of 3D virtual globe software which can
be used for decision support, conceptual modeling and simulation and visualization
purposes. This software, whi...