質問編集履歴
2
参考として出力画像例を追加しました。
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
|
+

|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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等を実行してみましたが、変化はありません。
|