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)
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)
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)