我有一个 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;
发生的情况是下一个转换工具将“Saltlake”的 AZIMUT 值误认为其 Z 位置,因为在 input.txt 的 POSITION 中的 y 值之后没有给出输入 - 与“Oak”不同。
现在,是否可以用“0”替换缺少的 Z 输入空间,当然,如果给出 Z 位置,不要替换它?
目的是使 output.txt 看起来像这样:
"Saltlake";950.28174;797.89899;0;-25.722504;
"Oak";900.71307;777.2226;-3.8146973e-006;-168.15758;