OGR/GDAL Virtual Formatı (Raster)

Önceki yazımda OGR/GDAL Virtual Formatı (Vektör) vektör veriler için geliştirilmiş VRT formatının özelliklerinden bahsettim. Bu yazımda da raster verilere yönelik geliştirilmiş VRT formatının özelliklerine değineceğim. Raster VRT formatı, veri tipi dönüşümü (Byte, Float, Int), çok bandlı görüntü (layer stack) oluşturma, mozayik oluşturma, boş hücre (null) tanımlama gibi çeşitli özelliklere sahiptir.

Raster VRT formatındaki tanımlamalar vektör VRT formatına göre daha karmaşıktır. Bu yüzden el ile oluşturmak yerine kolaylık sağlaması açısından gdalbuildvrt aracı geliştirilmiştir. Komut satırından çalışan bu aracı  kullanarak kolay bir şekilde raster VRT dosyaları oluşturabilirsiniz. Gdalbuildvrt aracı gdal kurulumu ile gelmektedir. Ayrıca QGIS ortamında Raster > Miscellaneous > Build Virtual Raster (Catalog) aracını da kullanarak VRT dosyaları oluşturabilirsiniz

Örnekler

Mozayik Oluşturma

Aşağıdaki örnekte dört tane Aster GDEM katmanı kullanarak mozayik oluşturulmuştur. Bu işlemde QGIS Build Virtual Raster kullanılmıştır. Araca ait ekran görüntüsü ve oluşturulan VRT tanımlaması aşağıda gösterilmiştir.

<VRTDataset rasterXSize="7201" rasterYSize="7201">
  <SRS>GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4326"]]</SRS>
  <GeoTransform> 3.1999861111111112e+001, 2.7777777777777778e-004, 0.0000000000000000e+000, 3.6000138888888891e+001, 0.0000000000000000e+000,-2.7777777777777778e-004</GeoTransform>
  <VRTRasterBand dataType="Int16" band="1">
    <ColorInterp>Gray</ColorInterp>
    <SimpleSource>
      <SourceFilename relativeToVRT="0">E:/gecici/VRT/veri/ASTGTM2_N34E032_dem.tif</SourceFilename>
      <SourceBand>1</SourceBand>
      <SourceProperties RasterXSize="3601" RasterYSize="3601" DataType="Int16" BlockXSize="3601" BlockYSize="1" />
      <SrcRect xOff="0" yOff="0" xSize="3601" ySize="3601" />
      <DstRect xOff="0" yOff="3600" xSize="3601" ySize="3601" />
    </SimpleSource>
    <SimpleSource>
      <SourceFilename relativeToVRT="0">E:/gecici/VRT/veri/ASTGTM2_N34E033_dem.tif</SourceFilename>
      <SourceBand>1</SourceBand>
      <SourceProperties RasterXSize="3601" RasterYSize="3601" DataType="Int16" BlockXSize="3601" BlockYSize="1" />
      <SrcRect xOff="0" yOff="0" xSize="3601" ySize="3601" />
      <DstRect xOff="3600" yOff="3600" xSize="3601" ySize="3601" />
    </SimpleSource>
    <SimpleSource>
      <SourceFilename relativeToVRT="0">E:/gecici/VRT/veri/ASTGTM2_N35E032_dem.tif</SourceFilename>
      <SourceBand>1</SourceBand>
      <SourceProperties RasterXSize="3601" RasterYSize="3601" DataType="Int16" BlockXSize="3601" BlockYSize="1" />
      <SrcRect xOff="0" yOff="0" xSize="3601" ySize="3601" />
      <DstRect xOff="0" yOff="0" xSize="3601" ySize="3601" />
    </SimpleSource>
    <SimpleSource>
      <SourceFilename relativeToVRT="0">E:/gecici/VRT/veri/ASTGTM2_N35E033_dem.tif</SourceFilename>
      <SourceBand>1</SourceBand>
      <SourceProperties RasterXSize="3601" RasterYSize="3601" DataType="Int16" BlockXSize="3601" BlockYSize="1" />
      <SrcRect xOff="0" yOff="0" xSize="3601" ySize="3601" />
      <DstRect xOff="3600" yOff="0" xSize="3601" ySize="3601" />
    </SimpleSource>
  </VRTRasterBand>
</VRTDataset>

Çok Bandlı Görüntü Oluşturma (Layet Stack)

Aşağıda ayrı ayrı bulunan bandları bir araya getirerek çok bandlı görüntü gibi davranmasını sağlayan tanımlama verilmiştir. Örnekte Landsat 7 uydusuna ait bandlar kullanılmıştır. Her bir band <VRTRasterBand> tagı ile ayrı ayrı tanımlanmıştır.

<VRTDataset rasterXSize="7871" rasterYSize="7121">
  <SRS>PROJCS["WGS 84 / UTM zone 37N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",39],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","32637"]]</SRS>
  <GeoTransform> 3.4078500000000000e+005, 3.0000000000000000e+001, 0.0000000000000000e+000, 4.2558150000000000e+006, 0.0000000000000000e+000,-3.0000000000000000e+001</GeoTransform>
  <VRTRasterBand dataType="Byte" band="1">
    <ColorInterp>Red</ColorInterp>
    <SimpleSource>
      <SourceFilename relativeToVRT="1">L5173034_03419850801_B30.TIF</SourceFilename>
      <SourceBand>1</SourceBand>
      <SourceProperties RasterXSize="7871" RasterYSize="7121" DataType="Byte" BlockXSize="7871" BlockYSize="1" />
      <SrcRect xOff="0" yOff="0" xSize="7871" ySize="7121" />
      <DstRect xOff="0" yOff="0" xSize="7871" ySize="7121" />
    </SimpleSource>
  </VRTRasterBand>

  <VRTRasterBand dataType="Byte" band="1">
    <ColorInterp>Green</ColorInterp>
    <SimpleSource>
      <SourceFilename relativeToVRT="1">L5173034_03419850801_B20.TIF</SourceFilename>
      <SourceBand>1</SourceBand>
      <SourceProperties RasterXSize="7871" RasterYSize="7121" DataType="Byte" BlockXSize="7871" BlockYSize="1" />
      <SrcRect xOff="0" yOff="0" xSize="7871" ySize="7121" />
      <DstRect xOff="0" yOff="0" xSize="7871" ySize="7121" />
    </SimpleSource>
  </VRTRasterBand>

  <VRTRasterBand dataType="Byte" band="1">
    <ColorInterp>Blue</ColorInterp>
    <SimpleSource>
      <SourceFilename relativeToVRT="1">L5173034_03419850801_B10.TIF</SourceFilename>
      <SourceBand>1</SourceBand>
      <SourceProperties RasterXSize="7871" RasterYSize="7121" DataType="Byte" BlockXSize="7871" BlockYSize="1" />
      <SrcRect xOff="0" yOff="0" xSize="7871" ySize="7121" />
      <DstRect xOff="0" yOff="0" xSize="7871" ySize="7121" />
    </SimpleSource>
  </VRTRasterBand>
</VRTDataset>

Boş Hücre Tanımlama

Bu örnekte istenilen değer boş (null, nodata) olarak tanımlanmıştır. Mesela Landsat görüntülerinde rektifikasyondan dolayı oluşan siyah bölgeler “0” değerindedir. <NODATA > tagı ile bu bölgeler boş olarak tanımlanır.

<VRTDataset rasterXSize="7871" rasterYSize="7121">
  <SRS>PROJCS["WGS 84 / UTM zone 37N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",39],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","32637"]]</SRS>
  <GeoTransform> 3.4078500000000000e+005, 3.0000000000000000e+001, 0.0000000000000000e+000, 4.2558150000000000e+006, 0.0000000000000000e+000,-3.0000000000000000e+001</GeoTransform>
  <VRTRasterBand dataType="Byte" band="1">
    <ColorInterp>Gray</ColorInterp>
    <ComplexSource>
      <SourceFilename relativeToVRT="1">L5173034_03419850801_B10.TIF</SourceFilename>
      <SourceBand>1</SourceBand>
      <SourceProperties RasterXSize="7871" RasterYSize="7121" DataType="Byte" BlockXSize="7871" BlockYSize="1" />
      <SrcRect xOff="0" yOff="0" xSize="7871" ySize="7121" />
      <DstRect xOff="0" yOff="0" xSize="7871" ySize="7121" />
	  <NODATA>0</NODATA>
    </ComplexSource>
  </VRTRasterBand>
</VRTDataset>

Veri Tipi Dönüşümü (Data Type)

Raster veri tipleri arasındaki dönüşüm VRT formatında tanımlanarak kolayca gerçekleştirilebilir. Float32 tipindeki bir raster verinin Int16 tipine dönüştürülmesi aşağıdaki örnekte örnekte gösterilmiştir. <VRTRasterBand> tagındaki “dataType” özniteliğinde dönüştürülecek veri tipi belirtilir.

<VRTDataset rasterXSize="634" rasterYSize="477">
  <SRS>PROJCS["NAD27 / UTM zone 13N",GEOGCS["NAD27",DATUM["North_American_Datum_1927",SPHEROID["Clarke 1866",6378206.4,294.9786982139006,AUTHORITY["EPSG","7008"]],AUTHORITY["EPSG","6267"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4267"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-105],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","26713"]]</SRS>
  <GeoTransform> 5.8998000000000000e+005, 3.0000000000000000e+001, 0.0000000000000000e+000, 4.9280100000000000e+006, 0.0000000000000000e+000,-3.0000000000000000e+001</GeoTransform>
  <VRTRasterBand dataType="Int16" band="1">
    <NoDataValue>-9.99999993381581E+036</NoDataValue>
    <ColorInterp>Gray</ColorInterp>
    <ComplexSource>
      <SourceFilename relativeToVRT="1">sfdemFloated.tif</SourceFilename>
      <SourceBand>1</SourceBand>
      <SourceProperties RasterXSize="634" RasterYSize="477" DataType="Float32" BlockXSize="634" BlockYSize="3" />
      <SrcRect xOff="0" yOff="0" xSize="634" ySize="477" />
      <DstRect xOff="0" yOff="0" xSize="634" ySize="477" />
    </ComplexSource>
  </VRTRasterBand>
</VRTDataset>

Çok Bandlı Görüntüden İstenilen Bandın Çıkarılması

Aşağıda çok bandlı bir görüntüden istenilen bir bandı ayrı olarak nasıl tanımlanacağı gösterilmiştir. Bu sayede büyük boyuttaki çok bandlı görüntüler kolay bir şekilde bandlara ayrılabilir. İlgili bandı belirtmek için <SourceBand> tagı kullanılır.

<VRTDataset rasterXSize="7871" rasterYSize="7121">
  <SRS>PROJCS["WGS 84 / UTM zone 37N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",39],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","32637"]]</SRS>
  <GeoTransform> 3.4078500000000000e+005, 3.0000000000000000e+001, 0.0000000000000000e+000, 4.2558150000000000e+006, 0.0000000000000000e+000,-3.0000000000000000e+001</GeoTransform>
  <VRTRasterBand dataType="Byte" band="1">
    <ColorInterp>Grey</ColorInterp>
    <SimpleSource>
      <SourceFilename relativeToVRT="1">MultiBand.tif</SourceFilename>
      <SourceBand>2</SourceBand>
      <SourceProperties RasterXSize="7871" RasterYSize="7121" DataType="Byte" BlockXSize="7871" BlockYSize="1" />
      <SrcRect xOff="0" yOff="0" xSize="7871" ySize="7121" />
      <DstRect xOff="0" yOff="0" xSize="7871" ySize="7121" />
    </SimpleSource>
  </VRTRasterBand>
  </VRTDataset>
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s