我是 postgres/postgis 的新手,我想弄清楚如何用 postgis 制作一个空的平铺光栅。
我想生成一个包含 5000 X 2000 个单元格的空栅格,我想稍后查询以在位置 x/y 处查找特定单元格或在位置 x/y 处添加单元格值。将来,我将基本上将单个单元格值添加到空栅格中(例如,随着时间的推移报告单元格中的动物目击事件)。
我发现通过首先创建一个光栅表,这大部分是可能的:
CREATE TABLE myRasterTable(rid serial primary key, rast raster);
Run Code Online (Sandbox Code Playgroud)
然后添加一个空栅格:
INSERT INTO myRasterTable(rid,rast)
VALUES(1, ST_MakeEmptyRaster( 5000, 2000, 2485869.5728, 1299941.7864, 100, 100, 0, 0, 2056) );
Run Code Online (Sandbox Code Playgroud)
(参考:http : //suite.opengeo.org/docs/latest/dataadmin/pgGettingStarted/raster2pgsql.html)
我还添加了一个波段并为其中一个栅格单元添加了一个值:
UPDATE myRasterTable SET rast = ST_AddBand(rast, 1, '32BF'::text, 0);
UPDATE myRasterTable SET rast = ST_SetValue(rast, 1,ST_Transform(ST_SetSRID(ST_MakePoint(7.5,48.5),4326),2056),987.654321)
Run Code Online (Sandbox Code Playgroud)
(参考:https : //gis.stackexchange.com/questions/14960/postgis-raster-value-of-a-lat-lon-point)
我现在可以查询我设置的栅格单元的值:
// Location with value
SELECT rid, ST_Value(rast, ST_Transform(ST_SetSRID(ST_MakePoint(7.5,48.5),4326),2056),false) val FROM myRasterTable
// Return …Run Code Online (Sandbox Code Playgroud)