見出し画像

iRICの計算結果をポリゴン形式でGISに表示する方法


1.はじめに

水理計算ソフトiRICで計算を実行した後,計算結果をiRIC上で閲覧する際に不便を感じることがある.
iRICの2024年4月のアップデートでは縮尺や回転角度を数字で指定することができるようになるなど,特にver.4以降では閲覧機能が便利になった印象がある.しかし印刷レイアウト機能が使えないなど,地理空間情報を扱ううえで必要な機能が充実しているとは言い難い.当然だが地理空間情報の取り扱いにおいてはiRICよりもQGISなどのGISソフトの方が機能が充実している.そこで本記事ではiRICの計算結果をGISで表示する方法について記載する.

https://github.com/i-RIC/prepost-gui/releases/tag/release_v4.1.0.6927

2.使用ソフトのバージョン

本記事では以下に記載するソフトを用いることを前提とする.
・iRIC v4 4.1.0.6953(2024年12月時点で最新)のNays2DHソルバー
・QGIS 3.32.2(2023年8月時点で最新)

3.ポイント形式でGISに表示する方法

まずは簡単な方法として,計算結果をポイント形式でGISに表示する方法について記載する.計算結果が含まれたiRICプロジェクトファイルを開き,ファイル > エクスポート > 計算結果(図-1)から,時刻を指定しcsvファイル形式で出力.

図-1 iRIC計算結果の出力画面

次にQGISでレイヤ > レイヤを追加> csvテキストレイヤを追加から,出力したcsvファイルを選択し,"破棄するヘッダ行数"は2で"最初の行は属性名"にチェック,ジオメトリ定義はポイント座標でX値,Y値はX,Yを選択し,適切なジオメトリで追加(図-2).
(なおiRICで計算結果出力の際にESRI シェープファイル形式を選択し,QGISで直接読み込んでもよい.)

図-2 QGISでcsvテキストレイヤの読み込み
図-3 ポイント形式で計算結果を表示

読み込んだ結果が図-3である.表示されている各ポイントには計算結果が格納されているため,例えば水深や流速の大きさに応じて色分け表示することが可能である.
しかし本手法ではあくまでiRICで設定した計算格子の格子点に格納された計算結果をポイント形式で表示しており,点間には何ら値が格納されていない隙間が存在する.この隙間を埋めるには補間などの処理を別途実施する必要がある.

4.ポリゴン形式でGISに表示する方法

格子点間の隙間を生じさせずに計算結果を読み込む方法として,ここではある格子を囲む4点の格子点に格納された計算結果を,単純平均し格子に格納したうえでポリゴン形式でGISに読み込む方法について記載する.
前述の処理を行いGISにポリゴン形式で読み込み可能な形式に変換するためのpythonコードを以下に示す.

<Converter_iRICtoGIS.py>

import pandas as pd
import numpy as np
import argparse

# 引数で入力と出力のパスを指定できるように変更
def main(input_path, output_path):
    col_name = range(18)
    df = pd.read_csv(input_path, skiprows=1, names=col_name)
    _df = df.fillna('')

    # 横断,縦断方向への格子点数を読み取る
    Inum = int(df.iloc[0, 0])
    Jnum = int(df.iloc[0, 1])
    IJnum = Inum * Jnum

    # 空のデータフレームを作成(行と列のラベルを指定)
    data = pd.DataFrame(index=range(1, IJnum + 1), columns=['X1', 'Y1', 'X2', 'Y2', 'X3', 'Y3', 'X4', 'Y4', "X5", 'Y5'])
    data['X1'] = df.iloc[2:, 2].values
    data['Y1'] = df.iloc[2:, 3].values
    x2_values = df.iloc[Inum+2:, 2].values  # dfの2列目の27行目以降
    data['X2'] = np.append(x2_values, [np.nan] * (len(data) - len(x2_values)))  # 足りない部分をNaNで埋める
    y2_values = df.iloc[Inum+2:, 3].values
    data['Y2'] = np.append(y2_values, [np.nan] * (len(data) - len(y2_values)))
    x3_values = df.iloc[Inum+3:, 2].values  # dfの2列目の27行目以降
    data['X3'] = np.append(x3_values, [np.nan] * (len(data) - len(x3_values)))  # 足りない部分をNaNで埋める
    y3_values = df.iloc[Inum+3:, 3].values
    data['Y3'] = np.append(y3_values, [np.nan] * (len(data) - len(y3_values)))
    x4_values = df.iloc[3:, 2].values
    data['X4'] = np.append(x4_values, [np.nan] * (len(data) - len(x4_values)))
    y4_values = df.iloc[3:, 3].values
    data['Y4'] = np.append(y4_values, [np.nan] * (len(data) - len(y4_values)))
    data['X5'] = df.iloc[2:, 2].values
    data['Y5'] = df.iloc[2:, 3].values

    # 各出力項目を,格子点4点で平均化しメッシュに格納
    def calc_mean_values(df, indices, col_idx):
        values = []
        for i in range(1, len(data) + 1):
            try:
                values.append(np.mean([float(df.iloc[i + idx, col_idx]) for idx in indices]))
            except IndexError:
                values.append(np.nan)
        return values

    columns_to_calculate = [
        ('Depth(m)', 4),
        ('Elevation(m)', 5),
        ('WaterSurfaceElevation(m)', 6),
        ('ShearStress(Nm-2)', 7),
        ('Vorticity(s-1)', 8),
        ('FroudeNumber', 9),
        ('CrossSectionalMinBedElev(m)', 10),
        ('CrossSectionalAveBedElev(m)', 11),
        ('CrossSectionalAveWaterLevel(m)', 12),
        ('Velocity(ms-1)X', 13),
        ('Velocity(ms-1)Y', 14),
        ('Velocity(ms-1) (magnitude)', 15),
    ]

    for col_name, col_idx in columns_to_calculate:
        data[col_name] = calc_mean_values(df, [1, 2, Inum+1, Inum+2], col_idx)

    # well-known-textフォーマットとして必要な列を作成
    data.insert(0, 'geom', '"POLYGON((')
    data.insert(data.columns.get_loc('Y5') + 1, '))', '))"')
    data.insert(data.columns.get_loc('Y1') + 1, ',1', ',')
    data.insert(data.columns.get_loc('Y2') + 1, ',2', ',')
    data.insert(data.columns.get_loc('Y3') + 1, ',3', ',')
    data.insert(data.columns.get_loc('Y4') + 1, ',4', ',')
    data.insert(data.columns.get_loc('))') + 1, ',5', ',')
    data.insert(data.columns.get_loc('Depth(m)') + 1, ',6', ',')
    data.insert(data.columns.get_loc('Elevation(m)') + 1, ',7', ',')
    data.insert(data.columns.get_loc('WaterSurfaceElevation(m)') + 1, ',8', ',')
    data.insert(data.columns.get_loc('ShearStress(Nm-2)') + 1, ',9', ',')
    data.insert(data.columns.get_loc('Vorticity(s-1)') + 1, ',10', ',')
    data.insert(data.columns.get_loc('FroudeNumber') + 1, ',11', ',')
    data.insert(data.columns.get_loc('CrossSectionalMinBedElev(m)') + 1, ',12', ',')
    data.insert(data.columns.get_loc('CrossSectionalAveBedElev(m)') + 1, ',13', ',')
    data.insert(data.columns.get_loc('CrossSectionalAveWaterLevel(m)') + 1, ',14', ',')
    data.insert(data.columns.get_loc('Velocity(ms-1)X') + 1, ',15', ',')
    data.insert(data.columns.get_loc('Velocity(ms-1)Y') + 1, ',16', ',')
    data.insert(data.columns.get_loc('Velocity(ms-1) (magnitude)') + 1, ',17', ',')

    id_column = list(range(1, data.shape[0] + 1))  # int型の通し番号を作成
    data.insert(data.columns.get_loc(',17') + 1, 'id', id_column)  # VeloMの次の列に挿入
    data['id'] = data['id'].astype(str)

    columns_to_nan = ['X1', 'X2', 'X3', 'X4', 'X5', 'Y1', 'Y2', 'Y3', 'Y4', 'Y5']
    # 縦断方向への格子点数の倍数に該当する行の座標をNaNに置き換え
    for i in range(1, len(data) + 1):
        if i % Inum == 0:
            data.loc[i, columns_to_nan] = np.nan

    # ヘッダ作成
    header_row = [
        'geom,', 'Depth(m),', 'Elevation(m),', 'WaterSurfaceElevation(m),', 'ShearStress(Nm-2),', 'Vorticity(s-1),',
        'FroudeNumber,', 'CrossSectionalMinBedElev(m),', 'CrossSectionalAveBedElev(m),', 'CrossSectionalAveWaterLevel(m),', 
        'Velocity(ms-1)X,', 'Velocity(ms-1)Y,', 'Velocity(ms-1) (magnitude),', 'id']

    header_df = pd.DataFrame([header_row])  # ヘッダー行をデータフレームに変換
    output_df = pd.concat([header_df, data], ignore_index=True)  # ヘッダーとデータを結合

    # 出力
    output_df.to_csv(output_path, sep='\t', index=False, header=False, quoting=3)

    print(f"{output_path} に保存されました")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="iRIC計算結果の処理スクリプト")
    parser.add_argument("input_path", help="入力CSVファイルのパス")
    parser.add_argument("output_path", help="出力ファイルのパス")
    args = parser.parse_args()

    main(args.input_path, args.output_path)

上記コード<Converter_iRICtoGIS.py>の実行コマンドは以下の通り

python Converter_iRICtoGIS.py <入力ファイル.csv> <出力ファイル.txt>

なお入力ファイルは前章で記載した方法により出力したcsv形式のiRICの計算結果である.

例として,出力ファイル.txtの中身の一部を以下に示す.2行目以下の再左列に14個のtab空白,(())内にxy座標が含まれない行があるがお気になさらず.

geom,	Depth(m),	Elevation(m),	WaterSurfaceElevation(m),	ShearStress(Nm-2),	Vorticity(s-1),	FroudeNumber,	CrossSectionalMinBedElev(m),	CrossSectionalAveBedElev(m),	CrossSectionalAveWaterLevel(m),	Velocity(ms-1)X,	Velocity(ms-1)Y,	Velocity(ms-1) (magnitude),	id																																										
														"POLYGON((	-39372.7507319	-53612.3915369	,	-39370.8697017	-53613.3265104	,	-39375.4458886	-53617.1147964	,	-39377.3383091	-53616.15475	,	-39372.7507319	-53612.3915369	))"	,	0.5523852090827499	,	29.265	,	29.817385209075	,	19.11732606025	,	0.001998688252985	,	0.49084101171625005	,	25.956092469650002	,	27.551310390299996	,	29.8242154725	,	-0.87703391390875	,	-0.72826152643925	,	1.1399964595	,	1
														"POLYGON((	-39377.3383091	-53616.15475	,	-39375.4458886	-53617.1147964	,	-39379.9850466	-53620.9364258	,	-39381.8856024	-53619.9531308	,	-39377.3383091	-53616.15475	))"	,	0.5366985415884999	,	29.265	,	29.801698541574996	,	19.212024914925	,	0.0030987419646125	,	0.49682764679525004	,	26.0379596195	,	27.589451702399998	,	29.809081720000002	,	-0.8737138009754999	,	-0.74270915809325	,	1.1467927943675	,	2
														"POLYGON((	-39381.8856024	-53619.9531308	,	-39379.9850466	-53620.9364258	,	-39384.4501471	-53624.8247421	,	-39386.3523281	-53623.8218471	,	-39381.8856024	-53619.9531308	))"	,	0.5173923750695	,	29.265	,	29.782392375075	,	19.207408442275	,	0.004716598433035	,	0.5028770136457501	,	26.0809928565	,	27.64030678525	,	29.78816469165	,	-0.84592475012175	,	-0.745511860518	,	1.1276329458225	,	3
														"POLYGON((	-39386.3523281	-53623.8218471	,	-39384.4501471	-53624.8247421	,	-39388.8041611	-53628.8130886	,	-39390.6982023	-53627.7960666	,	-39386.3523281	-53623.8218471	))"	,	0.495048992705	,	29.265	,	29.760048992724997	,	19.858529704675	,	0.0056141024968225	,	0.5190643927055	,	26.0633662731	,	27.6911618681	,	29.76198727005	,	-0.83055337886825	,	-0.76757453639025	,	1.1310349800600001	,	4
														"POLYGON((	-39390.6982023	-53627.7960666	,	-39388.8041611	-53628.8130886	,	-39393.0100598	-53632.9348089	,	-39394.8829413	-53631.910957	,	-39390.6982023	-53627.7960666	))"	,	0.4652339294315	,	29.265	,	29.730233929449998	,	21.78063198325	,	0.0088623139903825	,	0.5552297187485	,	26.0457396897	,	27.742016950900002	,	29.7291001579	,	-0.840696475905	,	-0.82854172284475	,	1.180560421905	,	5
														"POLYGON((	-39394.8829413	-53631.910957	,	-39393.0100598	-53632.9348089	,	-39397.0308144	-53637.2232464	,	-39398.8662612	-53636.201686	,	-39394.8829413	-53631.910957	))"	,	0.42140638618525	,	29.257422858225	,	29.678829244425	,	26.404796050199998	,	0.004750940112024126	,	0.6331177944145	,	26.0303565057	,	27.781022789700003	,	29.6591053734	,	-0.8946606873072499	,	-0.97835973388325	,	1.32642047009	,	6
														"POLYGON((	-39398.8662612	-53636.201686	,	-39397.0308144	-53637.2232464	,	-39401.8759495	-53642.9984852	,	-39403.6526797	-53642.0116082	,	-39398.8662612	-53636.201686	))"	,	0.39176710543525	,	29.227114291124998	,	29.618881396575	,	30.116873778074996	,	-0.011946676558300874	,	0.69327598766175	,	26.02170351985	,	27.7844808965	,	29.57435050125	,	-0.8611870494257501	,	-1.0566418209950001	,	1.3637361361525	,	7
														"POLYGON((	-39403.6526797	-53642.0116082	,	-39401.8759495	-53642.9984852	,	-39406.4001977	-53649.0525484	,	-39408.1042929	-53648.1093364	,	-39403.6526797	-53642.0116082	))"	,	0.398226430222	,	29.174074298725	,	29.57230072895	,	28.7438298594	,	-0.023249414297449998	,	0.6722251783444999	,	26.019780732100003	,	27.75239127125	,	29.5246371551	,	-0.7494835057557498	,	-1.02170328473	,	1.2674121010725	,	8
														"POLYGON((	-39408.1042929	-53648.1093364	,	-39406.4001977	-53649.0525484	,	-39410.6478531	-53655.3354251	,	-39412.2859707	-53654.4337604	,	-39408.1042929	-53648.1093364	))"	,	0.39920521487099997	,	29.11345716455	,	29.5126623794	,	28.997014326525	,	-0.024923939240975	,	0.67356909411525	,	26.02010134375	,	27.708452402	,	29.45674143015	,	-0.7302111957305	,	-1.08996929858	,	1.3122499945725001	,	9
														"POLYGON((	-39412.2859707	-53654.4337604	,	-39410.6478531	-53655.3354251	,	-39414.6632096	-53661.7971042	,	-39416.262583	-53660.9237703	,	-39412.2859707	-53654.4337604	))"	,	0.376682515042	,	29.05284003035	,	29.429522545375	,	34.64253499165	,	-0.0369179113415	,	0.75102972037725	,	26.0204219554	,	27.66451353275	,	29.346275575950003	,	-0.7464401346285	,	-1.2214477710349998	,	1.4318443682825002	,	10
														"POLYGON((	-39416.262583	-53660.9237703	,	-39414.6632096	-53661.7971042	,	-39418.4905614	-53668.3875747	,	-39420.0989998	-53667.5182559	,	-39416.262583	-53660.9237703	))"	,	0.316523357647	,	28.992222896125	,	29.3087462538	,	41.57412273839999	,	-0.09975524869837499	,	0.88471100209775	,	26.02074256705	,	27.5632932244	,	29.1990241318	,	-0.751974169603	,	-1.3886142529324998	,	1.5809505523025	,	11
														"POLYGON((	-39420.0989998	-53667.5182559	,	-39418.4905614	-53668.3875747	,	-39422.1742025	-53675.0568257	,	-39423.8600909	-53674.1561072	,	-39420.0989998	-53667.5182559	))"	,	0.24870162803025	,	28.930444790575002	,	29.179146418625	,	35.07558833495	,	-0.22527503882375	,	0.8674535595105001	,	26.01192332015	,	27.5207796923	,	29.095663697550002	,	-0.6118753222534999	,	-1.2867463651732498	,	1.4290483087024999	,	12
														"POLYGON((	-39423.8600909	-53674.1561072	,	-39422.1742025	-53675.0568257	,	-39424.9613367	-53680.2687111	,	-39426.7963681	-53679.3736671	,	-39423.8600909	-53674.1561072	))"	,	0.26859958398575	,	28.865183770924997	,	29.133783354899997	,	14.96850240025	,	-0.314189955595	,	0.527512909114	,	26.043368750950002	,	27.5398236108	,	29.12113891745	,	-0.3098629156685	,	-0.7411182531777499	,	0.807063149305	,	13
														"POLYGON((	-39426.7963681	-53679.3736671	,	-39424.9613367	-53680.2687111	,	-39427.676682	-53685.5048365	,	-39429.6952418	-53684.5970055	,	-39426.7963681	-53679.3736671	))"	,	0.3681585846595	,	28.7964398371	,	29.164598421774997	,	2.696587135417	,	-0.29655666222375	,	0.1909981814305	,	26.13779445035	,	27.505862101750004	,	29.176153198999998	,	-0.08536707422795001	,	-0.2242888916599	,	0.290654989201225	,	14
														"POLYGON((	-39429.6952418	-53684.5970055	,	-39427.676682	-53685.5048365	,	-39430.3085256	-53690.7720571	,	-39432.5257729	-53689.8428712	,	-39429.6952418	-53684.5970055	))"	,	0.4796003550505	,	28.726534931925002	,	29.206135287000002	,	0.5178962213295	,	-0.18179757824765	,	0.076315452702575	,	26.18884737285	,	27.473325929900003	,	29.20910207695	,	-0.005363436630850002	,	-0.007302090073500001	,	0.1042614736742	,	15
														"POLYGON((	-39432.5257729	-53689.8428712	,	-39430.3085256	-53690.7720571	,	-39432.8451544	-53696.0772281	,	-39435.257022	-53695.128013	,	-39432.5257729	-53689.8428712	))"	,	0.575709664432	,	28.656630026749998	,	29.2323396912	,	0.28960072319725	,	-0.058440071686599995	,	0.059608134388125	,	26.1740480929	,	27.440789758050002	,	29.2337205282	,	0.043553502905825	,	0.10234180045215	,	0.129131777427725	,	16
														"POLYGON((	-39435.257022	-53695.128013	,	-39432.8451544	-53696.0772281	,	-39435.2748555	-53701.4272045	,	-39437.8580499	-53700.4691796	,	-39435.257022	-53695.128013	))"	,	0.6524960003812499	,	28.58672512155	,	29.239221121975003	,	0.61629932457925	,	0.0071447678934249996	,	0.08021697727025001	,	26.10273248355	,	27.408253586150003	,	29.2275545447	,	0.0855875677811	,	0.1490727566965	,	0.17404527886550003	,	17
														"POLYGON((	-39437.8580499	-53700.4691796	,	-39435.2748555	-53701.4272045	,	-39437.585916	-53706.8288416	,	-39440.2979174	-53705.8831199	,	-39437.8580499	-53700.4691796	))"	,	0.70945140283025	,	28.525558329524998	,	29.235009732400002	,	1.4055720068245	,	-0.012871780819875	,	0.12082897586245	,	25.998670268749997	,	27.37978443575	,	29.2216286402	,	0.160549076102875	,	0.24969400009974999	,	0.30058611732425	,	18
														"POLYGON((	-39440.2979174	-53705.8831199	,	-39437.585916	-53706.8288416	,	-39439.0697282	-53710.4928008	,	-39441.8416519	-53709.5839032	,	-39440.2979174	-53705.8831199	))"	,	0.73939899480875	,	28.490605876974996	,	29.2300048718	,	2.0385883477749998	,	-0.12348325618275	,	0.14586737883775	,	25.939206146	,	27.2882552931	,	29.230026252400002	,	0.19426936386575	,	0.38274663036225	,	0.43298775692575	,	19
														"POLYGON((	-39441.8416519	-53709.5839032	,	-39439.0697282	-53710.4928008	,	-39440.5044141	-53714.1788129	,	-39443.3124962	-53713.3186547	,	-39441.8416519	-53709.5839032	))"	,	0.74891052767025	,	28.481867763849998	,	29.230778291525	,	2.0007023978475003	,	-0.22541461794825002	,	0.14348265973225	,	25.9243401153	,	27.2089272149	,	29.218800481549998	,	0.08153606629650001	,	0.29295102186885	,	0.33788734151149996	,	20
														"POLYGON((	-39443.3124962	-53713.3186547	,	-39440.5044141	-53714.1788129	,	-39441.8997987	-53717.8824674	,	-39444.7250283	-53717.0805809	,	-39443.3124962	-53713.3186547	))"	,	0.7519287354390001	,	28.481867763849998	,	29.233796499275	,	1.9163145419292502	,	-0.2741080413135	,	0.13324498876515	,	25.9243401153	,	27.2089272149	,	29.20716894125	,	-0.074063320841275	,	0.0440624456075	,	0.250859139816425	,	21
														"POLYGON((	-39444.7250283	-53717.0805809	,	-39441.8997987	-53717.8824674	,	-39443.2657075	-53721.5993535	,	-39446.0938264	-53720.8628881	,	-39444.7250283	-53717.0805809	))"	,	0.747638930934	,	28.481867763849998	,	29.22950669475	,	3.6904004582267502	,	-0.28411034350700004	,	0.17511968105865	,	25.9243401153	,	27.284188271650002	,	29.2077458139	,	-0.231185024310525	,	-0.30576393687135	,	0.419279387030175	,	22
														"POLYGON((	-39446.0938264	-53720.8628881	,	-39443.2657075	-53721.5993535	,	-39444.6119657	-53725.3250608	,	-39447.4334684	-53724.6587827	,	-39446.0938264	-53720.8628881	))"	,	0.7280620389775	,	28.481867763849998	,	29.209929802800005	,	8.61652237081	,	-0.275783798729	,	0.28239266900975	,	25.9243401153	,	27.3594493284	,	29.1986875047	,	-0.38290222419125	,	-0.71342212696825	,	0.8158412697335	,	23
														"POLYGON((	-39447.4334684	-53724.6587827	,	-39444.6119657	-53725.3250608	,	-39445.9483986	-53729.0551787	,	-39448.7585324	-53728.4614709	,	-39447.4334684	-53724.6587827	))"	,	0.70365312594375	,	28.481867763849998	,	29.185520889775002	,	13.392598986542499	,	-0.269786828095	,	0.36844175199925	,	25.9243401153	,	27.284188271650002	,	29.183319089	,	-0.426694947743	,	-0.93372753638025	,	1.030253917804	,	24
														"POLYGON((			,			,			,			,			))"	,	0.6432068126695001	,	28.85596600575	,	29.499172818425	,	17.504726189557502	,	-0.15400461972235	,	0.44187059133574996	,	25.9252059819	,	27.37376191725	,	29.5023160095	,	-0.64705096318375	,	-0.8442009068149999	,	1.0953748592085	,	25
														"POLYGON((	-39370.8697017	-53613.3265104	,	-39368.9886714	-53614.2614839	,	-39373.5526946	-53618.0748422	,	-39375.4458886	-53617.1147964	,	-39370.8697017	-53613.3265104	))"	,	0.58708122337975	,	29.23006424765	,	29.817145471049997	,	20.1534473756	,	-0.0382224113497	,	0.493975694799	,	25.956092469650002	,	27.551310390299996	,	29.8242154725	,	-0.904388425465	,	-0.762005069076	,	1.1826417885225	,	26
														"POLYGON((	-39375.4458886	-53617.1147964	,	-39373.5526946	-53618.0748422	,	-39378.0830765	-53621.9197196	,	-39379.9850466	-53620.9364258	,	-39375.4458886	-53617.1147964	))"	,	0.5722497748584999	,	29.23006424765	,	29.802314022525	,	20.129358715775	,	-0.0379616543770125	,	0.49803199267849996	,	26.0379596195	,	27.589451702399998	,	29.809081720000002	,	-0.8932927441440001	,	-0.7777457476545	,	1.1845014725024998	,	27
														"POLYGON((	-39379.9850466	-53620.9364258	,	-39378.0830765	-53621.9197196	,	-39382.546176	-53625.8276356	,	-39384.4501471	-53624.8247421	,	-39379.9850466	-53620.9364258	))"	,	0.5537016528007499	,	29.23006424765	,	29.783765900474997	,	20.06539336425	,	-0.0382651966561025	,	0.5028360745730001	,	26.0809928565	,	27.64030678525	,	29.78816469165	,	-0.86398254232275	,	-0.7793932634927501	,	1.1636271541025	,	28
														"POLYGON((	-39384.4501471	-53624.8247421	,	-39382.546176	-53625.8276356	,	-39386.9083519	-53629.8301093	,	-39388.8041611	-53628.8130886	,	-39384.4501471	-53624.8247421	))"	,	0.5315517199962501	,	29.23006424765	,	29.761615967675002	,	20.7461822662	,	-0.0394010867855325	,	0.51850396651925	,	26.0633662731	,	27.6911618681	,	29.76198727005	,	-0.85526224425075	,	-0.7987907772925	,	1.1703334982225002	,	29
														"POLYGON((	-39388.8041611	-53628.8130886	,	-39386.9083519	-53629.8301093	,	-39391.1359628	-53633.9586599	,	-39393.0100598	-53632.9348089	,	-39388.8041611	-53628.8130886	))"	,	0.50198915657225	,	29.23006424765	,	29.732053404250003	,	22.779027082625	,	-0.0393819389209675	,	0.554129930711	,	26.0457396897	,	27.742016950900002	,	29.7291001579	,	-0.872872262549	,	-0.8540013853755	,	1.2212689357925002	,	30
														"POLYGON((	-39393.0100598	-53632.9348089	,	-39391.1359628	-53633.9586599	,	-39395.1953677	-53638.2448067	,	-39397.0308144	-53637.2232464	,	-39393.0100598	-53632.9348089	))"	,	0.457428819522	,	29.222104232124998	,	29.679533051675	,	27.887700731525	,	-0.042917760224650874	,	0.6338269681450001	,	26.0303565057	,	27.781022789700003	,	29.6591053734	,	-0.9318633472210001	,	-1.0120060917755	,	1.37659549453	,	31

本pythonコードで出力されたファイルをQGISで表示するには,レイヤ > レイヤを追加> csvテキストレイヤを追加から,出力ファイルを選択し,破棄するヘッダ行は0,最初の行は属性名として,ジオメトリ定義はWKTで適切なCRSを選択し,サンプルデータ欄で属性名geomのみstring型(文字型),それ以外の属性はdouble型など数字型として追加.

図-4 QGISでポリゴン形式の読み込み

読み込んだ結果が図-5である.各格子点を結んでできたポリゴンには,周囲4つの格子点の計算結果を平均した値が格納されている.

図-5 iRIC計算結果をポリゴン形式で読み込んだ結果

QGISで計算結果を読み込んでいるため,iRICでは使えない印刷レイアウト機能を用いることができる(図-6).

図-6 印刷レイアウト機能により出力した図,水深の大きさで色分けされている

5.おわりに

本記事ではiRIC Nays2DHの計算結果をポイント形式,ポリゴン形式でGISに表示する方法について記載した.これによりiRICの計算結果可視化ウィンドウよりも便利に計算結果を閲覧可能となるはずである.

本記事で紹介した手法やコードに関する誤り等の指摘は歓迎しますが,使用したことによる損失への補填は致しかねます.

いいなと思ったら応援しよう!