GDAL'de yapılan GeoTIFF'lerin Arc / QGIS'e yüklendiğinde min / maks aralığı yoktur


11

GeoTIFF sürücüsü ile GDAL'de bazı kayan nokta rasterleri oluşturuyorum. Elde edilen görüntüleri QGIS veya Arc'a yüklediğimde, varsayılan semboloji min değerini -3.40282e38 ve maks. 3.40282e38'e koyar, böylece tarama tam olarak gri görünür. GeoTIFF'e gerçek aralığı doğrudan yazabilmemin bir yolu var mı? Böyle bir histogram oluşturmayı denedim:

rasterMin, rasterMax = raster.GetRasterBand(1).ComputeRasterMinMax()
raster.GetRasterBand(1).SetDefaultHistogram(rasterMin, rasterMax, 255)

Ama bağlayıcı bir sorun gibi görünüyor bir hata alıyorum:

  File "/usr/lib/python2.6/dist-packages/osgeo/gdal.py", line 846, in SetDefaultHistogram
    return _gdal.Band_SetDefaultHistogram(self, *args)
TypeError: not a sequence

Ne yapabileceğime dair herhangi bir öneriniz mi var, yoksa bir hata yapmışsam mı?

Yanıtlar:


8

Verileri oluşturuyorsanız, minimum ve maksimum değerleri anında takip edebilirsiniz. Kaynak veriler üzerinde doğrudan denetime sahip değilseniz, var olan verileri birleştiriyorsanız, kullanmanın ComputeRasterMinMax(0)iyi olduğunu varsayalım.

Her iki durumda da, min ve maks değerlerinizi aldıktan sonra SetStatistics(), bandı aramalı ve Noneher şeyin diske yazılmasını sağlamak için veri kümenizi bitirdiğinizde ayarladığınızdan emin olmalısınız .

Ayrıca, aklımın arkasındaki bir şey, dataset.GetRasterBand(1).<some band function>GDAL Python'un bant referanslarını işleme biçimi nedeniyle kullanmamın düzgün çalışmadığını söylüyor . Ayrıntıları hatırlayamıyorum, ancak GDALDev posta listesinde bir süre önce bir şey vardı. Bu yüzden açıkça bir bant değişkeni oluşturmak en iyisidir: band = dataset.GetRasterBand(1)sonra arayın band.SetStatistics(min, max, mean, stddev).


Teşekkürler, bu hile yaptı ve bağlam için teşekkürler. Bu arada, bant referansını problemsiz geçici bir değişken olmadan yerleştirebildim.
Zengin

band.ComputeStatistics(0)İstatistikleri de sakladığını unutmayın . Kolay bir 1 satır.
Mike T

1

GDAL kullanarak bunu yapmanın bir yolunun farkında değilim, ancak Arc'daki 'istatistikleri hesapla' aracını çağırmak için python kullanabilirsiniz.


2
Merhaba Cyrus, GIS.se'ye hoş geldiniz :) Doğru cevabınızın iki nedenden dolayı oy kullanması olası değildir. Arcpy hesaplama istatistikleri aracı, istatistikleri harici bir .aux dosyasına koyar ve "doğrudan geotiff'e" sorulan poster. İkincisi, başlıkta Arcgis'den bahsedilmesine rağmen, sorunun gövdesi ve etiketleri posterin bir gdal / qgis çözümü ile gerçekten daha fazla ilgilendiğini gösteriyor. Her durumda, katkıda bulunduğunuz için teşekkürler ve lütfen devam edin. Başlamak için biraz öğrenme eğrisi var ama sanırım zaman içinde bu çabanın kendini geri ödediğini göreceksin.
matt wilkie
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.