Batch command to extract position of wildfire photos
Posted: 10 Jul 2016 23:25
Hello,
I would appreciate help defining a DOS Batch command to extract a text string from a series of XML files, and place those strings as comma separated value on separate lines in a single .CSV file:
PhotoPositions.CSV
Filename1.XML,LatitudeDeg,LongitudeDeg,AltitudeMeters
Filename2.XML,LatitudeDeg,LongitudeDeg,AltitudeMeters
Filename3.XML,LatitudeDeg,LongitudeDeg,AltitudeMeters
etc.
The string desired is the number values in the following portion of the XML file (entire file below)
-<ImagePos>
-<LatLonAlt>
<LatitudeDeg>38.2104710594137</LatitudeDeg>
<LongitudeDeg>-120.526212270026</LongitudeDeg>
<AltitudeMeters>620.315856933594</AltitudeMeters>
This is to create an input file of photo positions for Pix4D. Each thermal infrared photo (possibly hundreds) has an associated XML file from which extracted strings need to become one line in a .CSV.
This will be used to stitch together ortho-mosaics from many infrared photos of wildfires (video frame-grabs), and then trace fire perimeters for Incident Command teams.
Thanks for any help, or to point me to a source of info,
Mark Zaller
Wildfire Pilot
markz@courtneyaviation.com
sample XML file created automatically with each infrared photo:
<!DOCTYPE Vehicle>
<Vehicle>
<VehicleId>4294967295</VehicleId>
<GimbalState>
<PanTiltRollAngles>
<Pan>0.000872665</Pan>
<Tilt>-1.39626</Tilt>
<Roll>0</Roll>
</PanTiltRollAngles>
<GpsData>
<Time>
<Year>2016</Year>
<Month>6</Month>
<Day>28</Day>
<Hour>19</Hour>
<Minute>18</Minute>
<Seconds>24.67</Seconds>
</Time>
<NumSatsTracked>9</NumSatsTracked>
<Status>59392</Status>
<PDOP>1.6</PDOP>
<GimbalPos>
<LatLonAlt>
<LatitudeDeg>38.1709177777778</LatitudeDeg>
<LongitudeDeg>-120.549282222222</LongitudeDeg>
<AltitudeMeters>1711.23999023438</AltitudeMeters>
<AltitudeType>1</AltitudeType>
</LatLonAlt>
</GimbalPos>
<GroundSpeed>
<VectorNED>
<North>7.73000001907349</North>
<East>48.1199989318848</East>
<Down>0.280000001192093</Down>
</VectorNED>
</GroundSpeed>
</GpsData>
<CameraEulerAngles>
<Euler>
<Roll>0.201364621520042</Roll>
<Pitch>-1.45399701595306</Pitch>
<Yaw>1.21607315540314</Yaw>
</Euler>
</CameraEulerAngles>
<GimbalBodyEulerAngles>
<Euler>
<Roll>0.0233999993652105</Roll>
<Pitch>-0.0599999986588955</Pitch>
<Yaw>1.41390001773834</Yaw>
</Euler>
</GimbalBodyEulerAngles>
<GimbalModeSettings>
<GimbalMode>17</GimbalMode>
</GimbalModeSettings>
<GimbalVersion>
<SerialNumber>663</SerialNumber>
<FirmwareMajor>2</FirmwareMajor>
<FirmwareMinor>2</FirmwareMinor>
<FirmwareSub>2</FirmwareSub>
<FirmwareReleased>1</FirmwareReleased>
<FirmwareDate>10/29/2013</FirmwareDate>
<HardwareRevision>65</HardwareRevision>
<HardwareConfig>33980419</HardwareConfig>
<HardwareDate>11/25/2014</HardwareDate>
<CameraATypeId>10</CameraATypeId>
<CameraBTypeId>21</CameraBTypeId>
<CameraCTypeId>0</CameraCTypeId>
<CameraDTypeId>0</CameraDTypeId>
<FirmwarePatch>1</FirmwarePatch>
<FirmwareDesc></FirmwareDesc>
<LensMajor>0</LensMajor>
<LensMinor>0</LensMinor>
<LensSub>0</LensSub>
<LensReleased>0</LensReleased>
<LensDate></LensDate>
<LensPatch>0</LensPatch>
<LensDesc></LensDesc>
</GimbalVersion>
<SPOI>
<LatLonAlt>
<LatitudeDeg>-90</LatitudeDeg>
<LongitudeDeg>-180</LongitudeDeg>
<AltitudeMeters>-30000</AltitudeMeters>
<AltitudeType>0</AltitudeType>
</LatLonAlt>
</SPOI>
<ImagePos>
<LatLonAlt>
<LatitudeDeg>38.1713978007073</LatitudeDeg>
<LongitudeDeg>-120.547633701498</LongitudeDeg>
<AltitudeMeters>402.219909667969</AltitudeMeters>
<AltitudeType>1</AltitudeType>
</LatLonAlt>
</ImagePos>
<CorrectedImagePos>
<LatLonAlt>
<LatitudeDeg>-90</LatitudeDeg>
<LongitudeDeg>-180</LongitudeDeg>
<AltitudeMeters>-30000</AltitudeMeters>
<AltitudeType>0</AltitudeType>
</LatLonAlt>
</CorrectedImagePos>
<NavFilterHealth>
<NavFilterMode>2</NavFilterMode>
<NavFilterPosition>1</NavFilterPosition>
<NavFilterVelocity>1</NavFilterVelocity>
<NavFilterHeading>1</NavFilterHeading>
<NavFilterAttitude>1</NavFilterAttitude>
<NavFilterGyroBias>1</NavFilterGyroBias>
<NavFilterAccBias>1</NavFilterAccBias>
<NavFilterMagBias>1</NavFilterMagBias>
</NavFilterHealth>
<BoardTemp>36</BoardTemp>
<DeployState>10</DeployState>
</GimbalState>
<GimbalRates>
<GimbalTime>2420517</GimbalTime>
<AxisRates>
<Pan>-0.00837758</Pan>
<Tilt>0.0174533</Tilt>
<Roll>0</Roll>
</AxisRates>
<MountRates>
<Pan>0.0106465</Pan>
<Tilt>0.00610865</Tilt>
<Roll>0.0612611</Roll>
</MountRates>
<GimbalModeSettings>
<GimbalMode>17</GimbalMode>
</GimbalModeSettings>
</GimbalRates>
<CameraState>
<ActiveCamera>1</ActiveCamera>
<HorizontalFOV>0.1839</HorizontalFOV>
<VerticalFOV>0.1379</VerticalFOV>
<ZoomRatio>1</ZoomRatio>
<MaxFOV0>0.971974</MaxFOV0>
<MinFOV0>0.0338594</MinFOV0>
<MaxFOV1>0.183958</MaxFOV1>
<MinFOV1>0.183958</MinFOV1>
<MaxFOV2>0.418879</MaxFOV2>
<MinFOV2>0.0232711</MinFOV2>
<MaxFOV3>0.418879</MaxFOV3>
<MinFOV3>0.0232711</MinFOV3>
<FpaTemp>26</FpaTemp>
<CaseTemp>-128</CaseTemp>
<SceneIntesity>0</SceneIntesity>
</CameraState>
<Laser00 Wavelength="0" Classification="0" MinAgl="0" LaserType="0" LaserProtocol="0" PowerLevel="0" Id="0" BeamDivergence="0" PowerLimited="0" ArmedState="0" LaserPower="0"/>
<Laser11 Wavelength="0" Classification="0" MinAgl="0" LaserType="0" LaserProtocol="0" PowerLevel="0" Id="1" BeamDivergence="0" PowerLimited="0" ArmedState="0" LaserPower="0"/>
<Laser22 Wavelength="0" Classification="0" MinAgl="0" LaserType="0" LaserProtocol="0" PowerLevel="0" Id="2" BeamDivergence="0" PowerLimited="0" ArmedState="0" LaserPower="0"/>
<Laser33 Wavelength="0" Classification="0" MinAgl="0" LaserType="0" LaserProtocol="0" PowerLevel="0" Id="3" BeamDivergence="0" PowerLimited="0" ArmedState="0" LaserPower="0"/>
</Vehicle>
I would appreciate help defining a DOS Batch command to extract a text string from a series of XML files, and place those strings as comma separated value on separate lines in a single .CSV file:
PhotoPositions.CSV
Filename1.XML,LatitudeDeg,LongitudeDeg,AltitudeMeters
Filename2.XML,LatitudeDeg,LongitudeDeg,AltitudeMeters
Filename3.XML,LatitudeDeg,LongitudeDeg,AltitudeMeters
etc.
The string desired is the number values in the following portion of the XML file (entire file below)
-<ImagePos>
-<LatLonAlt>
<LatitudeDeg>38.2104710594137</LatitudeDeg>
<LongitudeDeg>-120.526212270026</LongitudeDeg>
<AltitudeMeters>620.315856933594</AltitudeMeters>
This is to create an input file of photo positions for Pix4D. Each thermal infrared photo (possibly hundreds) has an associated XML file from which extracted strings need to become one line in a .CSV.
This will be used to stitch together ortho-mosaics from many infrared photos of wildfires (video frame-grabs), and then trace fire perimeters for Incident Command teams.
Thanks for any help, or to point me to a source of info,
Mark Zaller
Wildfire Pilot
markz@courtneyaviation.com
sample XML file created automatically with each infrared photo:
<!DOCTYPE Vehicle>
<Vehicle>
<VehicleId>4294967295</VehicleId>
<GimbalState>
<PanTiltRollAngles>
<Pan>0.000872665</Pan>
<Tilt>-1.39626</Tilt>
<Roll>0</Roll>
</PanTiltRollAngles>
<GpsData>
<Time>
<Year>2016</Year>
<Month>6</Month>
<Day>28</Day>
<Hour>19</Hour>
<Minute>18</Minute>
<Seconds>24.67</Seconds>
</Time>
<NumSatsTracked>9</NumSatsTracked>
<Status>59392</Status>
<PDOP>1.6</PDOP>
<GimbalPos>
<LatLonAlt>
<LatitudeDeg>38.1709177777778</LatitudeDeg>
<LongitudeDeg>-120.549282222222</LongitudeDeg>
<AltitudeMeters>1711.23999023438</AltitudeMeters>
<AltitudeType>1</AltitudeType>
</LatLonAlt>
</GimbalPos>
<GroundSpeed>
<VectorNED>
<North>7.73000001907349</North>
<East>48.1199989318848</East>
<Down>0.280000001192093</Down>
</VectorNED>
</GroundSpeed>
</GpsData>
<CameraEulerAngles>
<Euler>
<Roll>0.201364621520042</Roll>
<Pitch>-1.45399701595306</Pitch>
<Yaw>1.21607315540314</Yaw>
</Euler>
</CameraEulerAngles>
<GimbalBodyEulerAngles>
<Euler>
<Roll>0.0233999993652105</Roll>
<Pitch>-0.0599999986588955</Pitch>
<Yaw>1.41390001773834</Yaw>
</Euler>
</GimbalBodyEulerAngles>
<GimbalModeSettings>
<GimbalMode>17</GimbalMode>
</GimbalModeSettings>
<GimbalVersion>
<SerialNumber>663</SerialNumber>
<FirmwareMajor>2</FirmwareMajor>
<FirmwareMinor>2</FirmwareMinor>
<FirmwareSub>2</FirmwareSub>
<FirmwareReleased>1</FirmwareReleased>
<FirmwareDate>10/29/2013</FirmwareDate>
<HardwareRevision>65</HardwareRevision>
<HardwareConfig>33980419</HardwareConfig>
<HardwareDate>11/25/2014</HardwareDate>
<CameraATypeId>10</CameraATypeId>
<CameraBTypeId>21</CameraBTypeId>
<CameraCTypeId>0</CameraCTypeId>
<CameraDTypeId>0</CameraDTypeId>
<FirmwarePatch>1</FirmwarePatch>
<FirmwareDesc></FirmwareDesc>
<LensMajor>0</LensMajor>
<LensMinor>0</LensMinor>
<LensSub>0</LensSub>
<LensReleased>0</LensReleased>
<LensDate></LensDate>
<LensPatch>0</LensPatch>
<LensDesc></LensDesc>
</GimbalVersion>
<SPOI>
<LatLonAlt>
<LatitudeDeg>-90</LatitudeDeg>
<LongitudeDeg>-180</LongitudeDeg>
<AltitudeMeters>-30000</AltitudeMeters>
<AltitudeType>0</AltitudeType>
</LatLonAlt>
</SPOI>
<ImagePos>
<LatLonAlt>
<LatitudeDeg>38.1713978007073</LatitudeDeg>
<LongitudeDeg>-120.547633701498</LongitudeDeg>
<AltitudeMeters>402.219909667969</AltitudeMeters>
<AltitudeType>1</AltitudeType>
</LatLonAlt>
</ImagePos>
<CorrectedImagePos>
<LatLonAlt>
<LatitudeDeg>-90</LatitudeDeg>
<LongitudeDeg>-180</LongitudeDeg>
<AltitudeMeters>-30000</AltitudeMeters>
<AltitudeType>0</AltitudeType>
</LatLonAlt>
</CorrectedImagePos>
<NavFilterHealth>
<NavFilterMode>2</NavFilterMode>
<NavFilterPosition>1</NavFilterPosition>
<NavFilterVelocity>1</NavFilterVelocity>
<NavFilterHeading>1</NavFilterHeading>
<NavFilterAttitude>1</NavFilterAttitude>
<NavFilterGyroBias>1</NavFilterGyroBias>
<NavFilterAccBias>1</NavFilterAccBias>
<NavFilterMagBias>1</NavFilterMagBias>
</NavFilterHealth>
<BoardTemp>36</BoardTemp>
<DeployState>10</DeployState>
</GimbalState>
<GimbalRates>
<GimbalTime>2420517</GimbalTime>
<AxisRates>
<Pan>-0.00837758</Pan>
<Tilt>0.0174533</Tilt>
<Roll>0</Roll>
</AxisRates>
<MountRates>
<Pan>0.0106465</Pan>
<Tilt>0.00610865</Tilt>
<Roll>0.0612611</Roll>
</MountRates>
<GimbalModeSettings>
<GimbalMode>17</GimbalMode>
</GimbalModeSettings>
</GimbalRates>
<CameraState>
<ActiveCamera>1</ActiveCamera>
<HorizontalFOV>0.1839</HorizontalFOV>
<VerticalFOV>0.1379</VerticalFOV>
<ZoomRatio>1</ZoomRatio>
<MaxFOV0>0.971974</MaxFOV0>
<MinFOV0>0.0338594</MinFOV0>
<MaxFOV1>0.183958</MaxFOV1>
<MinFOV1>0.183958</MinFOV1>
<MaxFOV2>0.418879</MaxFOV2>
<MinFOV2>0.0232711</MinFOV2>
<MaxFOV3>0.418879</MaxFOV3>
<MinFOV3>0.0232711</MinFOV3>
<FpaTemp>26</FpaTemp>
<CaseTemp>-128</CaseTemp>
<SceneIntesity>0</SceneIntesity>
</CameraState>
<Laser00 Wavelength="0" Classification="0" MinAgl="0" LaserType="0" LaserProtocol="0" PowerLevel="0" Id="0" BeamDivergence="0" PowerLimited="0" ArmedState="0" LaserPower="0"/>
<Laser11 Wavelength="0" Classification="0" MinAgl="0" LaserType="0" LaserProtocol="0" PowerLevel="0" Id="1" BeamDivergence="0" PowerLimited="0" ArmedState="0" LaserPower="0"/>
<Laser22 Wavelength="0" Classification="0" MinAgl="0" LaserType="0" LaserProtocol="0" PowerLevel="0" Id="2" BeamDivergence="0" PowerLimited="0" ArmedState="0" LaserPower="0"/>
<Laser33 Wavelength="0" Classification="0" MinAgl="0" LaserType="0" LaserProtocol="0" PowerLevel="0" Id="3" BeamDivergence="0" PowerLimited="0" ArmedState="0" LaserPower="0"/>
</Vehicle>