图像马赛克配置

颗粒

每个单独的图像通常被称为 颗粒 .在最近发布的geoserver中,对颗粒的相似性要求显著降低,包括:

  • 颗粒不需要共享相同的坐标参考系(参见 the multi-CRS mosaic tutorial

  • 颗粒可以是不同的颜色模型,允许混合灰色、RGB、RGBA和索引颜色颗粒(但不可能将彩色颗粒与科学数据类型(如float/double)混合)。为了受益于混合颜色模型,必须启用jai ext支持,请参见 the JAI-EXT support documentation .

此外,值得注意的是,目前图像马赛克能够处理栅格数据,栅格到世界的转换是缩放和转换转换,因此没有旋转或倾斜。

索引和配置文件创建

创建新存储时,将生成索引形状文件,以将每个颗粒文件与其边界框关联。创建索引既要考虑目录树,也要考虑单个目录。您所需要做的就是将存储指向层次结构的根,并且所有图像都将考虑包含在ImageMosaic中。

索引将包含每个栅格文件的封闭多边形(在适当的坐标参考系统中)以及这些文件的路径。位置属性可以相对于配置文件夹或绝对文件夹。默认情况下,此属性的名称为 location ,但这可以在主配置文件中更改。

如果已经生成了这些文件,geoserver将尊重它们,而不会生成新的索引。默认情况下,shapefile用于索引,但Postgis、H2和Oracle也受支持,并具有其他配置步骤。

配置文件

在每个存储区中,有多个配置文件决定如何渲染马赛克。

备注

The property file syntax uses a few reserved chars that need escaping in order to be used for keys or values. For example, the # character is used to comment out lines, in order to use it in values it needs to be escaped, like this: \#. The same applies to the = character, which is used to separate the property name from its value: it should be specified as \=. Finally, if there is a need to use the \ itself, it will have to be escaped as well: \\.

主配置文件

Mosaic配置文件是用于存储控制ImageMosaic插件的配置参数的主文件。由geoserver创建时,默认情况下会调用 <directory>.properties 在哪里 <directory> 是存储区根目录的名称。(它与geoserver中的存储名称无关。)它可以有其他名称,只要它与其他文件(如 datastore.propertiesindexer.properties .此文件通常不需要手动编辑。

下表描述了此配置文件中的各种元素。

参数

强制性的?

描述

水平

Y

表示此镶嵌的各个级别的颗粒的分辨率。

异质的

N

设置图像文件是否异类。默认为 false .

AbsolutePath

N

控制路径是否存储在 location 属性表示相对于形状文件索引位置的绝对路径或路径。请注意,相对索引确保了马赛克本身的可移植性。此参数的默认值为 false 也就是说相对路径。

名字

N

要分配给索引的名称。如果未指定,索引名通常与包含马赛克的文件夹的名称匹配。

TypeName

Y

此马赛克的FeatureType名称。通常名称为 Name .

高速缓存

N

用于启用缓存的布尔值。当设置为 true ,ImageMosaic将尝试在内存中保存索引的全部内容,以减少加载/查询时间。设置为 false 对于大颗粒索引和/或是否要摄入新颗粒(例如,当索引位于数据库中并且我们直接与之交互时)。默认为 false .

扩展器GB

N

用于强制颜色从索引颜色模型(调色板数据集)扩展到组件颜色模型(RGB)的布尔标志。默认为 false .

LocationAttribute

Y

shapefile索引中属性路径的名称。默认为 location .

建议SPI

Y

用于读取图像文件的建议插件。

SuggestedFormat

N

建议使用GridFormat读取图像文件。

信封2d

N

马赛克的信封格式为 LLX,LLY URX,URY (注意左下和右上坐标对之间的空间)。

CheckAuxiliaryMetadata

N

此参数允许指定ImageMosaic插件是否应检查每个颗粒文件旁边是否存在gdal aux.xml文件。对于大多数常见的用例,您不需要设置或指定这个参数。默认情况下,如果禁用了ImageMosaic,它将不会为在granuleCatalog中初始化的每个颗粒查找辅助文件。这避免了无用的检查,尤其是在处理上千个颗粒时。您应该将该参数设置为 true 当您想要指示ImageMosaic为每个颗粒查找包含PAM(持久辅助元数据)的gdal生成的aux.xml文件时,要附加到颗粒信息(granuledescriptor)。当您设置了 Dynamic ColorMap rendering transformation 它根据收集到颗粒的gdal pam中的统计信息动态地设置颜色映射,该gdalinfo-stats参数先前是用gdalinfo-stats参数生成的。

LevelsNum

Y

表示我们目前为该镶嵌图的颗粒所拥有的降低分辨率层的数量。

配置文件示例如下:

Levels=0.4,0.4
Heterogeneous=false
AbsolutePath=false
Name=osm
TypeName=osm
Caching=false
ExpandToRGB=false
LocationAttribute=location
SuggestedSPI=it.geosolutions.imageioimpl.plugins.tiff.TIFFImageReaderSpi
SuggestedFormat=org.geotools.gce.geotiff.GeoTiffFormat
CheckAuxiliaryMetadata=false
LevelsNum=1

datastore.properties

默认情况下,imagemosaic索引由shapefile指定,该shapefile与主配置文件一样位于imagemosaic目录的根目录。

如果需要,可以对索引使用不同的存储,例如空间DBMS,当您希望在一组地理服务器实例中共享ImageMosaic本身时,这是首选的解决方案。在这种情况下,用户必须向geoserver提供适当的连接参数,可以使用 datastore.properties 文件放在imagemosaic目录的根目录下。

备注

如果形状文件不存在或不存在,则自动创建形状文件。 datastore.properties 文件。

警告

在编写本文时,已经成功地测试了以下空间DBMS:Oracle、PostgreSQL、H2、SQLServer。

参数

强制性的?

描述

StoreName

N

可以使用“workspace:storename”语法引用geoserver注册的存储。使用此选项时,不需要提供其他连接参数。仍可以提供SPI,以通知Mosaic所产生的存储类型(例如,Oracle),以防需要为其制定特定行为(例如,对于Oracle,属性都是大写的,不能超过30个字符,Mosaic将遵守限制,但 SPI 参数需要显式设置为 org.geotools.data.oracle.OracleNGDataStoreFactory 因为实际的存储类型在到达马赛克代码时是隐藏的)。另外,作为提醒,代码提取的是存储引用,而不是层引用,这意味着可能应用于公开特征类型的层的安全限制不适用于马赛克代码(例如,如果用户在所述层上具有空间过滤器等限制,则不会传输转移到马赛克,需要单独固定)

SPI

Y

用于连接到索引存储的数据存储工厂:

  • PostGIS: org.geotools.data.postgis.PostgisNGDataStoreFactory

  • 神谕: org.geotools.data.oracle.OracleNGDataStoreFactory

  • H2: org.geotools.data.h2.H2DataStoreFactory

  • SQLServer: org.geotools.data.sqlserver.SQLServerDataStoreFactory

JNDI 也可以用于这些商店中的任何一家。如果使用JNDI,则datastoreFactory名称将与上述名称不同。

连接参数

Y

指定SPI使用的连接参数。这些连接参数的列表可以在相关存储的geotools文档中找到:

如果使用JNDI,连接参数将包括 jndiReferenceName 而不是 hostport 等等。请注意,对于任何包含空格的连接参数(例如 loose bbox )必须在空格前面用反斜杠转义。 (loose\ bbox

这是一个样品 datastore.properties PostGIS索引文件:

SPI=org.geotools.data.postgis.PostgisNGDataStoreFactory
host=localhost
port=5432
database=osm
schema=public
user=user
passwd=password
Loose\ bbox=true
Estimated\ extends=false
validate\ connections=true
Connection\ timeout=10
preparedStatements=true

这是一个样品 datastore.properties 通过JNDI的PostGIS索引文件:

SPI=org.geotools.data.postgis.PostgisNGJNDIDataStoreFactory
#String
# JNDI data source
# Default "java:comp/env/"+"jdbc/mydatabase"
jndiReferenceName=

#Boolean
# perform only primary filter on bbox
# Default Boolean.TRUE
Loose\ bbox=true

#Boolean
# use prepared statements
#Default Boolean.FALSE
preparedStatements=false

indexer.properties

除了所需的信封和位置属性外,索引存储的模式还可以公开其他自定义属性,这些属性稍后可用于在WMS或WCS请求期间动态过滤ImageMosaic颗粒,或用于转移WMS和WCS维度,如时间、高程等。这是由 indexer.properties 文件:

参数

强制性的?

描述

图式

Y

描述属性和数据类型之间映射的逗号分隔序列。

PropertyCollectors

Y

以逗号分隔的属性收集器列表。列表中的每个条目都包括提取器类、文件名(在方括号内 [ ] 不包括 .properties 后缀)包含从颗粒文件名中提取属性值所需的正则表达式,以及属性名(在括号内) ( ) )。提取器类的实例还指示由特定收集器计算的对象类型,因此 TimestampFileNameExtractorSPI 将返回 Timestamps 当一个 DoubleFileNameExtractorSPI 将返回 Double 数字。

TimeAttribute

N

指定时间变量属性的名称。

ElevationAttribute

N

指定高程属性的名称。

AuxiliaryFile

N

用于内部目的的辅助文件的路径(例如:处理netcdf颗粒时,它引用netcdf xml辅助文件)。

AbsolutePath

N

控制路径是否存储在 location 属性表示相对于形状文件索引位置的绝对路径或路径。请注意,相对索引可以确保马赛克本身具有更好的可移植性。此参数的默认值为 false 也就是说相对路径。

高速缓存

N

用于启用缓存的布尔值。当设置为 true ,ImageMosaic将尝试在内存中保存索引的全部内容,以减少加载/查询时间。设置为 false 对于大颗粒索引和/或是否要摄入新颗粒(例如,当索引位于数据库中并且我们直接与之交互时)。默认为 false .

CanBeEmpty

N

用于配置空马赛克的布尔标志。启用后,ImageMosaic不会抛出由于没有任何覆盖而导致的异常。默认设置为 false .

信封2d

N

马赛克的信封格式为 LLX,LLY URX,URY (注意左下和右上坐标对之间的空间)。

扩展器GB

N

用于强制颜色从索引颜色模型(调色板数据集)扩展到组件颜色模型(RGB)的布尔标志。默认为 false .

IndexingDirectories

N

逗号分隔值引用包含要索引的颗粒的目录的路径列表。如果未指定,indexingdirectory将是mosaic配置目录。此参数允许在仅包含配置文件的文件夹中配置马赛克,而要索引的颗粒则存储在其他位置。

名字

N

要分配给索引的名称。如果未指定,索引名通常与包含马赛克的文件夹的名称匹配。

NoData

N

指定马赛克的节点数据。(例如,在强制使用信封2d时,这可能很有用。在ImageMosaic初始化时,ImageMosaic会在信封的角上执行一个5x5像素的小样本读取,以检索granule的元数据和属性,如nodata。如果在配置中强制使用envelope2d,则可能会出现这样的情况:此样本读取不会涉及任何实际颗粒,因此将设置默认节点数据,这可能与实际存储在颗粒上的内容不同。在索引器中指定所需的nodata属性将解决这类问题)。

覆盖剂收集器SPI

N

如前一行所述,name参数允许ImageMosaic公开覆盖名称的规范。netcdf s的imagemosaic显示netcdf中找到的每个受支持变量的覆盖范围,使用变量的名称作为覆盖范围名称(例如,空气温度、风速等)。可选的coverageNameCollectorSPI属性允许指定coverageNameCollector插件in用于指导图像镶嵌如何为颗粒设置不同的覆盖剂。它应该包含实现类的全名,以及一组可选的分号分隔的键值对,前缀为“:”。请参见下面的示例。

递归

N

索引时使用的布尔标志。当设置为 true ,索引器将通过扫描索引目录中包含的任何子目录来查找颗粒。如果 false ,只分析主文件夹。默认为 true .

UseExistingSchema

N

用于启用/禁用现有架构的布尔标志。启用后,ImageMosaic将使用现有数据库模式(从 datastore.properties )而不是填充它。当您已经有一个具有有效马赛克模式的数据库(地理、位置和其他属性,请查看gdalindex)或不想重命名图像以添加时间和维度(只需将它们添加到表中、添加到其他域属性和属性)时,这非常有用。Ertycollectors)。默认为 false .

通配符

N

用于指定索引器应扫描哪些文件的通配符。(例如:“*.tif”)。目前不支持逻辑运算符和列表,因此此字段仅限于单个通配符元素,不支持AND/OR运算符组合。

WrapStore

N

默认情况下,PostgreSQL标识符不能超过63个字符。较长的名称将被截断为固定长度。当处理多维数据集(例如:netcdfs、gribs)时,每个变量(netcdf)或参数(grib)都被索引到具有相同名称的表中。因此,大气吸收光学厚度由颗粒有机物环境气溶胶颗粒netcdf cf变量将关联到具有相同名称的表。PostgreSQL会将其截断为大气吸收光学厚度,因为微粒有机物破坏了一对一的映射,从而破坏了正常的功能。将WrapStore标志设置为 true 将在完整的长名称和截断的表名称之间建立隐藏映射,以支持正确的工作。

马赛克

N

马赛克的“本地”CRS,也就是收集足迹的CRS。在处理多个CRS中的颗粒时很有用(参见教程)

AdditionalDomainAttributes

N

要公开的自定义维度的逗号分隔列表。每个自定义维度声明都可以是架构中的一个简单属性名,例如。, runtime ,从维度名称到属性名称的映射,例如。 time2(runtime) ,或从范围维度名称到两个属性的映射,例如。, timerange(timeStart,timeEnd)

PropertySelection

N

用于启用/禁用从马赛克索引中选择属性的布尔值。缺省值为 false 。启用后,ImageMosaic将尝试仅将执行马赛克操作所需的属性加载到内存中。一个典型的用例是使用STAC API作为马赛克索引,一个STAC项通常包含许多复杂的属性,并且API可能是远程的,减少有效负载可以改善查询时间和内存使用。

这是一个样品 indexer.properties 文件::

Schema=*the_geom:Polygon,location:String,ingestion:java.util.Date,elevation:Double
PropertyCollectors=TimestampFileNameExtractorSPI[timeregex](ingestion),DoubleFileNameExtractorSPI[elevationregex](elevation)
TimeAttribute=ingestion
ElevationAttribute=elevation
Caching=false
AbsolutePath=false

可选的CoverageNameCollectorSPI示例如下:

CoverageNameCollectorSPI=org.geotools.gce.imagemosaic.namecollector.FileNameRegexNameCollectorSPI:regex=^([a-zA-Z0-9]+)

这定义了一个基于regex的名称收集器,该收集器从文件名的前缀中提取覆盖名,以便具有temperature_2015.tif、temperature_2016.tif、pressure_2015.tif、pressure_2016.tif的ImageMosaic将温度 * granules on a temperature coverage and pressure* A上的颗粒 pressure 新闻报道。

备注

The extraction works from the match of the full regular expression, if there are no capturing groups. If there are capturing groups instead, the match will be the concatenation of the text matched by all the capturing groups. This can be used to simplify the regular expression, for example, in order to match a string surrounded by underscores, regex=.*_(\\w+)_.* can be used instead of the more complex regex=(?<\=_)\\w+(?\=_) (using non capturing groups instead).

财产收集者

下表列举了可用的属性收集器

收集器SPI名称

描述

ByteFinameExtractor SPI DoubleFinameExtractor SPI FloatfileNameExtractor SPI IntegerFileNameExtractor SPI LongFileNameExtractor SPI ShortFileNameExtractor SPI

使用sidecar文件中指定的正则表达式从文件名中提取一个数字,将其转换为基于SPI名称的所需类型(例如,doublefilenameextractor SPI提取双精度浮点,integerfilenameextractor SPI提取32位整数)。

时间戳文件名提取程序SPI

使用sidecar文件中指定的正则表达式从文件名中提取时间戳

字符串文件名提取程序SPI

使用sidecar文件中指定的正则表达式从文件名中提取字符串

当前日期提取程序SPI

返回当前日期和时间(用于跟踪马赛克中的摄取时间)

fs数据提取程序SPI

返回正在收集的文件的创建日期

数据提取程序SPI

返回在TIFF文件头“datetime”中找到的日期(代码306)

解吸xtractor spi解吸xtractor spi解吸xtractor spi解吸xtractor spi解吸

返回正在采集的栅格的本机分辨率。resolutionextractorspi和resolutionextractorspi返回栅格的x分辨率,resolutionextractorspi返回y轴上的分辨率。

CRSExtractorspi公司

以字符串形式返回栅格坐标参考系的代码,例如“EPSG:4326”

这个 PropertyCollectors 上面示例中的参数表示另外两个 .properties 用于填充 ingestionelevation 属性:

timeregex.properties ::

regex=[0-9]{8}T[0-9]{9}Z(\?!.\*[0-9]{8}T[0-9]{9}Z.\*)

上面是一个属性文件,其中包含用于提取中表示的日期和时间的regex ISO-8601 作为文件名的一部分。(根据ISO-8601,注意日期数字和时间数字之间的T字符)

如果文件名中有自定义格式的日期时间,则 格式 元素应添加在regex后面,前面加逗号,以定义自定义表示形式。

例子:
Temperature_2017111319.tif
每小时温度文件,日期时间=2017年11月13日下午7:00(后2位数字=19)

在这种情况下,timeregex.properties文件应该如下所示:

正则表达式=。 [([0-9]{{10}}).] ,格式=YYYYMMDDHH

在时间信息精度降低的情况下,如果需要获得包含在该降低值中的更高时间,则 ,useHighTime=true 应添加元素。

例子:
Temperature_2017111319.tif
日期时间为2017年11月13日19时00分00秒000分的小时温度文件
您希望获得该降低精度中包含的最长时间,即2017年11月13日,19h 59m 59s 999ms

在这种情况下,timeregex.properties文件应该如下所示:

正则表达式=。 [([0-9]{{10}}).] ,格式=yyyyMMddHH,useHighTime=true

如果时间信息沿整个文件路径传播,则 ,fullPath=true 应添加元素。

例子:
/data/20120202/Temperature.T1800.tif
小时温度TIF文件,在父文件夹中指定年、月和日(20120202),在名称中嵌入时间值(Temperature.T1800.tif)

在这种情况下,timeregex.properties文件应该如下所示:

正则表达式=(?:/)(\d{8})(?:/)(?:温度。)?:.tif),完整路径=真

elevationregex.properties ::

regex=(?<=_)(\\d{4}\\.\\d{3})(?=_)

存储参数

默认情况下, ImageMosaic 将成为 Raster Data Sources 创建新数据存储时列出。

../../../_images/imagemosaiccreate.png

栅格数据存储列表中的ImageMosaic

../../../_images/imagemosaicconfigure.png

配置ImageMosaic数据存储

期权

描述

Workspace

商店的工作区

Data Source Name

商店名称

Description

商店描述

Enabled

确定是否启用存储。如果不选中,则将禁用存储区中的所有层。

URL

商店的位置。可以是本地目录。

覆盖范围参数

创建存储是在geoserver中发布ImageMosaic的第一步。大多数配置是在发布结果覆盖率(层)时完成的。

覆盖编辑器为用户提供了设置一些控制参数以进一步控制马赛克创建过程的可能性。

../../../_images/coverageparameters.png

覆盖范围参数

参数如下:

参数

描述

精确的分辨率计算

布尔值。如果 true 计算了9个点的颗粒分辨率:要求区域的角和中间点,取较好的一个。这将为请求的边界框的子区域(顶部/底部/侧面)相对于其他边界框变形更多的情况提供更好的结果。如果 false ,使用基本仿射尺度变换计算分辨率。

AllowMultithreading

如果 true ,启用多线程磁贴加载。这样就可以对组成马赛克的颗粒进行并行加载。将此设置为 true 只有当您将“使用jai图像读取”设置为 false 同时强制立即将数据加载到内存中。

BackgroundValues

设置马赛克背景的值。根据马赛克的性质,最好为“nodata”区域设置一个值(通常为-9999)。该值在所有马赛克带上重复。

滤波器

设置默认马赛克过滤器。它应该是有效的 ECQL query 如果没有,则默认使用 cql_filter 指定了(而不是filter.include)。此过滤器将应用于马赛克索引,并且可能包括索引存储所暴露的任何属性。如果 cql_filter 在请求中指定,它将被重写。

备注

不要使用此过滤器更改时间或立面尺寸默认值。它将被添加为“时间”的“状态”和“标高”的“电流”。

FootprintBehavior

设置颗粒足迹之外的颗粒区域的行为。可以是 None (忽略足迹) Cut (从图像中删除封装外形之外的区域,不添加alpha通道),或 Transparent (使封装外形外的区域完全透明,如果还没有alpha通道,则添加一个alpha通道)。默认为 None .

InputTransparentColor

通过ImageMosaic插件在处理之前设置颗粒的透明颜色,以便控制它们的叠加方式。当geoserver组合颗粒以满足用户请求时,有些可以重叠其他;使用适当的颜色设置此参数可以避免颗粒之间的“nodata”区域重叠。请参见下面的示例:

../../../_images/input_color.png

未配置InputTransparentColor参数

../../../_images/input_color2.png

已配置InputTransparentColor参数

MaxAllowedTiles

设置一个请求可以同时加载的最大磁贴数。对于大型马赛克,应设置此参数,以避免同时加载过多颗粒而使服务器饱和。

MergeBehavior

镶嵌操作中处理重叠颗粒的方法。可以是 FLAT (重叠时,只有最上面的颗粒可见)或 STACK (对重叠颗粒应用带堆叠合并)。默认为 FLAT .

OutputTransparentColor

设置马赛克的透明颜色。该参数对RGB或调色板马赛克有意义,但对DEM或METOC数据没有意义。请参见下面的示例:

../../../_images/output_color.png

OutputTransParentColor参数配置为“无颜色”

../../../_images/output_color2.png

输出TransparentColor参数配置为“nodata”颜色

SORTING

控制颗粒传递到镶嵌操作的顺序。仅当MergeBehavior设置为时才有用 FLAT .应该是索引文件中属性的名称,后跟空格,然后是 A 用于升序,或 D 用于降序。例如: sortattr D .

SUGGESTED_TILE_SIZE

控制输入颗粒的瓦片大小以及输出马赛克的瓦片大小。它由两个用逗号分隔的正整数组成。默认为 512,512 .如果数据已正确瓦片,则可能需要将此参数设置为空,以避免在读取时不必要地重新格式化。

USE_JAI_IMAGEREAD

控制用于读取颗粒的低级机制。如果设置为 true ,geoserver将使用JAI ImageRead操作及其延迟加载机制。如果设置为 false ,geoserver将执行直接的imageio read调用,这将导致立即加载。

备注

延迟加载消耗的内存更少,因为它使用流式方法只将处理所需的数据加载到内存中,但由于它将颗粒文件保持长时间打开,因此可能会在重载下导致问题。

立即加载会消耗更多的内存,因为它一次将请求的马赛克加载到内存中,但通常执行得更快,并且可以防止延迟加载时出现“打开的文件太多”的错误情况。

继续 ImageMosaic tutorial 了解更多并查看示例。