OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Functions
ossimDemProfile.cpp File Reference
#include <cstdlib>
#include <iostream>
#include <sstream>
#include <ossim/support_data/ossimDemProfile.h>
#include <ossim/support_data/ossimDemUtil.h>

Go to the source code of this file.

Functions

std::istream & operator>> (std::istream &s, ossimDemProfile &demp)
 
std::ostream & operator<< (std::ostream &s, ossimDemProfile &)
 

Function Documentation

◆ operator<<()

std::ostream& operator<< ( std::ostream &  s,
ossimDemProfile  
)

Definition at line 150 of file ossimDemProfile.cpp.

151 {
152  return s;
153 }

◆ operator>>()

std::istream& operator>> ( std::istream &  s,
ossimDemProfile demp 
)

Definition at line 105 of file ossimDemProfile.cpp.

References ossimDemProfile::_column, ossimDemProfile::_elevations, ossimDemProfile::_locDatumElev, ossimDemProfile::_maxElev, ossimDemProfile::_minElev, ossimDemProfile::_numberElevations, ossimDemProfile::_profileLocation, ossimDemProfile::_row, ossimDemUtil::getDouble(), ossimDemUtil::getLong(), ossimDemUtil::getRecord(), ossimDemPoint::setXY(), x, and y.

106 {
107  // string bufstr;
108  char bufstr[1024];
109 
110  ossimDemUtil::getRecord(s,bufstr);
111 
112  demp._row = ossimDemUtil::getLong(bufstr, 0, 6);
113  demp._column = ossimDemUtil::getLong(bufstr, 6, 6);
114  demp._numberElevations = ossimDemUtil::getLong(bufstr, 12, 6);
115 
116  double x,y;
117  ossimDemUtil::getDouble(bufstr, 24, 24, x);
118  ossimDemUtil::getDouble(bufstr, 48, 24, y);
119  demp._profileLocation.setXY(x,y);
120 
121  ossimDemUtil::getDouble(bufstr, 72, 24, demp._locDatumElev);
122  ossimDemUtil::getDouble(bufstr, 96, 24, demp._minElev);
123  ossimDemUtil::getDouble(bufstr, 120, 24, demp._maxElev);
124 
125  demp._elevations.erase(demp._elevations.begin(), demp._elevations.end());
126  demp._elevations.reserve(demp._numberElevations);
127 
128  // Extract elevations in this record.
129  ossim_int32 count = 0;
130  while ((count < 146) && (count < demp._numberElevations))
131  {
132  demp._elevations.push_back(ossimDemUtil::getLong(bufstr, 144+(count*6), 6));
133  count++;
134  }
135 
136  ossim_int32 t;
137  while (count < demp._numberElevations)
138  {
139  t = (count - 146) % 170;
140  if (t == 0)
141  ossimDemUtil::getRecord(s,bufstr);
142  demp._elevations.push_back(ossimDemUtil::getLong(bufstr, t*6, 6));
143  count++;
144  }
145 
146  return s;
147 }
ossim_uint32 x
ossimDemPoint _profileLocation
ossim_uint32 y
static long getLong(char *const strbuf, long const startpos, long const width)
ossim_int32 _column
static bool getDouble(std::string const &strbuf, long const startpos, long const width, double &val)
ossimDemElevationVector _elevations
ossim_int32 _numberElevations
void setXY(double x, double y)
Definition: ossimDemPoint.h:89
ossim_int32 _row
static bool getRecord(ossim::istream &s, std::string &strbuf, long reclength=1024)
Reads a single record from a DEM.
int ossim_int32