def grid2srf(grid, filename='outsrf.grd', fformat='asc'): # bin """ grid is a Grid2D object """ from geoist import DATA_PATH from geoist.pfm.grdio import grddata import numpy.ma as ma g1out = grddata() g1out.cols = grid.getGeoDict().nx g1out.rows = grid.getGeoDict().ny g1out.xmin = grid.getGeoDict().xmin g1out.xmax = grid.getGeoDict().xmax g1out.ymin = grid.getGeoDict().ymin g1out.ymax = grid.getGeoDict().ymax mask = np.isnan(grid.getData()) mx = ma.array(grid.getData(), mask=mask) g1out.data = mx[::-1] #grid.getData() #g1out.data0[np.isnan(grid.getData())] = 1.701410009187828e+38 if fformat == 'asc': g1out.export_surfer(Path(DATA_PATH, filename), True, 'ascii') else: g1out.export_surfer(Path(DATA_PATH, filename), True, 'binary') return g1out
xMin = min(lon.values) xMax = max(lon.values) yMin = min(lat.values) yMax = max(lat.values) xNum = 100j yNum = 80j nullvalue = 1.701410009187828e+38 grid_x, grid_y = np.mgrid[xMin:xMax:xNum, yMin:yMax:yNum] #grid_z0 = griddata(coordinates, grav.values, (grid_x, grid_y), method='nearest' # ,fill_value = 0.0 ) #grid_z1 = griddata(coordinates, grav.values, (grid_x, grid_y), method='linear' # ,fill_value = 0.0 ) grid_z2 = griddata(coordinates, grav.values, (grid_x, grid_y), method='cubic', fill_value=nullvalue) #plt.imshow(grid_z0.T) #plt.imshow(grid_z1.T) #plt.imshow(grid_z2.T) grd1 = grdio.grddata() grd1.cols = 100 grd1.rows = 80 grd1.xmin = xMin grd1.xdim = (xMax - xMin) / (grd1.cols - 1) grd1.ymin = yMin grd1.ydim = (yMax - yMin) / (grd1.rows - 1) grd1.data = np.ma.masked_equal(grid_z2.T, nullvalue) grd1.export_surfer(r'D:\MyWorks\geoist\dataset\gravity-yx.grd')
ori = proj_coords #(origin_lon, origin_lat) rBGA = spline.Spline().fit(ori, residuals) grid2 = rBGA.grid(spacing=200, data_names=["resBGA"]) # grid3 = mask.distance_mask(ori, maxdist=5e2, grid=grid2) plt.figure() grid2.resBGA.plot.pcolormesh() # grid3.resBGAs.plot.pcolormesh() # 6. 数据转换 from geoist.others.utils import grid2Grid, map2DGrid from geoist.pfm.grdio import grddata rBGAg2d = grid2Grid(grid2.resBGA.easting, grid2.resBGA.northing, grid2.resBGA.values) print(rBGAg2d) g1out = grddata() g1out.cols = rBGAg2d.getGeoDict().nx g1out.rows = rBGAg2d.getGeoDict().ny g1out.xmin = rBGAg2d.getGeoDict().xmin g1out.xmax = rBGAg2d.getGeoDict().xmax g1out.ymin = rBGAg2d.getGeoDict().ymin g1out.ymax = rBGAg2d.getGeoDict().ymax g1out.data0 = grid2.resBGA.values g1out.export_surfer(Path(DATA_PATH, 'ynyx_bgar.grd'), False, 'ascii') g1 = spline.Spline().fit(ori, gradata['FGA']) gridx = g1.grid(spacing=200, data_names=["vals"]) g1out.data0 = gridx.vals.values g1out.export_surfer(Path(DATA_PATH, 'ynyx_fga.grd'), False, 'ascii') g2 = spline.Spline().fit(ori, gradata['BGA_s'])