質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1044閲覧

GDAL Openした画像への処理がAttributeError: 'NoneType' objectになる

sukeken_tech

総合スコア0

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/04/20 01:24

編集2023/04/20 07:48

実現したいこと

  • AttributeError: 'NoneType' object has no attribute 'RasterCount'を解決したい。
  • AttributeError: 'NoneType' object has no attribute 'RasterCount'の理由を知りたい

前提

JupyterNotebookにてPythonスクリプトで以下を実行しています。gdal.Open()は成功していますが、読み込まれた画像に対しての処理を実施する際に、AttributeError: 'NoneType' object has no attribute XXXXが発生しています。
いろいろと試行錯誤してみましたが解説せず、解決策を探しています。。。
以下のVersionを利用しています。

  • Python 3.10.9
  • GDAL 3.6.2

発生している問題・エラーメッセージ

AttributeError Traceback (most recent call last) Cell In[29], line 24 22 # IMG_1読込 23 ds_1 = gdal.Open(IMG_PATH_1_CUT, gdal.GA_ReadOnly) ---> 24 image_1 = np.array([ds_1.GetRasterBand(i + 1).ReadAsArray() for i in range(ds_1.RasterCount)]) 25 del ds_1 #不要メモリ解放 27 # IMG_2読込 AttributeError: 'NoneType' object has no attribute 'RasterCount'

該当のソースコード

python

1from osgeo import gdal 2import numpy as np 3import matplotlib.pyplot as plt 4from PIL import Image

python

1def cut4_geotiff(IMG_IN, IMG_OUT, minX, maxX, minY, maxY): 2 gdal.Translate(IMG_OUT, IMG_IN, projWin=[minX,maxY,maxX,minY]) 3 return print("Extraction process was completed! : ", IMG_IN)

python

1# ダウンロードしたファイルを指定して、切り出した上で、赤青合成を行い、PNGで表示 2if __name__ == '__main__': 3 # 処理対象ファイルの指定 4 IMG_PATH_1 = "AS200355208498-180908_webcog.tif" 5 IMG_PATH_2 = "AS201462808498-200905_webcog.tif" 6 7 # AOI抽出後(切り出し後)のGeotiffの保存先の指定 8 IMG_PATH_1_CUT = "AS200355208498-180908_webcog_cut.tif" 9 IMG_PATH_2_CUT = "AS201462808498-200905_webcog_cut.tif" 10 IMG_JPG = "out.jpeg" 11 12 # AOI(切り出し部分)の四隅緯度経度指定 13 minX = 141.93507323883878 14 minY = 42.75282111399301 15 maxX = 141.94639048725506 16 maxY = 42.75848804932892 17 18 # AOIの抽出処理(四隅): 切り出し処理 19 cut4_geotiff(IMG_PATH_1, IMG_PATH_1_CUT, minX, maxX, minY, maxY) 20 cut4_geotiff(IMG_PATH_2, IMG_PATH_2_CUT, minX, maxX, minY, maxY) 21 22 # IMG_1読込 23 ds_1 = gdal.Open(IMG_PATH_1_CUT, gdal.GA_ReadOnly) 24 image_1 = np.array([ds_1.GetRasterBand(i + 1).ReadAsArray() for i in range(ds_1.RasterCount)]) 25 del ds_1 #不要メモリ解放 26 27 # IMG_2読込 28 ds_2 = gdal.Open(IMG_PATH_2_CUT, gdal.GA_ReadOnly) 29 image_2 = np.array([ds_2.GetRasterBand(i + 1).ReadAsArray() for i in range(ds_2.RasterCount)]) 30 del ds_2 #不要メモリ解放 31 32 # 画像間のピクセル数を揃える処理(今回は必要なし) 33 x_min = min([image_1.shape[1], image_2.shape[1]]) 34 y_min = min([image_1.shape[2], image_2.shape[2]]) 35 # print("MinX : ", image_1.shape[1], image_2.shape[1]) 36 # print("MinY : ", image_1.shape[2], image_2.shape[2]) 37 38 # 出力用配列の準備 39 image = np.zeros((x_min,y_min,3)).astype(np.uint8) 40 image[:,:,0] = image_2[0, :x_min, :y_min] 41 image[:,:,1] = image_1[0, :x_min, :y_min] 42 image[:,:,2] = image_1[0, :x_min, :y_min] 43 # print(image_1.shape, image_2.shape, image.shape) 44 45 # 不要メモリの解放 46 del image_1 47 del image_2 48 49 # 出力画像の保存 50 pil_img = Image.fromarray(image) 51 # print(pil_img.mode) 52 pil_img.save(IMG_JPG) 53 54 print("DONE!")

試したこと

  1. gdal.Open()した画像を単純にprint()すると、Noneと表示されました。

python

1ds_1 = gdal.Open(IMG_PATH_1_CUT, gdal.GA_ReadOnly) 2print(de_1) 3 4>>結果: None

2.単純にもともとの画像をgdal.open()した場合は、読み込んだ画像に対して正常に処理ができました。

python

1raster = gdal.Open("AS200355208498-180908_webcog.tif") 2print(raster.GetProjection()) 3 4>>結果:GEOGCS[....//詳細情報//]

補足情報(FW/ツールのバージョンなど)

cut4_geotiff関数は成功している(エラーなし)のように思えますが、切り出された画像ファイルはNotebookのフォルダでは確認できませんでした。

こちらに記載されている内容を模倣しています。
https://sorabatake.jp/25931/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2023/04/20 01:42 編集

リンクをクリックしても開けないと思ったら、リンクの作りかた間違えているようですね。URLをコピペしたら開けました。
can110

2023/04/20 01:43

IMG_PATH_1_CUTというファイルがないのではないでしょうか。 gdal.Translate関数の動作について - 提示コードのようにディレクトリを指定しなかった場合、どこにファイルが出力されるか - 何らかのエラーが発生した場合、その関数はどういったふるまいをするのか(エラーコードを返したりはしないのか?) という点についてGDALのマニュアルなりを確認した結果を記載ください。
jbpb0

2023/04/20 04:27

> raster = gdal.Open("AS200355208498-180908_webcog.tif") print(raster.GetProjection()) >>結果:GEOGCS[....//詳細情報//] 上記を raster = gdal.Open("AS200355208498-180908_webcog.tif") ↓ 変更 raster = gdal.Open("AS200355208498-180908_webcog_cut.tif") としたら、どうなりますでしょうか? もし変更したらダメなら、pythonで import os print(os.getcwd()) を実行して、カレントディレクトリがどこかを確認して、そこに「AS200355208498-180908_webcog_cut.tif」があるかを確認してみてください
jbpb0

2023/04/20 05:14 編集

> cut4_geotiff関数は成功している(エラーなし) https://tellusxdp.github.io/start-python-with-tellus/tellus_GDAL.html#%E6%96%B9%E6%B3%95%E2%91%A1-4%E9%9A%85%E3%81%AE%E7%B7%AF%E5%BA%A6%E7%B5%8C%E5%BA%A6%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E5%88%87%E3%82%8A%E5%87%BA%E3%81%97 の「画像の切り出し」の「方法② 4隅の緯度経度を指定した切り出し」 を見ると、「prjWin=[minX,maxY,maxX,minY]」で緯度経度を指定する場合は、画像の座標系が緯度経度じゃないとダメなようですが、「AS200355208498-180908_webcog.tif」とかはそれは大丈夫でしょうか?
sukeken_tech

2023/04/20 07:47

import os print(os.getcwd()) の結果は現在のワーキングディレクトリでした。こちらのワーキングディレクトリには"AS200355208498-180908_webcog_cut.tif"の存在は確認できませんでした。 cut_raster = gdal.Open("AS200355208498-180908_webcog_cut.tif") print(cut_raster.GetProjection()) の結果は同じように以下のAttributeErrorが発生しました。 AttributeError: 'NoneType' object has no attribute 'GetProjection' なのでcut4_geotiff関数の結果、"AS200355208498-180908_webcog_cut.tif"が生成されていないのかもしれません。 参考にした以下の記事では、緯度経度情報を指定してcut4_geotiff関数を実行しており、無事に成功(画像の生成)がされているように見えます。。。こちらと同じ画像を利用している認識です。 https://sorabatake.jp/25931/ (なお、壊れていた記事内のリンクを修正しました。)
sukeken_tech

2023/04/20 07:54

また、以下を実行し raster = gdal.Open("AS200355208498-180908_webcog.tif") src_prj=raster.GetProjection() print ("座標系などの情報:") print (src_prj) 結果としては以下となりました。EPSG:4326のデータである認識です。なので緯度経度を指定して問題ないはず。。 結果:>> 座標系などの情報: GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]
sukeken_tech

2023/04/20 07:59 編集

また、以下のようなパス指定も行いましたが、結果は同じでした。。 (WindowsでAnacondaからJupyterNotebookを利用してます) パターン1: # 処理対象ファイルの指定 IMG_PATH_1 = ".\\AS200355208498-180908_webcog.tif" IMG_PATH_2 = ".\\AS201462808498-200905_webcog.tif" # AOI抽出後(切り出し後)のGeotiffの保存先の指定 IMG_PATH_1_CUT = ".\\out\\AS200355208498-180908_webcog_cut.tif" IMG_PATH_2_CUT = ".\\out\\AS201462808498-200905_webcog_cut.tif" IMG_JPG = ".\\out\\out.jpeg" パターン2: # 処理対象ファイルの指定 IMG_PATH_1 = "./AS200355208498-180908_webcog.tif" IMG_PATH_2 = "./AS201462808498-200905_webcog.tif" # AOI抽出後(切り出し後)のGeotiffの保存先の指定 IMG_PATH_1_CUT = "./out/AS200355208498-180908_webcog_cut.tif" IMG_PATH_2_CUT = "./out/AS201462808498-200905_webcog_cut.tif" IMG_JPG = "./out/out.jpeg"
jbpb0

2023/04/20 12:53

> cut4_geotiff関数の結果、"AS200355208498-180908_webcog_cut.tif"が生成されていないのかも 「IMG_PATH_1_CUT」と「IMG_PATH_2_CUT」を絶対パスで指定しても、それらのファイルは作成されませんでしょうか?
jbpb0

2023/04/20 12:55

> WindowsでAnacondaからJupyterNotebookを利用 https://pypi.org/project/GDAL/ の「Installation」の「Windows」 を見ると、環境変数「GDAL_DATA」を設定するように書かれてますが、それを設定したディレクトリパスにファイルが作成されてませんでしょうか?
sukeken_tech

2023/04/25 12:26

今回はAnacondaPromptを利用して以下のコマンドでインストールしています。 `conda install -c conda-forge gdal` ですので、「Installation」の「Conda」が当てはまります。 以下のように絶対パスで指定した場合も結果は同じでした。 IMG_PATH_1 = "C:/Users/kensu/Documents/workspace/Analyze Notebook/ASNARO-2 Hokkaido Delta/AS200355208498-180908_webcog.tif" IMG_PATH_2 = "C:/Users/kensu/Documents/workspace/Analyze Notebook/ASNARO-2 Hokkaido Delta/AS201462808498-200905_webcog.tif" しかし奇妙なことに、タイプミスで以下のように切り出した後のパスを絶対パスに指定して実行した場合は、`cut4_geotiff`関数の後に真っ黒がtif画像が生成され、元のファイルが上書きされた挙動となりました。。(正常の挙動ではありませんが。画像も真っ黒なので何かしらがおかしい。。。) IMG_PATH_1_CUT = "C:/Users/kensu/Documents/workspace/Analyze Notebook/ASNARO-2 Hokkaido Delta/AS200355208498-180908_webcog.tif" IMG_PATH_2_CUT = "C:/Users/kensu/Documents/workspace/Analyze Notebook/ASNARO-2 Hokkaido Delta/AS201462808498-200905_webcog.tif" 返事が遅くなり申し訳ありません。
jbpb0

2023/04/25 14:02 編集

> タイプミスで以下のように切り出した後のパスを絶対パスに指定して実行した場合は、`cut4_geotiff`関数の後に真っ黒がtif画像が生成 IMG_PATH_1_CUT = "C:/Users/kensu/Documents/workspace/Analyze Notebook/ASNARO-2 Hokkaido Delta/AS200355208498-180908_webcog_cut.tif" のように、「IMG_PATH_1_CUT」と「IMG_PATH_2_CUT」の絶対パスを正しく指定した場合は、どうなるのでしょうか? やはり真っ黒な画像のファイルが、新規作成されるのでしょうか?
sukeken_tech

2023/04/25 23:33

>>「IMG_PATH_1_CUT」と「IMG_PATH_2_CUT」の絶対パスを正しく指定した場合は、どうなるのでしょうか? やはり真っ黒な画像のファイルが、新規作成されるのでしょうか? 実行結果は以下のようになり、同様のエラーで画像は生成されませんでした。 Extraction process was completed! : ./AS200355208498-180908_webcog.tif Extraction process was completed! : ./AS201462808498-200905_webcog.tif --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[4], line 29 27 # IMG_1読込 28 ds_1 = gdal.Open(IMG_PATH_1_CUT, gdal.GA_ReadOnly) ---> 29 image_1 = np.array([ds_1.GetRasterBand(i + 1).ReadAsArray() for i in range(ds_1.RasterCount)]) 30 del ds_1 #不要メモリ解放 32 # IMG_2読込 AttributeError: 'NoneType' object has no attribute 'RasterCount'
jbpb0

2023/04/25 23:51

> IMG_PATH_1_CUT = "C:/Users/kensu/Documents/workspace/Analyze Notebook/ASNARO-2 Hokkaido Delta/AS200355208498-180908_webcog.tif" では、画像ファイルが作成(上書き)されたのに、 > IMG_PATH_1_CUT = "C:/Users/kensu/Documents/workspace/Analyze Notebook/ASNARO-2 Hokkaido Delta/AS200355208498-180908_webcog_cut.tif" では、画像ファイルが作成されないのですか 予め「AS200355208498-180908_webcog.tif」を「AS200355208498-180908_webcog_cut.tif」にコピーしておいて、「IMG_PATH_1_CUT」は上記の後者の(正しい)指定にしたら、「AS200355208498-180908_webcog_cut.tif」は「上書き」されるのでしょうか?
sukeken_tech

2023/04/26 06:15

>>では、画像ファイルが作成されないのですか そのような挙動になります。 >>予め「AS200355208498-180908_webcog.tif」を「AS200355208498-180908_webcog_cut.tif」にコピーしておいて、「IMG_PATH_1_CUT」は上記の後者の(正しい)指定にしたら、「AS200355208498-180908_webcog_cut.tif」は「上書き」されるのでしょうか? こちらについて実施したところ、予めコピーしておいた「AS200355208498-180908_webcog_cut.tif」ファイルがディレクトリから消える挙動どなりました。。。(謎) なお、エラーメッセージは以下の用になっています。変わらずAttributeErrorとなっています。 Extraction process was completed! : ./AS200355208498-180908_webcog.tif Extraction process was completed! : ./AS201462808498-200905_webcog.tif --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[4], line 29 27 # IMG_1読込 28 ds_1 = gdal.Open(IMG_PATH_1_CUT, gdal.GA_ReadOnly) ---> 29 image_1 = np.array([ds_1.GetRasterBand(i + 1).ReadAsArray() for i in range(ds_1.RasterCount)]) 30 del ds_1 #不要メモリ解放 32 # IMG_2読込 AttributeError: 'NoneType' object has no attribute 'RasterCount'
jbpb0

2023/04/26 11:44

動作に一貫性が無いような 「gdal.Translate」で、切り出し以外のことは、ちゃんとできるのでしょうか? たとえば下記のような、出力画像のフォーマットを指定して保存とかは、できるのでしょうか? gdal.Translate("出力画像の絶対パス", "入力画像の絶対パス", format='JPEG') 参考 http://www.giscience.sakura.ne.jp/blog/python%E3%81%8B%E3%82%89%E4%BD%BF%E3%81%84%E3%82%84%E3%81%99%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9Fgdal-2-1%E3%81%8C%E3%82%B9%E3%83%86%E3%82%AD%E3%81%A0/
sukeken_tech

2023/04/26 12:45

>>動作に一貫性が無いような そうなんですよね。。。加えて今回がGDAL初利用なので正しい挙動のイメージもつかめず切り分けも難しいです。。 以下を実行してみました。 gdal.Translate("C:/Users/kensu/Documents/workspace/Analyze Notebook/ASNARO-2 Hokkaido Delta/AS200355208498-180908_webcog_cut.tif", "C:/Users/kensu/Documents/workspace/Analyze Notebook/ASNARO-2 Hokkaido Delta/AS200355208498-180908_webcog.tif", format = 'JPEG') 結果はエラーとはなりませんでしたが、アウトプットファイルなどは何も作成されませんでした。 以下のようなパス指定もしてみましたが、結果は同様でした。。。 gdal.Translate(r"C:\Users\kensu\Documents\workspace\Analyze Notebook\ASNARO-2 Hokkaido Delta\AS200355208498-180908_webcog_cut.tif", r"C:\Users\kensu\Documents\workspace\Analyze Notebook\ASNARO-2 Hokkaido Delta\AS200355208498-180908_webcog.tif", format = 'JPEG') gdal.Translate("C:/Users/kensu/Documents/workspace/Analyze Notebook/ASNARO-2 Hokkaido Delta/AS200355208498-180908_webcog_cut.tif", "C:/Users/kensu/Documents/workspace/Analyze Notebook/ASNARO-2 Hokkaido Delta/AS200355208498-180908_webcog.tif")
jbpb0

2023/04/26 23:39

画像ファイルの置き場所を、絶対パス中にスペースが無い場所にしても、ダメでしょうか?
sukeken_tech

2023/04/27 01:07

以下のように指定して実行しましたが、結果は同じでした。 IMG_PATH_1 = "C:/Users/kensu/Documents/workspace/AnalyzeNotebook/ASNARO2HokkaidoDelta/AS200355208498-180908_webcog.tif" IMG_PATH_2 = "C:/Users/kensu/Documents/workspace/AnalyzeNotebook/ASNARO2HokkaidoDelta/AS201462808498-200905_webcog.tif" IMG_PATH_1_CUT = "C:/Users/kensu/Documents/workspace/AnalyzeNotebook/ASNARO2HokkaidoDelta/AS200355208498-180908_webcog_cut.tif" IMG_PATH_2_CUT = "C:/Users/kensu/Documents/workspace/AnalyzeNotebook/ASNARO2HokkaidoDelta/AS201462808498-200905_webcog_cut.tif" 結果: Extraction process was completed! : C:/Users/kensu/Documents/workspace/AnalyzeNotebook/ASNARO2HokkaidoDelta/AS200355208498-180908_webcog.tif Extraction process was completed! : C:/Users/kensu/Documents/workspace/AnalyzeNotebook/ASNARO2HokkaidoDelta/AS201462808498-200905_webcog.tif --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[6], line 29 27 # IMG_1読込 28 ds_1 = gdal.Open(IMG_PATH_1_CUT, gdal.GA_ReadOnly) ---> 29 image_1 = np.array([ds_1.GetRasterBand(i + 1).ReadAsArray() for i in range(ds_1.RasterCount)]) 30 del ds_1 #不要メモリ解放 32 # IMG_2読込 AttributeError: 'NoneType' object has no attribute 'RasterCount'
sukeken_tech

2023/04/27 01:15

また、試しにdef cut4_geotiff関数を以下のように変更し(参考:https://gis.stackexchange.com/questions/371094/python-gdal-translate-doesnt-write-the-output-file)実施したところ、以下のRuntimeErrorが出力されました。 # Geotiffから指定範囲(緯度経度)を切り出す関数 def cut4_geotiff(IMG_IN, IMG_OUT, minX, maxX, minY, maxY): gdal.UseExceptions() gdal.Translate(IMG_OUT, IMG_IN, projWin=[minX,maxY,maxX,minY]) return print("Extraction process was completed! : ", IMG_IN) 結果: --------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) Cell In[9], line 24 21 maxY = 42.75848804932892 23 # AOIの抽出処理(四隅): 切り出し処理 ---> 24 cut4_geotiff(IMG_PATH_1, IMG_PATH_1_CUT, minX, maxX, minY, maxY) 25 cut4_geotiff(IMG_PATH_2, IMG_PATH_2_CUT, minX, maxX, minY, maxY) 27 # IMG_1読込 Cell In[8], line 4, in cut4_geotiff(IMG_IN, IMG_OUT, minX, maxX, minY, maxY) 2 def cut4_geotiff(IMG_IN, IMG_OUT, minX, maxX, minY, maxY): 3 gdal.UseExceptions() ----> 4 gdal.Translate(IMG_OUT, IMG_IN, projWin=[minX,maxY,maxX,minY]) 5 return print("Extraction process was completed! : ", IMG_IN) File ~\anaconda3\lib\site-packages\osgeo\gdal.py:523, in Translate(destName, srcDS, **kwargs) 520 if isinstance(srcDS, str): 521 srcDS = Open(srcDS) --> 523 return TranslateInternal(destName, srcDS, opts, callback, callback_data) File ~\anaconda3\lib\site-packages\osgeo\gdal.py:4793, in TranslateInternal(*args) 4791 def TranslateInternal(*args) -> "GDALDatasetShadow *": 4792 r"""TranslateInternal(char const * dest, Dataset dataset, GDALTranslateOptions translateOptions, GDALProgressFunc callback=0, void * callback_data=None) -> Dataset""" -> 4793 return _gdal.TranslateInternal(*args) RuntimeError: C:/Users/kensu/Documents/workspace/AnalyzeNotebook/ASNARO2HokkaidoDelta/AS200355208498-180908_webcog.tif, band 1: IReadBlock failed at X offset 46, Y offset 21: TIFFReadEncodedTile() failed.
jbpb0

2023/04/28 00:00 編集

gdal.UseExceptions() 有りで、切り出しをしないで、出力画像のフォーマットを指定して保存では、どうなるのでしょうか? 同じエラーが表示されるのでしょうか? なお、「format='JPEG'」で保存する場合は、出力画像の拡張子は「.tif」ではなく「.jpg」とかの方がいいと思います 今回の「ファイルできない現象」とは関係無いとは思いますが
sukeken_tech

2023/04/28 05:28

切り出し処理を実施しないでコードを実行した場合は、以下のエラーとなりました。 --------------------------------------------------------------------------- IndexError Traceback (most recent call last) Cell In[6], line 40 38 print(image_1) 39 print(image_2) ---> 40 x_min = min([image_1.shape[1], image_2.shape[1]]) 41 y_min = min([image_1.shape[2], image_2.shape[2]]) 42 # print("MinX : ", image_1.shape[1], image_2.shape[1]) 43 # print("MinY : ", image_1.shape[2], image_2.shape[2]) 44 45 # 出力用配列の準備 IndexError: tuple index out of range また、 print(image_1) print(image_2) を実施したところ、結果はそれぞれ [None] [None] となっています。 また、 print(ds_1) print(ds_2) を実施した結果は以下となりました。 <osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x0000020B9C023300> > <osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x0000020B9C0232D0> >
jbpb0

2023/04/28 06:13

「gdal.UseExceptions()」有りでも、切り出しをしなければ、「cut4_geotiff」の「gdal.Translate」ではエラーは出ないのですね また、この質問の元々のエラー > ---> 24 image_1 = np.array([ds_1.GetRasterBand(i + 1).ReadAsArray() for i in range(ds_1.RasterCount)]) AttributeError: 'NoneType' object has no attribute 'RasterCount' も出ないのですね ということは、「IMG_PATH_1_CUT」とかに指定したファイルが作成されて、「ds_1 = gdal.Open(...」とかが成功したのでしょうか? > print(ds_1) print(ds_2) を実施した結果は以下となりました。 <osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x0000020B9C023300> > <osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x0000020B9C0232D0> > からも、「ds_1 = gdal.Open(...」とかは成功したっぽい??
sukeken_tech

2023/04/30 06:33

>>ということは、「IMG_PATH_1_CUT」とかに指定したファイルが作成されて、「ds_1 = gdal.Open(...」とかが成功したのでしょうか? 切り出し処理を実施しない場合の実施結果ですので、IMG_PATH_1_CUTには特にファイルは生成されていません。ds_1 = gdal.Open(...の処理結果はprint(ds_1)の実施結果になります。 >>からも、「ds_1 = gdal.Open(...」とかは成功したっぽい?? 少なくともこちらの処理は通過しているように見受けられます。
jbpb0

2023/04/30 10:17 編集

> 切り出し処理を実施しない場合の実施結果ですので、IMG_PATH_1_CUTには特にファイルは生成されていません。 あれ? > gdal.UseExceptions() 有りで、切り出しをしないで、出力画像のフォーマットを指定して保存では、どうなるのでしょうか? は、「IMG_PATH_1_CUT」で指定したパスのファイルに、切り出ししなければ「gdal.Translate」で「保存」できるのか? という意味だったのですが つまり、「gdal.UseExceptions()」有りだと、「gdal.Translate」では、切り出しをしてもしなくてもエラーになるのか? それとも、切り出しをする場合はエラーになるけど、切り出しをしなければエラーにならないのか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問