FAQ/ 地形データのサンプリング方法
計算領域で5mのメッシュデータ(地形、粗度係数、空隙率等)を設定しました。ただし、25mメッシュのメッシュデータは設定しませんでした。計算メッシュサイズ25mで計算する場合、計算時のメッシュ諸元は5mメッシュで設定したものが25mメッシュに平均されて使用されるのでしょうか?
回答
いいえ。この場合、計算領域に25mメッシュのデータが設定されていないため、DioVISTAのmapdataフォルダに格納されたデータソースから使用されます。
DioVISTAのmapdataフォルダに格納されたデータソースから使用される25mメッシュデータの作り方は、以下のとおりです。
データソースからバイリニア補間により緯度経度系の12.5mメッシュを作成します。このメッシュから、NN(最近傍法)によりUTM系の25 mメッシュを作成します。
しがたって、DioVISTAが用意する25mメッシュデータは、5mメッシュで設定したものの平均ではありません。50mや10mなど他のメッシュサイズでも同様です。
例えば、25mメッシュデータとして、5mメッシュデータの平均を使用したい場合、DioVISTAの計算領域で設定した5mのメッシュデータをcsv形式でエクスポートし、下記のpythonプログラムを実行してください。25mメッシュデータcsvファイルが作成されますので、DioVISTAの25mの計算領域に設定してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 | # python
import pandas as pd
import math
import tqdm
import numpy as np
# 〇〇〇に5mメッシュデータのcsvファイルを設定してください
filename = '〇〇〇.csv'
df_original = pd.read_csv(filename, header=None)
maxRow = df_original.shape[0]
maxColumn = df_original.shape[1]
num = 5
minRow = math.ceil(maxRow/num)
minColumn = math.ceil(maxColumn/num)
df_convert = pd.DataFrame(index=range(minRow), columns=range(minColumn))
for i in tqdm.tqdm(range(minRow)):
np.pi*np.pi
for j in range(minColumn):
sum = 0
counter = 0
row = i * num
for k in range(num):
column = j * num
for l in range(num):
try:
sum += df_original.iat[row,column]
counter += 1
except IndexError as e:
break
column += 1
row += 1
# 平均化計算
avarage = sum / counter
df_convert.iat[i, j] = avarage
# 計算結果書込
df_convert.to_csv('./25m_terrain.csv', mode='w', header=None, index=None)
|
例:5mメッシュデータcsvから平均化した25mメッシュデータcsvを作成するpythonコード
最終更新日:
2025-03-07