PyQGISまたはPythonを使用して多くのラスターを整列させますか?


8

PythonまたはPyQGISを使用して、多くのラスターをいくつかのピクセルサイズ、範囲、および投影システムで整列させたい。

最初に考えるのは、GDALを使用することです。

  1. gdalinfo(参照ラスターから情報を検索するため)

  2. gdalwarp(投影システムとピクセルサイズを変換するため)

  3. gdal_translate(範囲を変換するため)

それらは機能しますが、Pythonでこれらのツールを一緒に使用するのは簡単ではなく、この作業を完了するにはかなりの時間が必要です。また、QGISおよびAlign Rasters Tool を使用して簡単に行うことができます。

ここに画像の説明を入力してください

PyQGISまたはPythonを使用してこれを行うツールはありますか?(より多くのプログラミングを自動的に行いたい)

更新

私はこの質問からこのコードを見つけます:

from osgeo import gdal, gdalconst

inputfile = #Path to input file
input = gdal.Open(inputfile, gdalconst.GA_ReadOnly)
inputProj = input.GetProjection()
inputTrans = input.GetGeoTransform()

referencefile = #Path to reference file
reference = gdal.Open(referencefile, gdalconst.GAReadOnly)
referenceProj = reference.GetProjection()
referenceTrans = reference.GetGeoTransform()
bandreference = reference.GetRasterBand(1)    
x = reference.RasterXSize 
y = reference.RasterYSize

outputfile = #Path to output file
driver= gdal.GetDriverByName('GTiff')
output = driver.Create(outputfile, x, y, 1, bandreference.DataType)
output.SetGeoTransform(referenceTrans)
output.SetProjection(referenceProj)

gdal.ReprojectImage(input, output, inputProj, referenceProj, gdalconst.GRA_Bilinear)

del output

そのコードは、ラスタークリップ以外は問題なく動作します。このコードを更新して入力ラスターをコード内の参照ラスターの範囲までクリップする方法はありますか?


2
「Pythonで[gdal]ツールを一緒に使用するのは容易ではない」と私は同意しません。とても簡単です。とにかく、ラスターでラスターをクリップする方法については、この投稿をご覧ください。(私は、自分自身をGDALのルートを行くと思います。)gis.stackexchange.com/questions/125202/...
ジョン

私にとってそれはない仕事@ジョン

まあ、もしあなたが助けが欲しいなら、あなたはおそらくあなたが試みたものとうまくいかなかったものを投稿すべきです。
Jon

回答:


1

GDALのアプローチと時間

@user:78446に同意します-gdalが最善の方法であり、gdalwarp、gdaltranslateなど、すでに述べたツールを使用できるはずです。これ、各ラスターの場合、各セルを再調整する必要があるため、かなり長いプロセスになります。セルの再調整を考慮して本質的に再補間されます-ラスターサイズに基づいてさらに長くなります。

ちなみに、以下の分析では、特にこれらのラスターピクセル値の変化も考慮に入れてください。特に、ラスターの再調整が非常に長い距離にわたる場合は注意してください。


GDALとPython

フォーラムを見回すと、gdalとpythonを一緒に文字列化する方法を示す多くの例があります

また、gdalとPythonを一緒に使用するためのヘルプもご覧ください。


0

次のように、ReprojectImageの代わりにgdal.Warpを使用できるようです

OutTile = gdal.Warp(OutTileName, Raster,
  format=RasterFormat, outputBounds=[minX, minY, maxX, maxY], 
  xRes=PixelRes, yRes=PixelRes, dstSRS=Projection, 
  resampleAlg=gdal.GRA_NearestNeighbour, options=['COMPRESS=DEFLATE']
)

(コードはhttps://gis.stackexchange.com/a/237372/15183から取得されます)。


0

私にとってはうまくいきます。GA_ReadOnly一列にのみ固定

reference = gdal.Open(referencefile, gdalconst.GAReadOnly)

reference = gdal.Open(referencefile, gdalconst.GA_ReadOnly)

スクリプトを再投影し、入力ラスター(ヨーロッパ全体)を参照ラスター(中央部分)の解像度と範囲にクリップします。結果:

ここに画像の説明を入力してください

gdalwarpラスターの整列にも使用できます(Qgisを使用して 'asc'ファイルのピクセルサイズを変更しますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.