GDALを使用してPythonでスクリプトを再投影する


10

GDALで多くの問題を抱えています。ドキュメントが欠けていることもありますが、Pythonではほとんどサポートされていないようです。とにかく、これは次のように機能するバッチ再プロジェクトスクリプトです。

source_file = gdal.Open(filepath.encode("ascii"))
source_wkt = source_file.GetProjectionRef()
source_srs = osr.SpatialReference()
source_srs.ImportFromWkt(source_wkt)                            

reproj_file = gdal.AutoCreateWarpedVRT(source_file, source_wkt, dest_wkt)
gdal.ReprojectImage(source_file, reproj_file, source_wkt, dest_wkt)
reproj_attributes = reproj_file.GetGeoTransform()

driver = gdal.GetDriverByName("GTiff")
dest_file = driver.CreateCopy(outputpath.encode("ascii"), reproj_file, 0)

dest_srsとdes_wktの部分はこのコードチャンクでは定義されていませんが、ループの外にあります(一度だけ定義する必要があるため)。それは一度動作するようです、私はそれから1つの見栄えの良いtifを得ることができ、それから私に「エラー6 WriteBlock()はサポートされていません」とpythonがクラッシュします。それらはすべて、同じ基本データを使用して同じ方法で作成された(時間だけが異なる)すべてのGeoTIFFです。

また、(GCSからPCSへの)再投影の性質により、AutoCreateWarpedVRTは多くの空白スペースを作成する傾向がありますが、値0を与えます。これは、実際のデータ値である可能性があるため問題です。代わりにnodata値を-99に設定する方法はありますか?


6
私はあなたがこれをPythonで行う理由があると思いますが、念のため:gdalwarpユーティリティの主な目的はラスタを再投影することであることを知っていますか?例えばgdalwarp -t_srs '+proj=utm +zone=11 +datum=WGS84' raw_spot.tif utm11.tif。長い間使用されており、機能が豊富で、十分にテストされており、純粋なpythonアプローチよりも高速である可能性があります。
マットウィルキー

ReprojectImageの注文を削除すると、コンピューターはエラーなしで画像を再投影します。
Roger Veciana 2017年

回答:


3

AutoCreateWarpedVRT空白について。

このgdal エラーチケットをご覧ください

特にそれはそこに述べられています:

この行を2番目のステップで生成されたrgbwarped.vrtに追加すると、すべて問題ありません。

<Option name="UNIFIED_SRC_NODATA">YES</Option>

C ++アプリケーションは、このオプションを直接設定できます。SWIGバインディングからAutoCreateWarpedVRTを使用するアプリケーションは、手動でこの行を生成されたVRTのテキストに追加する必要があります。


私がしようとしなかったOption修正が、しかし呼び出しへの切り替えgdalwarpによってsubprocessマスクされていないのNoDataの問題を解決しました。
j08lue 16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.