Ejemplo n.º 1
0
    def test_from_xarray(self):
        lat = ArrayCoordinates1d([0, 1, 2], name="lat")
        lon = ArrayCoordinates1d([10, 20, 30], name="lon")
        time = ArrayCoordinates1d(["2018-01-01", "2018-01-02", "2018-01-03"], name="time")
        c = StackedCoordinates([lat, lon, time])
        x = xr.DataArray(np.empty(c.shape), coords=c.xcoords, dims=c.xdims)

        c2 = StackedCoordinates.from_xarray(x.coords)
        assert c2.dims == ("lat", "lon", "time")
        assert_equal(c2["lat"].coordinates, lat.coordinates)
        assert_equal(c2["lon"].coordinates, lon.coordinates)
        assert_equal(c2["time"].coordinates, time.coordinates)
Ejemplo n.º 2
0
    def test_from_xarray(self):
        lat = ArrayCoordinates1d([0, 1, 2], name='lat')
        lon = ArrayCoordinates1d([10, 20, 30], name='lon')
        time = ArrayCoordinates1d(['2018-01-01', '2018-01-02', '2018-01-03'],
                                  name='time')
        xcoords = StackedCoordinates([lat, lon, time]).coords

        c2 = StackedCoordinates.from_xarray(xcoords)
        assert c2.dims == ('lat', 'lon', 'time')
        assert_equal(c2['lat'].coordinates, lat.coordinates)
        assert_equal(c2['lon'].coordinates, lon.coordinates)
        assert_equal(c2['time'].coordinates, time.coordinates)
Ejemplo n.º 3
0
    def from_xarray(cls,
                    xcoord,
                    coord_ref_sys=None,
                    ctype=None,
                    distance_units=None):
        """
        Create podpac Coordinates from xarray coords.

        Arguments
        ---------
        xcoord : xarray.core.coordinates.DataArrayCoordinates
            xarray coords
        coord_ref_sys : str, optional
            Default coordinates reference system
        ctype : str, optional
            Default coordinates type. One of 'point', 'midpoint', 'left', 'right'.
        distance_units : Units
            Default distance units.

        Returns
        -------
        :class:`Coordinates`
            podpac Coordinates
        """

        if not isinstance(xcoord,
                          xarray.core.coordinates.DataArrayCoordinates):
            raise TypeError(
                "Coordinates.from_xarray expects xarray DataArrayCoordinates, not '%s'"
                % type(xcoord))

        coords = []
        for dim in xcoord.dims:
            if isinstance(xcoord.indexes[dim],
                          (pd.DatetimeIndex, pd.Float64Index, pd.Int64Index)):
                c = ArrayCoordinates1d.from_xarray(xcoord[dim])
            elif isinstance(xcoord.indexes[dim], pd.MultiIndex):
                c = StackedCoordinates.from_xarray(xcoord[dim])
            coords.append(c)

        return cls(coords,
                   coord_ref_sys=coord_ref_sys,
                   ctype=ctype,
                   distance_units=distance_units)