1 //******************************************************************* 2 // 3 // License: MIT 4 // 5 // See LICENSE.txt file in the top level directory for more details. 6 // 7 // Author: Walt Bunch 8 // 9 // Description: Nitf support class for SENSRA - Sensor parameters extension. 10 // 11 //******************************************************************** 12 // $Id: ossimNitfSensraTag.h 22013 2012-12-19 17:37:20Z dburken $ 13 #ifndef ossimNitfSensraTag_HEADER 14 #define ossimNitfSensraTag_HEADER 15 #include <ossim/support_data/ossimNitfRegisteredTag.h> 16 17 class OSSIM_DLL ossimNitfSensraTag : public ossimNitfRegisteredTag 18 { 19 public: 20 21 enum 22 { 23 REF_ROW_SIZE = 8, 24 REF_COL_SIZE = 8, 25 SENSOR_MODEL_SIZE = 6, 26 SENSOR_MOUNT_SIZE = 3, 27 SENSOR_LOC_SIZE = 21, 28 SENSOR_ALT_SRC_SIZE = 1, 29 SENSOR_ALT_SIZE = 6, 30 SENSOR_ALT_UNIT_SIZE = 1, 31 SENSOR_AGL_SIZE = 5, 32 SENSOR_PITCH_SIZE = 7, 33 SENSOR_ROLL_SIZE = 8, 34 SENSOR_YAW_SIZE = 8, 35 PLATFORM_PITCH_SIZE = 7, 36 PLATFORM_ROLL_SIZE = 8, 37 PLATFORM_HDG_SIZE = 5, 38 GROUND_SPD_SRC_SIZE = 1, 39 GROUND_SPEED_SIZE = 6, 40 GROUND_SPD_UNIT_SIZE = 1, 41 GROUND_TRACK_SIZE = 5, 42 VERTICAL_VEL_SIZE = 5, 43 VERT_VEL_UNIT_SIZE = 1, 44 SWATH_FRAMES_SIZE = 4, 45 N_SWATHS_SIZE = 4, 46 SPOT_NUM_SIZE = 3 47 // ----- 48 // 132 49 }; 50 51 ossimNitfSensraTag(); 52 virtual ~ossimNitfSensraTag(); 53 54 virtual void parseStream(std::istream& in); 55 virtual void writeStream(std::ostream& out); 56 57 virtual void clearFields(); 58 59 /** 60 * @brief Print method that outputs a key/value type format 61 * adding prefix to keys. 62 * @param out Stream to output to. 63 * @param prefix Prefix added to key like "image0."; 64 */ 65 virtual std::ostream& print(std::ostream& out, 66 const std::string& prefix) const; 67 68 // The set methods below taking ossimString args will truncate and 69 // pad with spaces, as necessary, to match enumed size 70 void setRefRow(ossimString refRow); 71 ossimString getRefRow()const; 72 void setRefCol(ossimString refCol); 73 ossimString getRefCol()const; 74 void setSensorModel(ossimString sensorModel); 75 ossimString getSensorModel()const; 76 void setSensorMount(ossimString sensorMount); 77 ossimString getSensorMount()const; 78 void setSensorLoc(ossimString sensorLoc); 79 ossimString getSensorLoc()const; 80 void setSensorAltSrc(ossimString sensorAltSrc); 81 ossimString getSensorAltSrc()const; 82 void setSensorAlt(ossimString sensorAlt); 83 ossimString getSensorAlt()const; 84 void setSensorAltUnit(ossimString sensorAltUnit); 85 ossimString getSensorAltUnit()const; 86 void setSensorAgl(ossimString sensorAgl); 87 ossimString getSensorAgl()const; 88 void setSensorPitch(ossimString sensorPitch); 89 ossimString getSensorPitch()const; 90 void setSensorRoll(ossimString sensorRoll); 91 ossimString getSensorRoll()const; 92 void setSensorYaw(ossimString sensorYaw); 93 ossimString getSensorYaw()const; 94 void setPlatformPitch(ossimString platformPitch); 95 ossimString getPlatformPitch()const; 96 void setPlatformRoll(ossimString platformRoll); 97 ossimString getPlatformRoll()const; 98 void setPlatformHdg(ossimString platformHdg); 99 ossimString getPlatformHdg()const; 100 void setGroundSpdSrc(ossimString groundSpdSrc); 101 ossimString getGroundSpdSrc()const; 102 void setGroundSpeed(ossimString groundSpeed); 103 ossimString getGroundSpeed()const; 104 void setGroundSpdUnit(ossimString groundSpdUnit); 105 ossimString getGroundSpdUnit()const; 106 void setGroundTrack(ossimString groundTrack); 107 ossimString getGroundTrack()const; 108 void setVerticalVel(ossimString verticalVel); 109 ossimString getVerticalVel()const; 110 void setVertVelUnit(ossimString vertVelUnit); 111 ossimString getVertVelUnit()const; 112 void setSwathFrames(ossimString swathFrames); 113 ossimString getSwathFrames()const; 114 void setNSwaths(ossimString nSwaths); 115 ossimString getNSwaths()const; 116 void setSpotNum(ossimString spotNum); 117 ossimString getSpotNum()const; 118 119 protected: 120 121 /** 122 * FIELD: REFROW 123 * 124 */ 125 char theRefRow[REF_ROW_SIZE+1]; 126 127 /** 128 * FIELD: REFCOL 129 * 130 */ 131 char theRefCol[REF_COL_SIZE+1]; 132 133 /** 134 * FIELD: SENSORMODEL 135 * 136 */ 137 char theSensorModel[SENSOR_MODEL_SIZE+1]; 138 139 /** 140 * FIELD: SENSORMOUNT 141 * 142 */ 143 char theSensorMount[SENSOR_MOUNT_SIZE+1]; 144 145 /** 146 * FIELD: SENSORLOC 147 * 148 */ 149 char theSensorLoc[SENSOR_LOC_SIZE+1]; 150 151 /** 152 * FIELD: SENSORALTSRC 153 * 154 */ 155 char theSensorAltSrc[SENSOR_ALT_SRC_SIZE+1]; 156 157 /** 158 * FIELD: SENSORALT 159 * 160 */ 161 char theSensorAlt[SENSOR_ALT_SIZE+1]; 162 163 /** 164 * FIELD: SENSORALTUNIT 165 * 166 */ 167 char theSensorAltUnit[SENSOR_ALT_UNIT_SIZE+1]; 168 169 /** 170 * FIELD: SENSORAGL 171 * 172 */ 173 char theSensorAgl[SENSOR_AGL_SIZE+1]; 174 175 /** 176 * FIELD: SENSORPITCH 177 * 178 */ 179 char theSensorPitch[SENSOR_PITCH_SIZE+1]; 180 181 /** 182 * FIELD: SENSORROLL 183 * 184 */ 185 char theSensorRoll[SENSOR_ROLL_SIZE+1]; 186 187 /** 188 * FIELD: SENSORYAW 189 * 190 */ 191 char theSensorYaw[SENSOR_YAW_SIZE+1]; 192 193 /** 194 * FIELD: PLATFORMPITCH 195 * 196 */ 197 char thePlatformPitch[PLATFORM_PITCH_SIZE+1]; 198 199 /** 200 * FIELD: PLATFORMROLL 201 * 202 */ 203 char thePlatformRoll[PLATFORM_ROLL_SIZE+1]; 204 205 /** 206 * FIELD: PLATFORMHDG 207 * 208 */ 209 char thePlatformHdg[PLATFORM_HDG_SIZE+1]; 210 211 /** 212 * FIELD: GROUNDSPDSRC 213 * 214 */ 215 char theGroundSpdSrc[GROUND_SPD_SRC_SIZE+1]; 216 217 /** 218 * FIELD: GROUNDSPEED 219 * 220 */ 221 char theGroundSpeed[GROUND_SPEED_SIZE+1]; 222 223 /** 224 * FIELD: GROUNDSPDUNIT 225 * 226 */ 227 char theGroundSpdUnit[GROUND_SPD_UNIT_SIZE+1]; 228 229 /** 230 * FIELD: GROUNDTRACK 231 * 232 */ 233 char theGroundTrack[GROUND_TRACK_SIZE+1]; 234 235 /** 236 * FIELD: VERTICALVEL 237 * 238 */ 239 char theVerticalVel[VERTICAL_VEL_SIZE+1]; 240 241 /** 242 * FIELD: VERTVELUNIT 243 * 244 */ 245 char theVertVelUnit[VERT_VEL_UNIT_SIZE+1]; 246 247 /** 248 * FIELD: SWATHFRAMES 249 * 250 */ 251 char theSwathFrames[SWATH_FRAMES_SIZE+1]; 252 253 /** 254 * FIELD: NSWATHS 255 * 256 */ 257 char theNSwaths[N_SWATHS_SIZE+1]; 258 259 /** 260 * FIELD: SPOTNUM 261 * 262 */ 263 char theSpotNum[SPOT_NUM_SIZE+1]; 264 265 TYPE_DATA 266 }; 267 268 #endif 269