cOgrd.h 2.36 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
#ifndef OGRD_H
#define OGRD_H

class cOgrd
{

protected:


public:
  int nx,ny;
  int nnod;
  double noval;
  double xmin,xmax;
  double ymin,ymax;
  double dx,dy;
  double *val;

  cOgrd();
  cOgrd( const cOgrd& );
  cOgrd( double xmin0, double xmax0, int nx0, double ymin0, double ymax0, int ny0 );
  cOgrd( double xmin0, double xmax0, double dx0, double ymin0, double ymax0, double dy0 );
  ~cOgrd();

  void setNoval( double val );
  double getNoval();
  int initialize( double xmin0, double xmax0, int nx0, double ymin0, double ymax0, int ny0 );
  int initialize( double xmin0, double xmax0, double dx0, double ymin0, double ymax0, double dy0 );
  int readShape( const char *grdfile );
  int readHeader( const char *grdfile );
  int readGRD( const char *grdfile );
  int readXYZ( const char *xyzfile );
  int readRasterStream( FILE *fp, int ordering, int ydirection );
  cOgrd* extract( int i1, int i2, int j1, int j2 );
  cOgrd* extract( double x1, double x2, double y1, double y2 );
  int idx( int i, int j );
  double& operator() ( int i, int j );
  double& operator() ( int idx );
  cOgrd& operator= ( const cOgrd& grd );
  cOgrd& operator*= ( double coeff );
  cOgrd& operator+= ( cOgrd& grd );
  void getIJ( int idx, int& i, int& j );
  int getIJ( double x, double y, int& i, int& j );
  double getX( int i, int j );
  double getX( int idx );
  double getY( int i, int j );
  double getY( int idx );
  double getVal( int idx );
  double getVal( int i, int j );
  double getVal( double x, double y );
  double getMaxVal();
  double getMaxVal( int& i, int& j );
  double getMinVal();
  double getMinVal( int& i, int& j );
  double getMaxAbsVal();
  double getMaxAbsVal( int& i, int& j );
  double getMaxAbsValBnd();
  void setVal( double value, int i, int j );
  void setVal( double value, int idx );
  void reset();
  void resetVal();
  int getIntersectionRegion( const cOgrd &grd, int& imin, int& imax, int& jmin, int& jmax );
  int interpolateFrom( cOgrd &grd, int resetValues );
  int getNearestIdx( double x, double y );
  int getNearestIdx( double x, double y, double rangemin, double rangemax );
  int equalTo( cOgrd& grd );
  int isSameShapeTo( cOgrd& grd );
  void smooth( int radius );
  int writeGRD( const char *fname );
  int writeGRDbin( const char *fname );
  int writeXYZ( const char *fname );
};


#endif  // OGRD_H