Beispiel #1
0
 def test_get_col_spec(self):
     r = Raster()
     assert r.get_col_spec() == 'raster'
Beispiel #2
0
 def test_get_col_spec(self):
     from geoalchemy2 import Raster
     r = Raster()
     eq_(r.get_col_spec(), 'raster')
Beispiel #3
0
 def test_get_col_spec(self):
     r = Raster()
     assert r.get_col_spec() == 'raster'
Beispiel #4
0
    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