You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.5 KiB
C++
66 lines
1.5 KiB
C++
#pragma once
|
|
|
|
struct GML_FLAG;
|
|
class GMLDimsIter
|
|
{
|
|
public:
|
|
GMLDimsIter();
|
|
~GMLDimsIter();
|
|
|
|
public:
|
|
// 设置网格信息
|
|
void setGridInfo(double* xyRange, int* nxny, double* inc, double*zRange);
|
|
|
|
// 设置Z值数据
|
|
void setZData(long num, float* data);
|
|
|
|
// 清空内存
|
|
void clearMemory();
|
|
|
|
// 数据范围
|
|
double* getXYRange();
|
|
|
|
// 网格个数
|
|
int* getXnYn();
|
|
|
|
long getXnYnTotal();
|
|
double getXmin(); // 获得最小X
|
|
double getXmax(); // 获得最大X
|
|
double getYmin(); // 获得最小Y
|
|
double getYmax(); // 获得最大Y
|
|
int getGridX(); // X方向网格数
|
|
int getGridY(); // Y方向网格数
|
|
double getDeltX(); // X间隔
|
|
double getDeltY(); // Y间隔
|
|
|
|
double getX(int i); // 得X坐标
|
|
double getY(int j); // 得Y坐标
|
|
|
|
int getIndexFrX(double x);
|
|
int getIndexFrY(double y);
|
|
|
|
// 得到网格Z值
|
|
float getZValue(int ij);
|
|
float getZValue(int i, int j);
|
|
float getZValue(double x0, double y0);
|
|
|
|
int readDfgBinary(const char* file);
|
|
|
|
private:
|
|
double m_xyRange[4]; /* Min/max x and y coordinates */
|
|
int m_nxny[2]; // nx nyNumber of columns Number of rows*/;
|
|
double m_inc[2]; /* x and y increment */
|
|
double m_zRange[2]; /* Minimum z value Maximum z value */
|
|
|
|
int m_n = 2;
|
|
long m_nm; /* Number of data items in this grid (nx * ny) [padding is excluded] */
|
|
float* m_pdu; // 网格化以后的 z 值
|
|
GML_FLAG* m_pFlag; // 小网格属性标识(外框, 断层,等等)
|
|
int m_pOffset[4]; // 十字周围偏移量(逆时针)
|
|
|
|
void CreateGrid();
|
|
int GetLocation(int *ip);
|
|
float GetZValue(double xy[], int* ip, int j);
|
|
};
|
|
|