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++

#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);
};