我的原本任务:想实现在PostgreSQL数据库中,建立四叉树索引管理栅格数据。我现在在做的事:实现栅格数据在PostgreSQL中自建表存入取出。
具体过程:
1、我将遥感影像数据读取部分存入PostgreSQL中,用的bytea字段类型。
from osgeo import gdal
import psycopg2 as pg2
band_1 = gdal.Open(r'E:\LS_data\LC81210422013278LGN00\LC81210422013278LGN00_B1.tif')
data = band_1.GetRasterBand(1).ReadAsArray(3000,3000,2,2)
def saveRaster(values):
conn = pg2.connect("dbname=sample user=postgres password=123456 host=localhost")
cur = conn.cursor()
#cur.execute("CREATE TABLE dai_raster (id serial PRIMARY KEY, data bytea);")
cur.execute("INSERT INTO dai_raster (data) VALUES (%s)",
(pg2.Binary(values),))
conn.commit()
print("事务已提交,即将断开数据库连接")
cur.close()
conn.close()
saveRaster(data)
del data
这块数据用ReadAsArray()输出的结果为:
2、而后想要实现查询出来,进一步写入文件或显示出来。
import psycopg2 as pg2
import numpy as np
#from matplotlib import pyplot as plt
def GetData():
conn = pg2.connect("dbname=sample user=postgres password=123456 host=localhost")
cur = conn.cursor()
cur.execute("SELECT data FROM dai_raster WHERE id=6;")
data = cur.fetchone()
cur.close()
conn.close()
return data
Bydata = GetData()
Bydata是得到的数据,然后我就不知道要如何处理它了。
这里一个尝试(网上搜的,但我没有理解为什么):
numpydata = np.array(Bydata)
print(numpydata)