আমি কিউজিস সেভ রাস্টার থেকে কোডটি রেন্ডার ইমেজ হিসাবে ব্যবহার করার চেষ্টা করেছি । i
একটি রাস্টার স্তর:
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)
এটি কার্যকর হয় না, পরিবর্তে আমাকে চূড়ান্ত আউটপুট হিসাবে আনস্টাইলযুক্ত রাস্টার প্রদান করে। আমি সত্যিই সমস্যা বুঝতে পারছি না, কারণ আউটপুট writeRaster
(ফাইল pipedFile
) করা হয় , স্টাইল, যাতে উত্তর উপরে লিঙ্ক থেকে প্রক্রিয়া কাজ করে যাচ্ছে। এটি ঠিক তখনই যখন আমি জিডিএল এর মাধ্যমে চালানোর জন্য আউটপুট চিত্রটি ব্যবহার করার চেষ্টা করি warpreproject
এবং translate
এটি কোনওরকম স্টাইলহীন রাস্টারগুলিতে ফিরে আসে।
আমি কি ভুল করেছি?
আপডেট : আউটপুট QgsRasterFileWriter
হয় স্টাইল। আউটপুট warpreproject
হয় না স্টাইল কিন্তু .tif
একটি দ্বারা সঙ্গে .aux.xml
এতে রঙ তথ্য আছে যা প্রদর্শিত ফাইল:
<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>
আউটপুট translate
হয় না স্টাইল, এবং কোন অতিরিক্ত ফাইল আছে। তবে এটি যেহেতু এটি কোনও পিএনজি জিওটিআইএফএফ নয়, সম্ভবত এটির ব্যাখ্যা।
আমি expand
বিকল্পটি দেখার চেষ্টা করেছি translate
, তবে এটি আমাকে এমন চিত্রযুক্ত ফাইল দেয় যা কোনও ওয়েব ব্রাউজারে প্রদর্শিত হয় না - আমি কেন তদন্ত করিনি।
আপডেট 2 : না, expand
ফলাফলের মোটেই কোনও আউটপুট ফাইল নেই । চেষ্টা করে ভাবছি pct2rgb
।
আপডেট 3 : আমি ভাবছি যদি ফাইল লক করা সমস্যা তৈরি করে। এটা হতে পারে?
gdalogr:translate
, প্রতিস্থাপন চেষ্টা prov_raster
সঙ্গে prov_raster['OUTPUT']
।
prov_raster
সেই ফাইলটির পথের সাথে কেবল একটি স্ট্রিং, তাই আমি পেয়েছিTypeError: string indices must be integers