def test_xy(self): ny,nx = 20,30 xinc,yinc = 50.0, 50.0 xstart,ystart = 463325.5625, 7336963.5 angle = 0 s_args = (None, nx, ny, xinc, yinc, xstart, ystart, angle) s = Surface(*s_args) xy = s.getXY(0) self.assertEqual((xstart, ystart), xy) xy = s.getXY(1) self.assertEqual((xstart+xinc, ystart), xy) xy = s.getXY(nx) self.assertEqual((xstart, ystart+yinc), xy) xy = s.getXY(-1) self.assertEqual((xstart+xinc*(nx-1), ystart+yinc*(ny-1)), xy)
def test_xy(self): ny, nx = 20, 30 xinc, yinc = 50.0, 50.0 xstart, ystart = 463325.5625, 7336963.5 angle = 0 s_args = (None, nx, ny, xinc, yinc, xstart, ystart, angle) s = Surface(*s_args) xy = s.getXY(0) self.assertEqual((xstart, ystart), xy) xy = s.getXY(1) self.assertEqual((xstart + xinc, ystart), xy) xy = s.getXY(nx) self.assertEqual((xstart, ystart + yinc), xy) xy = s.getXY(-1) self.assertEqual((xstart + xinc * (nx - 1), ystart + yinc * (ny - 1)), xy)
def _create_surface(self, z=None): """ Generate irap surface :param z: replace z values of surface """ nx = self._surface.nx ny = self._surface.ny x = self._surface.x y = self._surface.y if z is None: z = self._surface.z xstart = np.min(x) ystart = np.min(y) if nx < 2 or ny < 2: raise RuntimeError("Cannot create IRAP surface if nx or ny is <2") xinc = (np.max(x) - xstart) / (nx - 1) yinc = (np.max(y) - ystart) / (ny - 1) surf = Surface(nx=nx, ny=ny, xinc=xinc, yinc=yinc, xstart=xstart, ystart=ystart, angle=0) irap_x = np.empty(nx * ny) irap_y = np.array(irap_x) for i in range(len(surf)): irap_x[i], irap_y[i] = surf.getXY(i) # Interpolate vel grid to irap grid, should be the same apart from ordering z = np.nan_to_num(z) ip = CloughTocher2DInterpolator((x, y), z, fill_value=0) irap_z = ip(irap_x, irap_y) for i in range(len(surf)): surf[i] = irap_z[i] return surf