teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

参考として出力画像例を追加しました。

2020/12/21 04:30

投稿

TomoWata
TomoWata

スコア1

title CHANGED
File without changes
body CHANGED
@@ -106,4 +106,5 @@
106
106
 
107
107
  ### 補足情報(FW/ツールのバージョンなど)
108
108
  Python3.8.5
109
- ここより詳細情報を記載してください。
109
+ 出力画像のイメージです。(テスト的6ファイルのみ表示。色がない画像も正常な結果です
110
+ ![イメージ説明](4b561ed884204ec83cca1db3a3f6cf96.jpeg)

1

プログラムコードの記述先を修正しました。

2020/12/21 04:30

投稿

TomoWata
TomoWata

スコア1

title CHANGED
File without changes
body CHANGED
@@ -6,21 +6,17 @@
6
6
  ### 発生している問題・エラーメッセージ
7
7
  コードを実行すると画像は表示および保存されるのですが、再度実行すると同じファイル名での保存(作成および上書き)ができません。例えば、(test_time_series_img.jpg)という名前で一度出力した後、同ファイル名(test_time_series_img.jpg)は作成されません。ファイルを削除した後で実行しても同じ結果となります。一方、(test_time_series_img2.jpg)と名前を変えて実行すると作成されます。なお、jpgの代わりにpngやpdfにすると”Segmentation fault”となり正常に画像が出力されません。Tiffは作成できました。実行する度にファイル名を変更するのは現実的ではないため、なんとかしたいと考えております。
8
8
  ```
9
- エラーメッセージ
10
- ```
11
-
12
9
  ●下記は本件とは関係ないと思われますが、表示されるメッセージです。
13
10
  QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-twatanabe'
14
11
  libGL error: No matching fbConfigs or visuals found
15
12
  libGL error: failed to load driver: swrast
13
+ ```
16
14
 
15
+
16
+
17
17
  ### 該当のソースコード
18
- ```ここに言語を入力
18
+ ```ここに言語を入力
19
- Python3
20
- ソースコード
21
- ```
22
- "#取得した画像を表示して出力する(jpg等で保存する)。"
19
+ #取得した画像を表示して出力する(jpg等で保存する)。"
23
-
24
20
  import gc
25
21
  import math
26
22
  import os
@@ -32,7 +28,7 @@
32
28
  from rasterio import plot
33
29
  import glob
34
30
 
35
- "#ディレクトリ名やファイル名等の設定"
31
+ #ディレクトリ名やファイル名等の設定"
36
32
  area_name = 'area'
37
33
  direct_name = '/home/user/'
38
34
  filename = "outoput_image"
@@ -41,16 +37,16 @@
41
37
  ndpath = output+'IMAGE/NDVI/'
42
38
  outpath = output+'RESULT/'
43
39
 
44
- "# フォルダが存在しない場合に作成する。"
40
+ # フォルダが存在しない場合に作成する。"
45
41
  def makepath(path):
46
42
  if not os.path.exists(path):
47
43
  os.makedirs(path)
48
44
 
49
- "# データ入力 (NDVIデータをまとめて読込む) (オリジナル画像:384×148 のGeoTiff画像が複数枚)"
45
+ # データ入力 (NDVIデータをまとめて読込む) (オリジナル画像:384×148 のGeoTiff画像が複数枚)"
50
46
  data_files = glob.glob(ndpath+'*.tif')
51
47
  data_files.sort()
52
48
 
53
- "# 画像サイズやリサンプリングを設定" 
49
+ # 画像サイズやリサンプリングを設定" 
54
50
  len_num = len(data_files)
55
51
  col = 4
56
52
  raw =math.ceil(len_num/col)
@@ -59,14 +55,14 @@
59
55
  im_raw = 384 *(col*3)
60
56
  dwscale_factor = 1/2 #縮小サイズ)
61
57
 
62
- "# 出力キャンバスの設定"
58
+ # 出力キャンバスの設定"
63
59
  fig = plt.figure(figsize=(int(im_raw/my_dpi),int(im_col/my_dpi)), dpi = my_dpi)
64
60
  fig.clf()
65
61
 
66
- "# 画像の読込とリサンプリング"
62
+ # 画像の読込とリサンプリング"
67
63
  for i in range(len_num):
68
64
  with rasterio.open(data_files[i]) as src:
69
- # resample data to target shape
65
+ # resample data to target shape
70
66
  data = src.read(
71
67
  out_shape=(
72
68
  src.count,
@@ -77,33 +73,33 @@
77
73
  resampling=Resampling.bilinear #内挿方法
78
74
  )
79
75
 
80
- "# scale image transform
76
+ # scale image transform
81
77
  transform = src.transform * src.transform.scale(
82
78
  (src.width / data.shape[-1]),
83
79
  (src.height / data.shape[-2])
84
80
  )
85
81
 
86
- "# 画像のプロット位置をシフトさせ配置
82
+ # 画像のプロット位置をシフトさせ配置
87
83
  plt.subplot(raw, col, i+1)
88
84
  plt.imshow(data[0], clim=(-1, 1), cmap=cm.jet, interpolation='nearest')
89
85
  plt.colorbar()
90
86
  plt.title(data_files[i][-17:-4], fontsize=25)# ファイル名から日付を取得
91
87
  plt.tight_layout()
92
88
 
93
- "# 画像の保尊
89
+ # 画像の保尊
94
90
  plt.savefig(outpath+filename+"_time_series_img.jpg", dpi=my_dpi)
95
91
 
96
- "# 画像表示
92
+ # 画像表示
97
93
  plt.show()
98
94
 
99
- "# メモリ開放
95
+ # メモリ開放
100
96
  plt.cla()
101
97
  fig.clf()
102
98
  plt.close('all')
103
99
  plt.close(fig)
104
100
  gc.collect()
101
+ ```
105
102
 
106
-
107
103
  ### 試したこと
108
104
 
109
105
  メモリの問題と思い、メモリ解放”gc.collect()”等を設定したりswapoff等を実行してみましたが、変化はありません。