何百もの次の行 (オブジェクト) を含む GIS 入力ファイルがあります。
{
POSITION="[950.28174, 797.89899]";
TYPE="Saltlake";
AZIMUT="-25.722504";
PARENT="";
};
{
POSITION="[900.71307, 777.2226, -3.8146973]";
TYPE="Oak";
AZIMUT="-168.15758";
PARENT="";
};
POSITIONは、長さ、幅、高さ [x,y,z] を意味します。現在、次のツールの入力を変換するために、この powershell スクリプトを使用しています。
$d=gc input.txt
$rows=@()
for ($i=0; $i -le $d.count -2; ++$i) {
if( $d[$i] -match "POSITION" ) {
$pos = $d[$i].Replace('POSITION="[', '').Replace(',',';').Replace(']";','').Replace(' ', '').trim()
$typ = $d[$i+1].Replace('TYPE=', '').Replace(';', '').Replace(' ', '').trim()
$ori = $d[$i+2].Replace('AZIMUT="', '').Replace('"', '').Replace('PARENT=;', '').Replace(' ', '').trim()
$rows += $("{0};{1};{2}" -f $typ,$pos,$ori)
}
}
sc -path output.csv -value $rows
output.txt は次のようになります。
"Saltlake";950.28174;797.89899;-25.722504;
"Oak";900.71307;777.2226;-3.8146973e-006;-168.15758;
次の変換ツールは、"Oak" とは異なり、input.txt の POSITION の y 値の後に入力が与えられていないため、"Saltlake" の AZIMUT 値をその Z 位置と間違えます。
さて、不足している Z 入力スペースを「0」に置き換えることは可能ですか?もちろん、Z 位置が指定されている場合は置き換えないでください。
目的は、output.txt を次のようにすることです。
"Saltlake";950.28174;797.89899;0;-25.722504;
"Oak";900.71307;777.2226;-3.8146973e-006;-168.15758;