GeoServer 发布PostGIS数据库中的栅格数据

1.导入栅格数据

进入PostgreSQL\bin目录,利用raster2pgsql工具导入栅格数据,具体命令如下所示:

<!-- 分块,切片存储到PostGIS数据库中 -->
raster2pgsql -s 4326 -I -C -M E:/personalfile/cs1/alt.tif -F -t 256x256 public.alt | psql -h localhost -p 5432 -U postgres -d rastertest -W

<!-- 以单个文件方式存储到PostGIS数据库中 -->
raster2pgsql -s 4326 -I -C -M E:/personalfile/cs1/alt.tif public.alt | psql -h localhost -p 5432 -U postgres -d rastertest -W

创建mosaic数据表,并将已导入的栅格数据,插入到相应字段中,具体SQL语句如下:

/* 新建MOSAIC数据表 */
create table MOSAIC (NAME varchar(254) not null,
         TileTable varchar(254)not null,
         minX FLOAT8,minY FLOAT8, maxX FLOAT8, maxY FLOAT8,resX FLOAT8, resY FLOAT8,
         primary key (NAME,TileTable));
/* 插入alt栅格数据表 */
insert into MOSAIC(NAME,TileTable) values ('oek','alt');

导入成功后,如下图所示:

2.发布PostGIS栅格数据

准备connect.pgraster.xml.inc文件,配置PostgreSQL连接参数:

<connect>
   <dstype value="DBCP"/>
   <username value="postgres"/>
   <password value="123456"/>
   <jdbcUrl value="jdbc:postgresql://localhost:5432/rastertest"/>
   <driverClassName value="org.postgresql.Driver"/>
   <maxActive value="10"/>
   <maxIdle value="0"/>
</connect>

准备mapping.pgraster.xml.inc文件,配置mosaic数据表参数:

<spatialExtension name="pgraster"/>
 <mapping>
      <masterTable name="mosaic" >
              <coverageNameAttribute name="name"/>
              <maxXAttribute name="maxX"/>
              <maxYAttribute name="maxY"/>
              <minXAttribute name="minX"/>
              <minYAttribute name="minY"/>
              <resXAttribute name="resX"/>
              <resYAttribute name="resY"/>
              <tileTableNameAtribute  name="tiletable" />
      </masterTable>
      <tileTable>
              <blobAttributeName name="rast" />
      </tileTable>
</mapping>

准备oek.pgraster.xml文件,配置栅格数据参数:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE ImageMosaicJDBCConfig [
      <!ENTITY mapping PUBLIC "mapping"  "mapping.pgraster.xml.inc">
      <!ENTITY connect PUBLIC "connect"  "connect.pgraster.xml.inc">
]>

<config version="1.0">
      <coverageName name="oek"/>
      <coordsys name="EPSG:4326"/>
      <!-- interpolation 1 = nearest neighbour, 2 = bipolar, 3 = bicubic -->
      <scaleop  interpolation="1"/>
 <axisOrder ignore="false"/>
      &mapping;
      &connect;
</config>

将准备好的三个文件放在同一文件夹中,打开GeoServer,新建栅格数据源,如图所示:

 

 

 栅格数据源

配置连接参数

 

发布栅格数据,参数配置及效果如下图所示:

 

 

 一般都会自动识别的,不用修改

 

 

参考 :https://www.giserdqy.com/gis/opengis/geoserver/14055/

           如何利用GeoServer发布PostgreSQL/PostGIS中的空间数据

           GeoServer官方教程:使用图像镶嵌插件组织并发布时间序列栅格数据 - 知乎 (zhihu.com)

 

posted on 2022-12-15 13:14  闹不机米  阅读(1491)  评论(0编辑  收藏  举报

导航