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