Example #1
0
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'])