OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimDemProfile.cpp
Go to the documentation of this file.
1 //*******************************************************************
2 // Copyright (C) 2000 ImageLinks Inc.
3 //
4 // License: LGPL
5 //
6 // See LICENSE.txt file in the top level directory for more details.
7 //
8 // Author: Ken Melero
9 // Orginally written by Jamie Moyers (jmoyers@geeks.com)
10 // Adapted from the package KDEM.
11 // Description: This class defines a DEM profile.
12 //
13 //********************************************************************
14 // $Id: ossimDemProfile.cpp 17206 2010-04-25 23:20:40Z dburken $
15 
16 #include <cstdlib>
17 #include <iostream>
18 #include <sstream>
19 
22 
24  : _row(0),
25  _column(0),
26  _numberElevations(0),
27  _locDatumElev(0.0),
28  _minElev(0.0),
29  _maxElev(0.0)
30 {
31 }
32 
34 {
35  operator=(right);
36 }
37 
38 ossimDemProfile const&
40 {
41  if (this == &right)
42  return *this;
43 
44  _row = right._row;
45  _column = right._column;
49  _minElev = right._minElev;
50  _maxElev = right._maxElev;
51  _elevations = right._elevations;
52 
53  return *this;
54 }
55 
58 {
59  return _row;
60 }
61 
64 {
65  return _column;
66 }
67 
70 {
71  return _numberElevations;
72 }
73 
74 ossimDemPoint const&
76 {
77  return _profileLocation;
78 }
79 
80 double
82 {
83  return _locDatumElev;
84 }
85 
86 double
88 {
89  return _minElev;
90 }
91 
92 double
94 {
95  return _maxElev;
96 }
97 
100 {
101  return _elevations;
102 }
103 
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 }
148 
149 
151 {
152  return s;
153 }
154 
155 
ossim_int32 getNumberOfElevations() const
ossim_uint32 x
ossimDemPoint _profileLocation
double getMinimumElev() const
ossim_uint32 y
std::istream & operator>>(std::istream &s, ossimDemProfile &demp)
double getMaximumElev() const
double getLocalDatumElevation() const
ossimDemProfile const & operator=(ossimDemProfile const &right)
static long getLong(char *const strbuf, long const startpos, long const width)
ossim_int32 _column
std::vector< ossim_int32 > ossimDemElevationVector
static bool getDouble(std::string const &strbuf, long const startpos, long const width, double &val)
ossimDemElevationVector const & getElevations() const
std::ostream & operator<<(std::ostream &s, ossimDemProfile &)
ossim_int32 getRowNumber() const
ossimDemElevationVector _elevations
std::basic_istream< char > istream
Base class for char input streams.
Definition: ossimIosFwd.h:20
ossim_int32 _numberElevations
ossimDemPoint const & getProfileLocation() const
void setXY(double x, double y)
Definition: ossimDemPoint.h:89
ossim_int32 getColumnNumber() const
ossim_int32 _row
static bool getRecord(ossim::istream &s, std::string &strbuf, long reclength=1024)
Reads a single record from a DEM.
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23
int ossim_int32