;
; NOSA HEADER START
;
; The contents of this file are subject to the terms of the NASA Open
; Source Agreement (NOSA), Version 1.3 only (the "Agreement"). You may
; not use this file except in compliance with the Agreement.
;
; You can obtain a copy of the agreement at
; docs/NASA_Open_Source_Agreement_1.3.txt
; or
; http://sscweb.gsfc.nasa.gov/WebServices/NASA_Open_Source_Agreement_1.3.txt.
;
; See the Agreement for the specific language governing permissions
; and limitations under the Agreement.
;
; When distributing Covered Code, include this NOSA HEADER in each
; file and include the Agreement file at
; docs/NASA_Open_Source_Agreement_1.3.txt. If applicable, add the
; following below this NOSA HEADER, with the fields enclosed by
; brackets "[]" replaced with your own identifying information:
; Portions Copyright [yyyy] [name of copyright owner]
;
; NOSA HEADER END
;
; Copyright (c) 2013 United States Government as represented by the
; National Aeronautics and Space Administration. No copyright is claimed
; in the United States under Title 17, U.S.Code. All Other Rights Reserved.
;
;
;+
; This class is an IDL representation of the SatelliteData
; element from the
; <a href="http://sscweb.gsfc.nasa.gov/">Satellite Situation Center</a>
; (SSC) XML schema.
;
; @copyright Copyright (c) 2013 United States Government as represented
; by the National Aeronautics and Space Administration. No
; copyright is claimed in the United States under Title 17,
; U.S.Code. All Other Rights Reserved.
;
; @author B. Harris
;-
;+
; Creates an SpdfSatelliteData object.
;
; @param id {in} {type=string}
; satellite identifier.
; @param coordinateData {in} {type=SpdfCoordinateData}
; satellite coordinate data.
; @param time {in} {type=dblarr}
; julday time associated with each data point.
; @keyword bTraceData {in} {optional} {type=SpdfBTraceData}
; magnetic field trace data.
; @keyword radialLength {in} {optional} {type=dblarr}
; distance from center of Earth.
; @keyword magneticStrength {in} {optional} {type=dblarr}
; magnetic field strength.
; @keyword neutralSheetDistance {in} {optional} {type=dblarr}
; distance from neutral sheet.
; @keyword bowShockDistance {in} {optional} {type=dblarr}
; distance from bow shock.
; @keyword magnetoPauseDistance {in} {optional} {type=dblarr}
; distance from magneto pause.
; @keyword dipoleLValue {in} {optional} {type=dblarr}
; dipole L values.
; @keyword dipoleInvariantLatitude {in} {optional} {type=dblarr}
; dipole invariant latitude values.
; @keyword spacecraftRegion {in} {optional} {type=strarr}
; spacecraft region.
; @keyword radialTracedFootpointRegions {in} {optional} {type=strarr}
; radial traced footpoint region.
; @keyword bGseX {in} {optional} {type=dblarr}
; B GSE X values.
; @keyword bGseY {in} {optional} {type=dblarr}
; B GSE Y values.
; @keyword bGseZ {in} {optional} {type=dblarr}
; B GSE Z values.
; @keyword northBTracedFootpointRegions {in} {optional} {type=strarr}
; north B traced regions.
; @keyword southBTracedFootpointRegions {in} {optional} {type=strarr}
; south B traced regions.
; @returns reference to an SpdfSatelliteData object.
;-
function SpdfSatelliteData::init, $
id, $
coordinateData, $
time, $
bTraceData = bTraceData, $
radialLength = radialLength, $
magneticStrength = magneticStrength, $
neutralSheetDistance = neutralSheetDistance, $
bowShockDistance = bowShockDistance, $
magnetoPauseDistance = magnetoPauseDistance, $
dipoleLValue = dipoleLValue, $
dipoleInvariantLatitude = dipoleInvariantLatitude, $
spacecraftRegion = spacecraftRegion, $
radialTracedFootpointRegions = radialTracedFootpointRegions, $
bGseX = bGseX, $
bGseY = bGseY, $
bGseZ = bGseZ, $
northBTracedFootpointRegions = northBTracedFootpointRegions, $
southBTracedFootpointRegions = southBTracedFootpointRegions
compile_opt idl2
self.id = id
self.coordinateData = ptr_new(coordinateData)
self.time = ptr_new(time)
if keyword_set(bTraceData) then $
self.bTraceData = ptr_new(bTraceData)
if keyword_set(radialLength) then $
self.radialLength = ptr_new(radialLength)
if keyword_set(magneticStrength) then $
self.magneticStrength = ptr_new(magneticStrength)
if keyword_set(neutralSheetDistance) then $
self.neutralSheetDistance = ptr_new(neutralSheetDistance)
if keyword_set(bowShockDistance) then $
self.bowShockDistance = ptr_new(bowShockDistance)
if keyword_set(magnetoPauseDistance) then $
self.magnetoPauseDistance = ptr_new(magnetoPauseDistance)
if keyword_set(dipoleLValue) then $
self.dipoleLValue = ptr_new(dipoleLValue)
if keyword_set(dipoleInvariantLatitude) then $
self.dipoleInvariantLatitude = ptr_new(dipoleInvariantLatitude)
if keyword_set(spacecraftRegion) then $
self.spacecraftRegion = ptr_new(spacecraftRegion)
if keyword_set(radialTracedFootpointRegions) then begin
self.radialTracedFootpointRegions = $
ptr_new(radialTracedFootpointRegions)
endif
if keyword_set(bGseX) then self.bGseX = ptr_new(bGseX)
if keyword_set(bGseY) then self.bGseY = ptr_new(bGseY)
if keyword_set(bGseZ) then self.bGseZ = ptr_new(bGseZ)
if keyword_set(northBTracedFootpointRegions) then $
self.northBTracedFootpointRegions = ptr_new(northBTracedFootpointRegions)
if keyword_set(southBTracedFootpointRegions) then $
self.southBTracedFootpointRegions = ptr_new(southBTracedFootpointRegions)
return, self
end
;+
; Performs cleanup operations when this object is destroyed.
;-
pro SpdfSatelliteData::cleanup
compile_opt idl2
if ptr_valid(self.coordinateData) then $
ptr_free, self.coordinateData
if ptr_valid(self.time) then ptr_free, self.time
if ptr_valid(self.bTraceData) then $
ptr_free, self.bTraceData
if ptr_valid(self.radialLength) then $
ptr_free, self.radialLength
if ptr_valid(self.magneticStrength) then $
ptr_free, self.magneticStrength
if ptr_valid(self.neutralSheetDistance) then $
ptr_free, self.neutralSheetDistance
if ptr_valid(self.bowShockDistance) then $
ptr_free, self.bowShockDistance
if ptr_valid(self.magnetoPauseDistance) then $
ptr_free, self.magnetoPauseDistance
if ptr_valid(self.dipoleLValue) then $
ptr_free, self.dipoleLValue
if ptr_valid(self.dipoleInvariantLatitude) then $
ptr_free, self.dipoleInvariantLatitude
if ptr_valid(self.spacecraftRegion) then $
ptr_free, self.spacecraftRegion
if ptr_valid(self.radialTracedFootpointRegions) then $
ptr_free, self.radialTracedFootpointRegions
if ptr_valid(self.bGseX) then ptr_free, self.bGseX
if ptr_valid(self.bGseY) then ptr_free, self.bGseY
if ptr_valid(self.bGseZ) then ptr_free, self.bGseZ
if ptr_valid(self.northBTracedFootpointRegions) then $
ptr_free, self.northBTracedFootpointRegions
if ptr_valid(self.southBTracedFootpointRegions) then $
ptr_free, self.southBTracedFootpointRegions
end
;+
; Gets the id value.
;
; @returns id value.
;-
function SpdfSatelliteData::getId
compile_opt idl2
return, self.id
end
;+
; Gets the coordinate data.
;
; @returns a reference to coordinate data.
;-
function SpdfSatelliteData::getCoordinateData
compile_opt idl2
if ptr_valid(self.coordinateData) then begin
return, *self.coordinateData
endif else begin
return, obj_new()
endelse
end
;+
; Gets the time values.
;
; @returns the time values.
;-
function SpdfSatelliteData::getTime
compile_opt idl2
if ptr_valid(self.time) then begin
return, *self.time
endif else begin
return, !values.d_NaN
endelse
end
;+
; Gets the B field trace data.
;
; @returns a reference to SpdfBTraceData.
;-
function SpdfSatelliteData::getBTraceData
compile_opt idl2
if ptr_valid(self.bTraceData) then begin
return, *self.bTraceData
endif else begin
return, obj_new()
endelse
end
;+
; Gets the radial length values.
;
; @returns a dblarr containing radial length values or the
; constant scalar !values.d_NaN if there are no values.
;-
function SpdfSatelliteData::getRadialLength
compile_opt idl2
if ptr_valid(self.radialLength) then begin
return, *self.radialLength
endif else begin
return, !values.d_NaN
endelse
end
;+
; Gets the magnetic strength values.
;
; @returns a dblarr containing magnetic strength values or the
; constant scalar !values.d_NaN if there are no values.
;-
function SpdfSatelliteData::getMagneticStrength
compile_opt idl2
if ptr_valid(self.magneticStrength) then begin
return, *self.magneticStrength
endif else begin
return, !values.d_NaN
endelse
end
;+
; Gets the neutral sheet distance values.
;
; @returns a dblarr containing neutral sheet distance values or the
; constant scalar !values.d_NaN if there are no values.
;-
function SpdfSatelliteData::getNeutralSheetDistance
compile_opt idl2
if ptr_valid(self.neutralSheetDistance) then begin
return, *self.neutralSheetDistance
endif else begin
return, !values.d_NaN
endelse
end
;+
; Gets the bow shock distance values.
;
; @returns a dblarr containing bow shock distance values or the
; constant scaler !values.d_NaN if there are no values.
;-
function SpdfSatelliteData::getBowShockDistance
compile_opt idl2
if ptr_valid(self.bowShockDistance) then begin
return, *self.bowShockDistance
endif else begin
return, !values.d_NaN
endelse
end
;+
; Gets the magneto pause distance values.
;
; @returns a dblarr containing magneto pause distance values or the
; constant scalar !values.d_NaN if there are no values.
;-
function SpdfSatelliteData::getMagnetoPauseDistance
compile_opt idl2
if ptr_valid(self.magnetoPauseDistance) then begin
return, *self.magnetoPauseDistance
endif else begin
return, !values.d_NaN
endelse
end
;+
; Gets the dipole L values.
;
; @returns a dblarr containing dipole L values or the
; constant scalar !values.d_NaN if there are no values.
;-
function SpdfSatelliteData::getDipoleLValue
compile_opt idl2
if ptr_valid(self.dipoleLValue) then begin
return, *self.dipoleLValue
endif else begin
return, !values.d_NaN
endelse
end
;+
; Gets the dipole invariant latitude values.
;
; @returns a dblarr containing dipole invariant latitude values or the
; constant scalar !values.d_NaN if there are no values.
;-
function SpdfSatelliteData::getDipoleInvariantLatitude
compile_opt idl2
if ptr_valid(self.dipoleInvariantLatitude) then begin
return, *self.dipoleInvariantLatitude
endif else begin
return, !values.d_NaN
endelse
end
;+
; Gets the spacecraft region values.
;
; @returns a strarr containing spacecraft region values or the
; constant scalar '' if there are no values.
;-
function SpdfSatelliteData::getSpacecraftRegion
compile_opt idl2
if ptr_valid(self.spacecraftRegion) then begin
return, *self.spacecraftRegion
endif else begin
return, ''
endelse
end
;+
; Gets the radial trace footpoint region values.
;
; @returns a strarr containing radial trace footpoint region values or
; the constant scalar '' if there are no values.
;-
function SpdfSatelliteData::getRadialTracedFootpointRegions
compile_opt idl2
if ptr_valid(self.radialTracedFootpointRegions) then begin
return, *self.radialTracedFootpointRegions
endif else begin
return, ''
endelse
end
;+
; Gets the B GSE X values.
;
; @returns a dblarr containing B GSE X values or the
; constant scalar !values.d_NaN if there are no values.
;-
function SpdfSatelliteData::getBGseX
compile_opt idl2
if ptr_valid(self.bGseX) then begin
return, *self.bGseX
endif else begin
return, !values.d_NaN
endelse
end
;+
; Gets the B GSE Y values.
;
; @returns a dblarr containing B GSE Y values or the
; constant scalar !values.d_NaN if there are no values.
;-
function SpdfSatelliteData::getBGseY
compile_opt idl2
if ptr_valid(self.bGseY) then begin
return, *self.bGseY
endif else begin
return, !values.d_NaN
endelse
end
;+
; Gets the B GSE Z values.
;
; @returns a dblarr containing B GSE Z values or the
; constant scalar !values.d_NaN if there are no values.
;-
function SpdfSatelliteData::getBGseZ
compile_opt idl2
if ptr_valid(self.bGseZ) then begin
return, *self.bGseZ
endif else begin
return, !values.d_NaN
endelse
end
;+
; Gets the north B traced regions values.
;
; @returns a strarr containing north B traced regions values or the
; constant scalar '' if there are no values.
;-
function SpdfSatelliteData::getNorthBTracedFootpointRegions
compile_opt idl2
if ptr_valid(self.northBTracedFootpointRegions) then begin
return, *self.northBTracedFootpointRegions
endif else begin
return, ''
endelse
end
;+
; Gets the south B traced regions values.
;
; @returns a strarr containing south B traced regions values or the
; constant scalar '' if there are no values.
;-
function SpdfSatelliteData::getSouthBTracedFootpointRegions
compile_opt idl2
if ptr_valid(self.southBTracedFootpointRegions) then begin
return, *self.southBTracedFootpointRegions
endif else begin
return, ''
endelse
end
;+
; Defines the SpdfSatelliteData class.
;
; @field id satellite identifier.
; @field coordinateData satellite coordinate data.
; @field time time associated with each data point.
; @field bTraceData magnetic field trace data.
; @field radialLength distance from center of Earth.
; @field magneticStrength magnetic field strength.
; @field neutralSheetDistance distance from neutral sheet.
; @field bowShockDistance distance from bow shock.
; @field magnetoPauseDistance distance from magneto pause.
; @field dipoleLValue dipole L values.
; @field dipoleInvariantLatitude dipole invariant latitude values.
; @field spacecraftRegion spacecraft region.
; @field radialTracedFootpointRegions radial trace footpoint region.
; @field bGseX B GSE X values.
; @field bGseY B GSE Y values.
; @field bGseZ B GSE Z values.
; @field northBTracedFootpointRegions north B traced regions.
; @field southBTracedFootpointRegions south B traced regions.
;-
pro SpdfSatelliteData__define
compile_opt idl2
struct = { SpdfSatelliteData, $
id:'', $
coordinateData:ptr_new(), $
time:ptr_new(), $
bTraceData:ptr_new(), $
radialLength:ptr_new(), $
magneticStrength:ptr_new(), $
neutralSheetDistance:ptr_new(), $
bowShockDistance:ptr_new(), $
magnetoPauseDistance:ptr_new(), $
dipoleLValue:ptr_new(), $
dipoleInvariantLatitude:ptr_new(), $
spacecraftRegion:ptr_new(), $
radialTracedFootpointRegions:ptr_new(), $
bGseX:ptr_new(), $
bGseY:ptr_new(), $
bGseZ:ptr_new(), $
northBTracedFootpointRegions:ptr_new(), $
southBTracedFootpointRegions:ptr_new() $
}
end