FAQ/ カルバートデータをDioVISTAにインポートするPowerShellスクリプト
盛土データをDioVISTAにインポートするPowerShellスクリプト と同様に、カルバートを一括で取り込む方法はありますか。
回答
以下のPowerShellスクリプトを試してください。
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 | #プロジェクトに盛土を追加するスクリプト
# プロジェクトファイルを指定する(入力)
$fsxproj = ".\sample.fsxproj"
# プロジェクトファイルを指定する(出力)
$newFsxproj = ".\sample_addCulvert.fsxproj"
# csvファイルを指定する(入力)
$csv = Import-Csv -Encoding UTF8 ".\Culvert.csv"
#プロジェクトの読み込み
$fsxprojInfo = Get-Item $fsxproj
[xml]$xml = (cat -Encoding UTF8 $fsxproj)
# Culvert.csvから読み込んだデータをカルバートとしてプロジェクトに追加
foreach ($id in ($csv | select -Unique "ID")) {
$CoordInfos = $csv | where { $_.ID -eq $id.ID }
$firstCoordInfo = $CoordInfos[0]
$newCulvert = $xml.CreateElement("culvert")
[void]$xml.floodSim.conditions.culverts.AppendChild($newCulvert)
$attrs = @{
"name" = "カルバート" + $firstCoordInfo.ID.ToString()
"mode" = "0"
"width" = $firstCoordInfo.Width.ToString()
"height" = $firstCoordInfo.Height.ToString()
"diameter" = "1"
"length" = "1"
"roughness" = "0.014"
"lossCoef" = "1"
"valid" = "True"
"lineStyle" = "0 2 200 100 0 255"
}
$attrs.GetEnumerator() | % {
$newAttribute = $xml.CreateAttribute($_.Name)
$newAttribute.Value = $_.Value
[void]$newCulvert.Attributes.Append($newAttribute)
}
$newPts = $xml.CreateElement("pts")
[void]$newCulvert.AppendChild($newPts)
foreach ($coordInfo in $CoordInfos) {
$coords = @{
x = $coordInfo.X0
y = $coordInfo.Y0
},
@{
x = $coordInfo.X1
y = $coordInfo.Y1
}
foreach($c in $coords){
$coordText = "{0:0.000000000000000} {1:0.000000000000000}" -f ([double]$c.y * [Math]::PI / 180.0), ([double]$c.x * [Math]::PI / 180.0)
$coordValue = $xml.CreateTextNode($coordText)
$newCoord = $xml.CreateElement("coord")
[void]$newCoord.AppendChild($coordValue)
[void]$newPts.AppendChild($newCoord)
}
}
}
$xml.Save((Join-Path $fsxprojInfo.DirectoryName $newFsxproj))
|
盛土のデータの例を示します。これをテキストエディタに貼り付け "Culvert.csv" として保存します。エンコーディングはUTF8とします。
| ID,X0,Y0,X1,Y1,Width,Height
1,140,36,140.001,36.001,1,2
2,140.002,36,140.002,36.001,2,3
3,140.003,36,140.004,36.001,3,4
|
カラム |
内容 |
ID |
カルバートID |
X0 |
始点の経度(degree) |
Y0 |
始点の緯度(degree) |
X1 |
終点の経度(degree) |
Y1 |
終点の緯度(degree) |
Width |
幅(m) |
Height |
高さ(m) |
スクリプトを実行すると、カルバート1, カルバート2, およびカルバート3が作られます。画面左から、カルバート1、カルバート2、およびカルバート3です。
「カルバート1」のプロパティを示します。
関連項目
最終更新日:
2022-07-08