首页 > 其他分享 >GeoServer+Postgis发布存储在Postgis中的栅格数据(二)--pgraster插件使用

GeoServer+Postgis发布存储在Postgis中的栅格数据(二)--pgraster插件使用

时间:2024-08-11 13:53:15浏览次数:13  
标签:pgraster beijing 插件 一篇 数据库 Postgis raster2pgsql 栅格数据

这一篇是前面一篇的续集,前一篇链接GeoServer+Postgis发布存储在Postgis中的栅格数据

前期准备

pgraster插件下载:还是提供一个maven地址,直接搜索pgraster即可,版本的话因为插件是gs-开头选择和GeoServer版本一致即可,前一篇使用的GeoServer版本为2.19.6,所以这里也选择2.19.6即可,如下:

然后将其拷贝到$GEOSERVER_HOME/webapps/geoserver/WEB-INF/lib目录下,重启GeoServer,然后在GeoServer的Web管理页面添加栅格数据存储,然后选择ImageMosaicJDBC可以在URL输入框下面出现一个复选框代表插件添加成功,如下:

背景介绍

按照官方文档的说法,该插件是简化了ImageMosaic JDBC存储配置,只需要配置postgresql的bin目录为环境变量就可自动帮助导入瓦片,创建数据表,以及创建配置参数,官方文档截图如下:

但是按照官方文档我并没有配置成功,还是需要自己写配置文件上传栅格数据,创建元数据表等操作,但是相对而言该插件可以使用raster2pgsql工具自动切片并导入数据库,并创建数据表,相对而言比前一篇教程使用gdal_retile工具要简单不少,现在把整个流程分享给有需要的人。

数据库创建以及插件加载

新建一个数据库testRaster,扩展的创建可以参考前一篇的创建postgis数据库及扩展章节,结果如下:

使用raster2pgsql工具导入数据

如果没有将postgresql的bin目录添加环境变量可以在postgresql的bin目录执行以下代码:

raster2pgsql -s 4326 -I -C -M F:\postgis-geoserver-raster\beijing.tif -F -t 256x256 public.beijing | psql -h localhost -p 4321 -U postgres -d testRaster -W

 参数说明

-s 4326: 指定栅格数据的空间参考系统(SRID),这里4326表示使用WGS 84(通常用于全球GPS坐标)。

-I: 为栅格数据生成空间索引。空间索引可以加速空间查询。

-C: 为栅格数据生成栅格列约束条件。这些约束条件包括栅格瓦片的平铺情况和块的像素大小等。

-M: 添加瓦片元数据。它会在数据库中生成raster_columns和raster_overviews表,并在这些表中记录栅格元数据。

-F: 将栅格数据的平铺格式设置为regular blocking(即定期块格式)。这意味着将栅格图像分割成规则的、可控的大小(如256x256像素的瓦片),以便在数据库中存储和处理。

-t 256x256: 指定将栅格数据切割成的瓦片大小(256x256像素)。这有助于优化数据库的查询性能,尤其是在处理大范围或大文件时。

F:\postgis-geoserver-raster\beijing.tif: 指定输入的栅格文件路径,这里是beijing.tif 。 public.beijing: 指定导入数据的目标表名为public.beijing,并将其存储在public模式(schema)下。

| psql -h localhost -p 5432 -U postgres -d rastertest -W: 这个部分是通过管道(|)将raster2pgsql生成的SQL语句直接传递给psql工具,并执行这些语句以将数据插入到数据库中。

-h localhost: 指定PostgreSQL数据库的主机地址为本地主机(localhost)。

-p 4321: 指定PostgreSQL数据库的端口号为4321(PostgreSQL的默认端口5432)。

-U postgres: 指定数据库的用户名为postgres。

-d testRaster : 指定目标数据库名称为rastertest。

-W: 提示用户输入密码。在执行命令时,系统会要求你输入postgres用户的密码。 

另外raster2pgsql还可以导入整张影像,命令示例如下:

raster2pgsql -s 4326 -I -C -M F:\postgis-geoserver-raster\beijing.tif  public.beijing | psql -h localhost -p 4321 -U postgres -d testRaster -W

数据导入成功后会在数据库新建一张名为beijing的表,并有两个字段rid和rast(raster2pgsql有个参数可以新增一列记录文件名字,可以自行百度以下),如下:

 创建元数据表

在PgAdmin工具内,想要的数据库使用查询工具输入以下sql语句:

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));

insert into MOSAIC(NAME,TileTable) values ('oek','beijing');

其中beijing需要更改为前面使用raster2pgsql导入数据创建的表名的名称,示例如下:

执行成功后,在左侧表的item右键刷新就可以看到一个名为mosaic的表,如下:

 创建配置文件

 1.connect.pgraster.xml.inc

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

这个除了数据库名称和前一篇文章没区别。

 2.mapping.pgraster.xml.inc

<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>

这个和前一篇文章的区别主要有以下几点:

1.<spatialExtension/>节点使用pgraster,前一篇使用postgis。

2.少了<spatialTableNameAtribute name="SpatialTable" />节点及相关配置。

3.<tileTable>节点下只存在一个<blobAttributeName/>节点且name的值为rast。

 3.oek.pgraster.xml(前一篇叫dem.postgis.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>

其实和前一篇没区别,只需要把<coverageName/>节点中name的值改为和前面insert语句中表mosaic的name字段的值一样即可,该值也是GoeServer发布图层的图层名。

 将以上三个文件放到同一纯英文路径目录。

数据发布

还是使用上一篇的工作空间,添加新的数据存储,还是选择栅格数据源中的ImageMosaicJDBC,然后设置数据源名称,在URL处填写oek.pgraster.xml文件的绝对路径(这个文件需要在安装GeoServer的电脑上),如下:

因为没有用到官方说的方案不勾选 PGRaster automatic configuration parameters前面的复选框,直接点击保存即可。

在左侧选择图层选项,添加新的资源选择test:testRaster数据存储,结果如下:

点击发布,参数默认直接点保存即可,如下:

 然后在图层预览界面,选择test:oek,点击OpenLayers,结果如下:

至此数据发布成功。 

标签:pgraster,beijing,插件,一篇,数据库,Postgis,raster2pgsql,栅格数据
From: https://blog.csdn.net/m0_59119702/article/details/141102773

相关文章

  • ComfyUI插件:ComfyUI layer style 节点(一)
    ComfyUI插件:ComfyUIlayerstyle节点(一)前言:学习ComfyUI是一场持久战,而ComfyUIlayerstyle是一组专为图片设计制作且集成了Photoshop功能的强大节点。该节点几乎将PhotoShop的全部功能迁移到ComfyUI,诸如提供仿照AdobePhotoshop的图层样式、提供调整颜色功能(亮度、饱和度、......
  • Eclipse插件之JDepend(分析代码依赖关系)
    JDepend-分析Java项目的包依赖关系EclipseJDepend插件是一个专为EclipseIDE设计的工具,用于分析Java项目的包依赖关系,从而帮助开发者评估代码的可扩展性、可重用性和可维护性。功能定位:JDepend是一个开源工具,通过为包依赖项提供面向对象的度量值,来指明代码库的弹性,即测......
  • 插件管理系统设计
    插件管理系统设计前言插件管理系统开发插件管理系统框图插件列表插件自定义UI第1部分UI:为分散嵌入各主界面的UI窗体;第2部分UI:选择某一插件时出现的设置UI界面;插件安装插件卸载插件的配置插件维护内部开发外部开发总结前言在谈插件前......
  • pinia-plugin-persistedstate 插件不生效
    引入使用该插件使用时发现不生效原因:pinia实例调用顺序不当将://import'./assets/main.css'import{createApp}from'vue'import{createPinia}from'pinia'importpiniaPluginPersistedstatefrom'pinia-plugin-persistedstate'importAppfr......
  • 开源图片编辑器的插件化架构
    大家好,我是开源图片编辑器的作者,在开发图片编辑器的过程中,因为一些功能无法扩展,出现过一次较大的重构,将整个编辑器改为了插件化的架构,经历过这次重构,规范了编辑器功能的扩展方式,解决了项目里很多重要的问题。如果你也在做类似的项目,或者对图片编辑器架构比较感兴趣,希望我的经验能......
  • 『SD』Stable Diffusion WebUI 安装插件(以汉化为例)
    前言本文简介StableDiffusionWebUI是允许用户自行安装插件的,插件的种类有很多,有将页面翻译成中文的插件,也有提示词补全插件,也有精细控制出图的插件。以汉化为例,StableDiffusionWebUI默认是英文的,我们只需装个汉化插件然后重启一下项目就能把页面变成中文了。安装......
  • 谷粒商城实战笔记-145-性能压测-性能监控-jvisualvm使用-解决插件不能安装
    文章目录jvisualvm的作用安装查看gc相关信息的插件解决jvisualvm不能正常安装插件的问题1,查看java版本2,打开网址3,修改jvisualvm的设置jvisualvm的作用JVisualVM是一个集成在JavaDevelopmentKit(JDK)中的多功能工具,它提供了一种可视化的方式来监控和分析Java应用......
  • Cacti安装插件之thold
    Cacti安装插件之thold 基本环境os:rhel5.5i386rpm:lampcacti:0.8.8arrdtool:1.4.5 1,安装settings插件#wgethttp://docs.cacti.net/_media/plugin:settings-v0.7-1.tgz#mvplugin\:settings-v0.7-1.tgzsettings-v0.7-1.tgz#tar zxvfsettings-v0.7-1.tgz-......
  • 【VSCode】《VSCode安装本地历史记录插件并配置搜索忽略》
    前言VSCode本地会记录修改和保存的历史文件信息,当没有使用git管理的时候,就可以通过本地历史搜索快速比对还原历史代码。插件安装目前最新版本停留在1.8.1更新时间为2020/3/4号;估计作者后续也没有更新计划了。安装后会在左下角和左上角出现LOCALHISTORY和./history两个......
  • edge浏览器加载java插件的方法
    在MicrosoftEdge浏览器中直接加载Java插件并不是一个直接支持的功能,因为Edge是基于Chromium内核的浏览器,主要支持Web技术如HTML、CSS和JavaScript。Java插件(通常指的是Java小程序,使用Java编程语言编写的应用程序)主要用于在早期的InternetExplorer浏览器中运行,但在现代浏览器中已......