def test_get_col_spec(self): r = Raster() assert r.get_col_spec() == 'raster'
def test_get_col_spec(self): from geoalchemy2 import Raster r = Raster() eq_(r.get_col_spec(), 'raster')
def columnsFromDataframe(self, df): """Returns a list of columns from a dataframe)""" Map = { str: String, np.dtype(int): Integer, np.dtype(float): Float, dict: JSON, np.int64: BIGINT, float: Float, np.float64: Float, "string": String, "integer": Integer, "floating": Float, xr.DataArray: OutDBZarrType(defaultZstore=self.outdbArchiveName(), modifyUri=self.conf.generalize_path), xr.Dataset: OutDBZarrType(defaultZstore=self.outdbArchiveName(), modifyUri=self.conf.generalize_path), "datetime64": DateTime, np.dtype('<M8[ns]'): datetime64Type } cols = [Column('id', Integer, primary_key=True)] for name, col in df.iteritems(): if name == "id": #already added continue elif name == self.geoinfo.rastname: cType = Raster(spatial_index=False) elif name == self.geoinfo.geoname: if self.geoinfo.srid == 4326: cType = Geography(geometry_type=self.geoinfo.geomtype, srid=self.geoinfo.srid, spatial_index=True, dimension=self.geoinfo.dims) else: cType = Geometry(geometry_type=self.geoinfo.geomtype, srid=self.geoinfo.srid, spatial_index=True, dimension=self.geoinfo.dims) else: dtype = pd.api.types.infer_dtype(col, skipna=True) if dtype == "mixed": val = col.loc[col.first_valid_index()] if type(val) == np.ndarray: #wrap the type in an array cType = ARRAY(Map[val.dtype], dimensions=val.ndim) else: cType = Map[type(val)] else: cType = Map[dtype] cols.append(Column(name, cType)) return cols