コンテンツにスキップ

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