GeoServer发布带时间属性的时序图层ImageMosaic
一、准备数据
1、新建目录
在geoserver的data根路径新建一个目录(如此处的example文件夹)
ps: 在电脑的任意位置新建文件夹都是可以的,在后续步骤选择文件夹时使用相对路径就行
2、新建文件夹
在example文件夹下新建一个文件夹(如此处的test_data),用来存放tif数据和配置文件:
注意栅格文件的文件名,都包含了时间信息,时间信息占6个字符。
3、配置文件
3-1 创建配置文件:timeregex.properties
在test_data文件夹中创建一个timeregex.properties文件,在该文件中指定从以上栅格文件文件名提取时间信息的正则表达式:
regex=[0-9]{6}
3-2 创建配置文件:datastore.properties
在test_data文件夹中创建一个datastore.properties文件,在该文件中填写如下连接数据库的参数信息:
SPI=org.geotools.data.postgis.PostgisNGDataStoreFactory
host=localhost
port=5432
database=db
schema=public
user=postgres
passwd=123456
Loose\ bbox=true
Estimated\ extends=false
validate\ connections=true
Connection\ timeout=10
preparedStatements=true
3-3 创建配置文件:indexer.properties
在snow文件夹中创建一个indexer.properties文件,这个文件可以指定Geoserver在数据库中创建索引表的信息。在本例中,时间值存储在列ingestion中
ElevationAttribute=elevation
Schema=*the_geom:Polygon,location:String,ingestion:java.util.Date,elevation:Integer
PropertyCollectors=TimestampFileNameExtractorSPI[timeregex](ingestion)
这样配置就结束了,此时test_data文件夹中的内容如下:
二、创建并发布ImageMosaic存储的时序栅格数据
1、创建一个ImageMosaic数据存储
首先在GeoServer的管理界面创建一个工作空间,如此处的mosaic-sample
2、新建一个存储仓库
选择栅格数据源中的ImageMosaic进行创建
注意:Geoserver将会尝试在PostgreSQL数据库中创建一个名称就为test_data的表。如果表已经存在,则不会从DB中删除该表(需要手动删除),而是会出现以下错误消息。如果生成的properties文件已经存在于目录中,或者datastore.properties文件中存在不正确的连接参数,则也会出现相同的错误信息。
指定图层并设置覆盖参数
维度里面的时间勾选启用,并且简报选择列表,点击保存
图层发布成功
Geoserver将在文件夹test_data中创建一个test_data.properties文件(如下所示)。并在数据库上为镶嵌索引创建一个表test_data(如下所示)
三、图层访问
为了在显示特定时间的栅格数据的,必须在请求中传递一个附加的时间参数,该参数具有特定的表示格式**&time=**,这里的的Pattern可以使用上表ingestion列的值
例如,如果我们希望获得2024年1月、2月、3月的栅格图像,则在每个请求中添加**&TIME=2024-01**、&TIME=2024-02和**&TIME=2024-03**参数。
参考地址:GeoServer官方教程:使用图像镶嵌插件组织并发布时间序列栅格数据
四、注意事项:
- 文件夹权限错误
在发布过程中,需要更改geoserver访问的文件的权限,将权限提升到最高
否则会出现报错,报错信息如下:
Caused by: java.io.IOException: Failed to create reader from file:example/test_data and hints Hints:
REPOSITORY = org.geoserver.catalog.CatalogRepository@7fce770a
EXECUTOR_SERVICE = java.util.concurrent.ThreadPoolExecutor@2f9b0c89[Running, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
System defaults:
LENIENT_DATUM_SHIFT = true
STYLE_FACTORY = org.geotools.styling.StyleFactoryImpl@735b0646
FEATURE_FACTORY = org.geotools.feature.LenientFeatureFactoryImpl@387865b4
FORCE_LONGITUDE_FIRST_AXIS_ORDER = true
FORCE_AXIS_ORDER_HONORING = http
COMPARISON_TOLERANCE = 1.0E-8
GRID_COVERAGE_FACTORY = GridCoverageFactory
TILE_ENCODING = null
FILTER_FACTORY = FilterFactoryImpl