예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
파일: ots.py 프로젝트: oddvarlia/semeio
    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