QGis Save Raster kodunu Rendered Image olarak kullanmaya çalıştım . i
bir raster katmanıdır:
pipelayer = i
pipeextent = pipelayer.extent()
pipewidth, pipeheight = (pipelayer.width(),
pipelayer.height())
piperenderer = pipelayer.renderer()
pipeprovider = pipelayer.dataProvider()
crs = pipelayer.crs().toWkt()
pipe = QgsRasterPipe()
pipe.set(pipeprovider.clone())
pipe.set(piperenderer.clone())
pipedFile = os.path.join(tempfile.gettempdir(),
safeLayerName + '_pipe.tif')
print pipedFile
file_writer = QgsRasterFileWriter(pipedFile)
file_writer.writeRaster(pipe,
pipewidth,
pipeheight,
pipeextent,
pipelayer.crs())
in_raster = pipedFile
prov_raster = os.path.join(tempfile.gettempdir(),
'json_' + safeLayerName +
'_prov.tif')
out_raster = dataPath + '.png'
crsSrc = i.crs()
crsDest = QgsCoordinateReferenceSystem(4326)
xform = QgsCoordinateTransform(crsSrc, crsDest)
extentRep = xform.transform(i.extent())
extentRepNew = ','.join([unicode(extentRep.xMinimum()),
unicode(extentRep.xMaximum()),
unicode(extentRep.yMinimum()),
unicode(extentRep.yMaximum())])
processing.runalg("gdalogr:warpreproject", in_raster,
i.crs().authid(), "EPSG:4326", "", 0, 1,
5, 2, 75, 6, 1, False, 0, False, "",
prov_raster)
processing.runalg("gdalogr:translate", prov_raster, 100,
True, "", 0, "", extentRepNew, False, 0,
0, 75, 6, 1, False, 0, False, "",
out_raster)
İşe yaramaz, bunun yerine bana nihai çıktı olarak sökülmemiş raster verir. Çıktısı çünkü gerçekten sorunu anlamıyorum writeRaster
(dosyaya pipedFile
) olduğu tarz Yukarıda bağlantılı cevabını süreç çalışıyor bu yüzden. Sadece GDAL'leri çalıştırmak için çıktı görüntüsünü kullanmaya çalıştığımda warpreproject
ve bir translate
şekilde steril olmayan rasterlere geri dönüyor.
Neyi yanlış yaptım?
GÜNCELLEME : çıktısının QgsRasterFileWriter
biçimi belirlenir . Çıktısı warpreproject
olan değil tarz, ama .tif
bir eşlik eder .aux.xml
İçinde renk bilgilere sahip gibi görünüyor dosyası:
<PAMDataset>
<PAMRasterBand band="1">
<Histograms>
<HistItem>
<HistMin>-0.498046875</HistMin>
<HistMax>255.498046875</HistMax>
<BucketCount>256</BucketCount>
<IncludeOutOfRange>0</IncludeOutOfRange>
<Approximate>1</Approximate>
<HistCounts>314|4|3|2|3|5|4|4|5|8|10|9|16|16|23|26|37|46|58|62|69|77|77|94|127|94|131|136|133|162|169|172|171|184|200|186|207|196|186|177|179|194|182|182|178|177|181|195|196|196|195|195|179|226|206|215|193|197|202|212|207|206|232|204|229|253|233|240|248|234|234|268|240|238|259|286|268|287|259|264|255|267|268|271|256|321|277|284|317|286|290|277|312|334|319|325|323|310|349|357|347|326|337|338|336|383|374|349|411|382|382|417|406|405|414|427|404|434|447|430|468|424|446|442|450|461|448|458|457|459|412|414|469|466|443|475|464|472|481|519|504|458|473|481|514|523|522|494|542|580|604|623|686|648|707|763|808|799|819|853|932|1046|1062|1118|1145|1215|1293|1393|1335|1392|1390|1317|1232|1247|1215|1088|1032|896|847|731|708|666|608|634|556|500|484|456|433|408|406|401|386|388|414|414|387|382|340|346|382|385|368|348|334|376|359|318|339|326|357|315|319|357|333|328|329|310|344|295|300|351|347|324|358|349|363|361|347|396|386|433|395|434|479|473|523|550|644|655|672|778|882|1014|1183|1400|1681|2075|2531|3529|4851|7235|10793|60773|7297|1999</HistCounts>
</HistItem>
</Histograms>
<Metadata>
<MDI key="STATISTICS_MAXIMUM">255</MDI>
<MDI key="STATISTICS_MEAN">203.31482680479</MDI>
<MDI key="STATISTICS_MINIMUM">0</MDI>
<MDI key="STATISTICS_STDDEV">63.158702013579</MDI>
</Metadata>
</PAMRasterBand>
</PAMDataset>
Çıktısı translate
olan değil tarz ve hiçbir ek dosyası vardır. Ancak, GeoTIFF değil bir PNG olduğu için belki de açıklama budur.
expand
Seçeneğine bakmayı denedim translate
, ama bu bana bir web tarayıcısında görüntülenmeyen görüntü dosyaları veriyor - nedenini araştırmadım.
GÜNCELLEME 2 : Hayır, hiçbir çıktı dosyası olmadanexpand
sonuçları kullanarak . Denemeyi merak ediyorum .pct2rgb
GÜNCELLEME 3 : Dosya kilitlemenin sorunlara neden olup olmadığını merak ediyorum. Olabilir mi?
gdalogr:translate
, değiştirmeyi deneyin prov_raster
ile prov_raster['OUTPUT']
.
prov_raster
bu dosyaya giden yolu içeren bir dize, bu yüzden anladımTypeError: string indices must be integers