Bellek Dışı Arazi Akışı: Gigabaytlık Bir DEM Dizüstünde Nasıl Açılır
2 km × 2 km'lik bir sahanın 5 cm DEM'i 1,6 milyar kot taşır — 32 bit kayan noktayla 6,4 GB; çoğu ekran kartının belleğinden fazla. Bellek dışı (out-of-core) akış bunun mühendislik cevabıdır: yüzeyin tamamını parça parça okunabilecek biçimde diskte tut, bellekte yalnız ekranın gösterebileceğini tut. Bu yazı STREAM'in bunu nasıl yaptığını, her adımın arkasındaki sayılarla anlatıyor.
1. adım: döşemeli, çok çözünürlüklü kopya
Kaynak GeoTIFF ya da BigTIFF bir kez okunur ve yerel bir kopyaya çevrilir: sabit 512 × 512 karo düzeni ve genel bakış seviyeleri, kot Float32, ortofoto RGBA8, ZSTD sıkıştırmalı döşemeli BigTIFF olarak. Bir karo tablosu hangi karoların kurulduğunu tutar; kopya ancak bütün karolar kurulunca tamam sayılır.
40.000 × 40.000'lik bir DEM için bu, tam çözünürlükte 79 × 79 = 6.241 karo demektir; her biri Float32 olarak tam 1 MiB. Tek karoya kadar yarılamak yedi genel bakış seviyesi ekler — toplam 8.380 karo. Her karonun sabit bir kimliği (seviye, x, y) vardır; sonraki her şeyi adreslenebilir kılan budur.
| Büyüklük | Değer | Nereden çıkar |
|---|---|---|
| Tam çözünürlükte karo | 79 × 79 = 6.241 | 40.000 ÷ 512 = 78,1, yukarı yuvarlanır |
| Bir Float32 karonun boyutu | 1 MiB | 512 × 512 × 4 bayt |
| Genel bakışlar dahil seviye | 8 | 79 karodan 1'e yarılayarak |
| Bütün piramitteki karo | 8.380 | bütün seviyelerin toplamı |
| 1920 × 1080 ekran | ≈ 7,9 karoluk piksel | 2,07 milyon ÷ 262.144 |
2. adım: yalnız kameranın gördüğünü iste
Her karede kamera durumu bir istek kümesi üretir: bütün görünümü kaplayan sabitlenmiş kaba bir küme ve odaklandığınız yerde ayrıntı kümesi. Bunun dışındaki karolar ne çözülür, ne yüklenir, ne tutulur.
Belleği sınırlayan çizgi budur. 1920 × 1080'lik bir görünüm yaklaşık sekiz tam karo kadar piksel içerir; pay ve seviye karışımıyla çalışma kümesi onlarca karoda — onlarca megabaytta — kalır; dosya 200 MB da olsa 20 GB da.
3. adım: çizim iş parçacığının dışında, en yeniden başlayarak çöz
Çözme, arka plan tahmininden kritiğe beş öncelik seviyesi olan işler hâlinde, aynı anda uçuşta olabilecek iş sayısı sınırlı biçimde işçi iş parçacıklarında koşar. Her istek bir nesil taşır; kamera ilerleyince eski nesiller bitirilmek yerine iptal edilir; hızlı bir kaydırma kimsenin görmeyeceği karolardan bir kuyruk bırakmaz.
Yükleme sırası kamera odağını ve görünürlüğü izler. İnce karo hazır değilse üstündeki kaba karo onun yerini tutar — yüzey her zaman kapalıdır, karolar geldikçe ayrıntı keskinleşir.
4. adım: delik açmadan tahliye et
GPU atlası dolunca tahliye, gelen karoyla aynı ya da daha kaba seviyedeki karoları tercih eder, kamera odağına uzaklığı tartar ve kaba yedeği sağlayan sayfaları korur. Ayrıntıya yer açmak altındaki tabanı asla kaldırmaz.
Kot ve ortofoto, kendi yerleşimleri olan ayrı seyrek sayfa kümeleri olarak izlenir; ağır bir ortofoto araziyi kot karolarından aç bırakamaz.
Akış mühendis için neyi değiştirir
Maliyet ilk açılışa taşınır: dönüşüm iptal edilebilir bir ilerleme kartıyla bir kez koşar; sonra aynı ölçüm saniyeler içinde yeniden açılır. Aynı sahanın birden çok DEM'i tek bir sanal mozaikte birleşir — en üstteki geçerli piksel kazanır, NoData alttakine düşer — ve analizler çizilen o mozaiği okur.
Bunların hiçbiri sunucu istemez: dönüşüm, akış ve çizim yerel makinede, GPU'da Vulkan ile koşar; gigabaytlık bir ölçümün hiçbir yere yüklenmeden saha dizüstünde incelenebilmesini sağlayan budur.
Sık sorulan sorular
Arazi verisi için bellek dışı ne demek?
Veri seti diskte döşemeli, çok çözünürlüklü biçimde kalır ve yalnız o anki görünüm için gereken parçalar belleğe alınır. Belleği dosyanın boyutu değil, ekran sınırlar.
40.000 × 40.000'lik bir DEM'de kaç karo vardır?
512 × 512 karolarla tam çözünürlükte 79 × 79 = 6.241 karo, her biri Float32 olarak 1 MiB; yedi genel bakış seviyesiyle birlikte 8.380 karo.
İlk açılış neden daha uzun sürer?
Kaynak bir kez genel bakış seviyeli yerel döşemeli kopyaya çevrildiği için. Sonra çizici karoları doğrudan kopyadan okur; yeniden açmak saniyeler sürer.
Kaynaklar
STREAM'de arazi akışını görün
Yerel Windows · tamamen çevrimdışı · ücretsiz beta