GeoServer使用ImageMosaic发布并访问携带时间及其他属性的栅格数据
1、新建工作区
2、配置文件设置
下面使我们等会要发布的目录,我们需要添加并修改图中标注的几种配置文件。
2.1 datastore.properties文件
用于geoserver连接数据库进行初始化、查询等操作。
SPI=org.geotools.data.postgis.PostgisNGDataStoreFactory
host=127.0.0.1
port=5432
database=localtest
schema=public
user=postgres
passwd=root
Loose\ bbox=true
Estimated\ extends=false
validate\ connections=true
Connection\ timeout=10
preparedStatements=true
2.2 indexer.properties文件
可以配置我们的高程属性及其他自定义属性。
如 *TimeAttribute 表示时间高程属性,
AdditionalDomainAttributes` 为我们自定义的属性。
TimeAttribute=ingestion
AdditionalDomainAttributes=sid(sid),pcode(pcode)
Schema=*the_geom:Polygon,location:String,ingestion:java.util.Date,sid:Integer,pcode:String
PropertyCollectors=TimestampFileNameExtractorSPI[timeregex](ingestion),IntegerFileNameExtractorSPI[sidregex](sid),StringFileNameExtractorSPI[pcoderegex](pcode)
Caching=false
AbsolutePath=false
3.3 timeregex.properties及其他正则解析文件
用于解析文件名称内容
regex=[0-9]+$,format=yyyyMMdd
3、新建数据存储
这里我们选择 ImageMosaic 类型,发布多张 tif 图。
保存完后geoserver会自动根据 datastore.properties
文件连接数据库,并创建对应表。
我们可以查看数据库是否创建成功,可以看到文件名都被按照正则格式解析并入库了。
3、发布图层并设置
这里就可以看到时间高程属性与我们自定义的属性,勾选启用后保存即可。
4、测试
我们进入左边导航栏图层预览界面进行预览。
我们正常预览能够正常显示出tif图。
下面我们通过时间切换试试,在请求地址栏添加 time
参数,
可以看到我们已经切换了tif图
我们可以再加上我们自定义的多个属性来进行切换。
注意:自定义属性需要加上dim_
的前缀,如dim_sid
。
问题
1、无法请求到当天 tif 图。
在使用 ImageMosaic 插件发布图层成功后,保存到数据库中的数据默认都是从 08:00:00
这个时间,导致我们如果调用向数据库存储数据时,默认添加 00:00:00
会导致无法查询预览当天的图层。
这个问题时因为时区问题导致的,因为我们默认的时区是使用 CTS 时区,需要更改为 UTC 或 GMT 时区即可读取到当天 00:00:00
时间的图层。
解决办法:
根据系统修改 bat 脚本或 sh 脚本启动文件,加上 -Duser.timezone=UTC
这个即可。
- bat文件:
"%RUN_JAVA%" %JAVA_OPTS% -DGEOSERVER_DATA_DIR="%GEOSERVER_DATA_DIR%"
-Djava.awt.headless=true -DSTOP.PORT=8079 -DSTOP.KEY=geoserver -jar start.jar
-Duser.timezone=UTC
- sh文件:
exec "$_RUNJAVA" $JAVA_OPTS $MARLIN_ENABLER -DGEOSERVER_DATA_DIR="$GEOSERVER_DATA_DIR"
-Djava.awt.headless=true -DSTOP.PORT=8079 -DSTOP.KEY=geoserver -jar start.jar
-Duser.timezone=UTC