-
Notifications
You must be signed in to change notification settings - Fork 2
/
cOgrd.h
109 lines (99 loc) · 3.9 KB
/
cOgrd.h
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/*
* EasyWave - A realtime tsunami simulation program with GPU support.
* Copyright (C) 2014 Andrey Babeyko, Johannes Spazier
* GFZ German Research Centre for Geosciences (http://www.gfz-potsdam.de)
*
* Parts of this program (especially the GPU extension) were developed
* within the context of the following publicly funded project:
* - TRIDEC, EU 7th Framework Programme, Grant Agreement 258723
* (http://www.tridec-online.eu)
*
* Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
* the European Commission - subsequent versions of the EUPL (the "Licence"),
* complemented with the following provision: For the scientific transparency
* and verification of results obtained and communicated to the public after
* using a modified version of the work, You (as the recipient of the source
* code and author of this modified version, used to produce the published
* results in scientific communications) commit to make this modified source
* code available in a repository that is easily and freely accessible for a
* duration of five years after the communication of the obtained results.
*
* You may not use this work except in compliance with the Licence.
*
* You may obtain a copy of the Licence at:
* https://joinup.ec.europa.eu/software/page/eupl
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the Licence is distributed on an "AS IS" basis,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the Licence for the specific language governing permissions and
* limitations under the Licence.
*/
#ifndef OGRD_H
#define OGRD_H
#include <stdio.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