geoserver发布image mosaic服务(同一区域多时相数据)

geoserver发布image mosaic服务(同一区域多时相数据)

前言

因业务需求,需要发布同一区域多时相数据。第一反应就是image mosaic,但是以前没用过,于是开启了探险之旅。

搜资料阶段

经过一番搜索,发现了一篇帮助极大的文章。
《GeoServer官方教程:使用图像镶嵌插件组织并发布时间序列栅格数据》
但是其中部分内容对我来说过于晦涩难懂——个人水平有限【汗】,于是又找了geoserver官网的文档,对照着进行了尝试(感谢网易有道词典)。
geoserver官网image mosaic介绍
下面就是这次尝试的总结。

目录

  • 准备
  • 数据
  • 服务
  • 问题

准备

  • geoserver。我的版本是2.15.0。
  • postgresql(postgis)。PostgreSQL版本不低于9.1,PostGIS版本不低于2.0。
  • 多时相的tif数据。

数据

  1. 将数据放入geoserver的数据目录下,或者任何一个geoserver可以访问到的目录。
  2. 按一定格式修改数据名,使程序可以读到日期/时间。我这里是“tem_时间.tif”。
    修改数据名
  3. 数据的同一目录下创建timeregex.properties文件。内容:
regex=[0-9,T]+
  1. 数据的同一目录下创建indexer.properties文件。内容:
TimeAttribute=ingestion
Schema=*the_geom:Polygon,location:String,ingestion:java.util.Date
PropertyCollectors=TimestampFileNameExtractorSPI[timeregex](ingestion)
Caching=false
AbsolutePath=false
  1. 数据的同一目录下创建datastore.properties文件,内容:
SPI=org.geotools.data.postgis.PostgisNGDataStoreFactory
host=192.168.0.18
port=5432
database=testmosaic
schema=public
user=postgres
passwd=postgres
Loose\ bbox=true
Estimated\ extends=false
validate\ connections=true
Connection\ timeout=10
preparedStatements=true

现在的数据目录:
在这里插入图片描述

服务

  1. 创建工作空间:testMosaic。
  2. 添加新的数据存储(ImageMosaic)。
  3. 选择工作空间,填写数据源名称,找到数据目录,点击保存。
    在这里插入图片描述
    如果在这里遇到报错,请跳至问题模块。
    ====================分割线====================
    在这里插入图片描述
  4. 在【编辑图层】界面【数据】下,修改Granule Sorting (WFS like syntax)的值:
    在这里插入图片描述
  5. 在【编辑图层】界面【维度】下,启用时间,【简报】为列表:
    在这里插入图片描述
  6. 点击保存,发布成功。
  7. 调用服务。可以在链接中添加&time=<Pattern>来显示特定时间的栅格数据,这里的Pattern可以使用下图中ingestion列的值。

问题

在整个过程中,我在数据阶段遇到的问题最多。其实搞懂之后也不难,关键就在配置文件。
三个配置文件,一个是连上数据库,一个是读取tif文件名中的时间,一个是在数据库中创建表,并把读取到的时间写进去。最终数据库中会多一个图层名一致的表,表中的内容如下所示:
在这里插入图片描述
下面请对照着这张图,来看看三个配置文件的含义。

  • datastore.properties是连接数据库,修改IP、端口、数据库、用户名、密码即可。
  • timeregex.properties是用正则表达式来提取tif文件名中的时间。
    regex=[0-9,T]+的效果是从tem_20220121T080000.tif中取出20220121T080000赋值给regex变量。
    ps. 这里的时间最好符合ISO8601标准。当然也可以用自己的格式,但要有新参数。官方文档如下图:
    在这里插入图片描述
    ps. 此外,如果日期在上层目录名中,可以采用以下方式:
    在这里插入图片描述
    如果还需要海拔字段,可以再添加一个elevationregex.properties文件;其他相关内容详见官方文档。
  • indexer.properties文件说明了将在数据库中添加的字段。
    Schema=*the_geom:Polygon,location:String,ingestion:java.util.Date就代表会创建三个字段,分别是the_geom(Polygon类型)、location(String类型)、ingestion(java.util.Date,也就是日期类型)。其中前两者是固定不变、必须要有的,其他的可根据自己需求添加。
    TimeAttribute=ingestion表示用ingestion字段存储时间值。
    PropertyCollectors=TimestampFileNameExtractorSPI[timeregex](ingestion),这句的重点在[]和()中。[timeregex]是timeregex.properties的文件名。这一句的意思是把从timeregex.properties中读取到的值regex交给ingestion字段。

配置好相关信息后,应该就可以成功发布image mosaic服务了。如果出现问题,多检查检查tif文件名、正则表达式、配置文件等内容。

最后,再次感谢大佬的作品《GeoServer官方教程:使用图像镶嵌插件组织并发布时间序列栅格数据》

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值