Modis COG数据集的ImageMosaic示例

介绍

本教程提供了在一些MODIS植被指数数据集的基础上配置ImageMosaic的一些提示,网址为 NASA EarthData

ImageMosaic配置文件

我们需要几个配置文件来正确设置ImageMosaic。配置基于以下关键点:

  • ImageMosaic最初将创建为空,没有任何数据。第二步将收集数据。

  • 将根据文件名中包含的日期使用时间维度。

有关ImageMosaic配置的更多详细信息,请参阅专用文档部分: 图像马赛克配置

基于以上要点,我们可以设置以下配置文件:

indexer.properties:

这包含索引组成ImageMosaic的数据集的主要配置。

Cog=true
PropertyCollectors=TimestampFileNameExtractorSPI[timeregex](time)
TimeAttribute=time
Schema=*the_geom:Polygon,location:String,time:java.util.Date
CanBeEmpty=true
Name=modisvi

相关部件:

  • 指定ImageMosaic为COG数据集的镶嵌的COG标志

  • PropertyCollectors、TimeAttribute和Schema用于定义ImageMosaic索引列以及如何填充它们

  • CanBeEmpty允许定义空的ImageMosaic。之后它将被填充

  • 名称是此镶嵌的名称

timeregex.properties:

前面的索引器引用索引模式中的时间维度和相关时间列,通过使用timeregex.properties文件中指定的正则表达式从文件名(8位数字,表示年、月、日)提取时间值来填充这些时间维和相关时间列。存储在S3存储桶中的此集合的示例文件示例是2018.01.01.tif,因此时间正则表达式将反映这一点。请注意日期的3组数字和“格式”。

regex=[0-9]{4}.[0-9]{2}.[0-9]{2},format=yyyy.MM.dd

datastore.properties:

由于可用数据集的数量,建议将ImageMosaic索引存储在DBMS上,即PostGIS DB。看见 datastore.properties 有关更多信息,请参阅ImageMosaic文档的部分。确保具有数据存储区中报告的名称的数据库可用

user=postgres
port=5432
passwd=postgres
url=jdbc\:postgresql\:modisvi
host=localhost
database=modisvi
driver=org.postgresql.Driver
schema=public
SPI=org.geotools.data.postgis.PostgisNGDataStoreFactory
fetch\ size=1000
max\ connections=20
min\ connections=5
validate\ connections=true
Loose\ bbox=true
Expose\ primary\ key=false
Max\ open\ prepared\ statements=50
preparedStatements=false
Estimated\ extends=false
Connection\ timeout=20

设置好这3个文件后,使用它们创建一个zip存档,并将其命名为modisvi.zip。(请注意,这些文件需要位于zip文件的根目录中,而不是子目录中)

现在可以使用睡觉调用开始创建ImageMosaic了。

图片马赛克睡觉运营

在接下来的步骤中,我们假设:

  • 现有的Geoserver实例在localhost的端口8080上运行。

  • 该Geoserver上存在名为“test”的工作区。

  • 睡觉凭据为USER=ADMIN PASSWORD=Geoserver。

  • 使用标志在Java系统属性上定义默认AWS区域 -Diio.https.aws.region=us-west-2

确保根据您的实际安装相应地更新传入的URL。

在不进行配置的情况下创建空图像镶嵌

CURL请求

curl -u admin:geoserver -XPUT --write-out %{http_code} -H "Content-type:application/zip" --data-binary @modisvi.zip http://localhost:8080/geoserver/rest/workspaces/test/coveragestores/modisvi/file.imagemosaic?configure=none

响应

201 OK

提供样品原型颗粒

下一步是为要支持的覆盖提供原型数据集。

CURL请求

curl -u admin:geoserver -XPOST -H "Content-type: text/plain" --write-out %{http_code} -d "https://modis-vi-nasa.s3-us-west-2.amazonaws.com/MOD13A1.006/2018.01.01.tif" "http://localhost:8080/geoserver/rest/workspaces/test/coveragestores/modisvi/remote.imagemosaic"

响应

202 Accepted

初始化存储(列出可用承保范围)

一旦提供了原型,我们就需要通过查询可用覆盖范围来初始化存储。

CURL请求

curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/workspaces/test/coveragestores/modisvi/coverages.xml?list=all

响应

<List>
  <coverageName>modisvi</coverageName>
</list>

配置覆盖范围

获得可用承保范围列表后,我们需要通过睡觉发送配置来配置承保范围。

CURL请求

curl -v -u admin:geoserver -XPOST -H "Content-type: text/xml" -d @"coverage.xml" "http://localhost:8080/geoserver/rest/workspaces/test/coveragestores/modisvi/coverages"

其中coverage.xml包含以下内容:

<coverage>
  <name>modisvi</name>
  <nativeName>modisvi</nativeName>
  <enabled>true</enabled>
  <metadata>
    <entry key="time">
      <dimensionInfo>
        <enabled>true</enabled>
        <presentation>LIST</presentation>
        <units>ISO8601</units>
        <defaultValue>
          <strategy>MAXIMUM</strategy>
        </defaultValue>
      </dimensionInfo>
    </entry>
  </metadata>
</coverage>

添加更多颗粒

既然我们已经准备好了coverage Store并配置了覆盖层,我们就可以开始添加更多的粒度了。

CURL请求

curl -u admin:geoserver -XPOST -H "Content-type: text/plain" --write-out %{http_code} -d "https://modis-vi-nasa.s3-us-west-2.amazonaws.com/MOD13A1.006/2018.01.17.tif" "http://localhost:8080/geoserver/rest/workspaces/test/coveragestores/modisvi/remote.imagemosaic"

设置样式

MODIS数据有归一化植被指数(NDVI)和增强型植被指数(EVI)两个波段。让我们添加此ndvi.sld样式,以将适当的色彩映射表应用到ndvi波段(将此内容复制到名为ndvi.sld的文件中,以供下一次睡觉调用使用):

<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" version="1.0.0">
  <NamedLayer>
    <Name>Default Styler</Name>
    <UserStyle>
      <Name>ndvi</Name>
      <Title>ndvi</Title>
      <FeatureTypeStyle>
        <Name>name</Name>
        <Rule>
          <RasterSymbolizer>
            <ChannelSelection>
              <GrayChannel>
                <SourceChannelName>1</SourceChannelName>
              </GrayChannel>
            </ChannelSelection>
            <ColorMap>
              <ColorMapEntry color="#000000" quantity="-1"/>
              <ColorMapEntry color="#0000ff" quantity="-0.75"/>
              <ColorMapEntry color="#ff00ff" quantity="-0.25"/>
              <ColorMapEntry color="#ff0000" quantity="0"/>
              <ColorMapEntry color="#ffff00" quantity="0.5"/>
              <ColorMapEntry color="#00ff00" quantity="1"/>
            </ColorMap>
            <ContrastEnhancement/>
          </RasterSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

创建样式的卷曲请求

curl -v -u admin:geoserver -XPOST -H "Content-type: application/vnd.ogc.sld+xml" -d @ndvi.sld http://localhost:8080/geoserver/rest/styles

将样式设置为图层的默认样式的CURL请求

curl -v -u admin:geoserver -XPUT -H "Content-type: text/xml" -d "<layer><defaultStyle><name>ndvi</name></defaultStyle></layer>" http://localhost:8080/geoserver/rest/layers/modisvi.xml

最终预览

以下是图层预览的外观:

../../_images/ndvi.png

NDVI COG数据集