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

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...

Detaylı