原始数据下载流程¶
这些过程允许以原始形式下载矢量和栅格数据,而无需渲染。
下载估计器过程¶
这个 Download Estimator Process 检查要下载的文件的大小。此过程接受以下参数的输入:
layername
:要检查的层的名称
ROI
:用于裁剪数据的ROI对象
filter
:用于过滤输入数据的过滤器
targetCRS
:如果需要重新投影,则为最终层的CRS
此过程将返回一个布尔值,该布尔值将 true 如果下载的文件不会超过配置的限制。
下载过程¶
这个 Download Process 调用 Download Estimator Process ,检查文件大小,如果文件没有超过限制,则以压缩格式下载文件。要设置的参数包括
layerName
:要处理/下载的层的名称
filter
:用于过滤输入数据的矢量过滤器(可选)
outputFormat
:最终文件格式的MIME类型
targetCRS
:输出文件的CRS(可选)
RoiCRS
:感兴趣区域CRS(可选)
ROI
:用于裁剪数据的感兴趣区域对象(可选)
cropToROI
:允许裁剪到实际ROI或其信封的布尔参数(可选)
interpolation
:重新投影/缩放栅格数据时使用的内插函数。值为NEAREST(默认)、BILINEAR、BICUBIC2、BICUBIC(可选)
targetSizeX
:以输出像素为单位的X大小(可选,仅适用于栅格输入)
targetSizeY
:以输出像素为单位的大小Y(可选,仅适用于栅格输入)
selectedBands
:将用于生成最终结果的原始栅格的一组波段索引(可选,仅适用于栅格输入)
writeParameters
: a set of writing parameters (optional, applies for raster input only). See 正在写入参数 有关编写参数定义的更多详细信息,请参见下面的部分。
minimizeReprojections
: since 2.17, parameter to control CRS management when dealing with heterogeneous CRS's coverages, in order to minimize reprojections when granules in ROI match the TargetCRS. See 异质CRS图像栅格下载马赛克 有关此参数的更多详细信息,请参见下面的部分。
bestResolutionOnMatchingCRS
: since 2.17, parameter to control CRS and resolution management when dealing with heterogeneous CRS's coverages. See 异质CRS图像栅格下载马赛克 有关此参数的更多详细信息,请参见下面的部分。
targetVerticalCRS
: optional TargetVerticalCRS, to be used to transform elevation data from a VerticalCRS to another one. See 下载时的垂直数据重采样 有关此参数的更多详细信息,请参见以下部分
resolutionsDifferenceTolerance
:当未指定目标大小并重新投影颗粒时,该参数允许指定容差值以控制数据的本机分辨率的使用。如果
原始Coverage分辨率和重新投影Coverage分辨率之间的百分比差异低于指定的公差值,
本地解析对于所有被请求的粒是相同的,
本机和目标CR的测量单位是相同的,
重新预测的覆盖范围将被迫使用本地分辨率。例如,通过指定值5.0,如果原始数据和重新投影的数据之间的百分比差异低于5%,则假定另外两个条件也被遵守,则原始分辨率将被保留。默认值为0。
这个 targetCRS
和 RoiCRS
参数使用的是EPSG代码术语,因此,有效参数是文字,如 EPSG:4326
(如果我们指的是地理图形WGS84 CRS), EPSG:3857
(适用于WGS84 Web墨卡托CRS)等
ROI定义¶
A ROI
参数是一个几何对象,如果有三种不同的形式,也可以定义该几何对象:
AS
TEXT
,以各种几何文本格式/表示形式AS
REFERENCE
,它是对特定URL的HTTP GET/POST请求的文本结果作为一名
SUPPROCESS
结果:作为流程执行结果产生的格式必须是兼容的几何文本格式。
如上所述,在所有上述形式/情况下,ROI几何被定义为特定格式的文本。它们可以是:
text/xml; subtype=gml/3.1.1
:符合GML规范3.1.1
text/xml; subtype=gml/2.1.2
:符合GML规范2.1.2
application/wkt
:WKT几何图形表示
application/json
:JSON几何表示
application/gml-3.1.1
:符合GML规范3.1.1
application/gml-2.1.2
:符合GML规范2.1.2
例如,用作ROI的多边形具有以下WKT表示:
POLYGON (( 500116.08576537756 499994.25579707103, 500116.08576537756 500110.1012210889, 500286.2657688021 500110.1012210889, 500286.2657688021 499994.25579707103, 500116.08576537756 499994.25579707103 ))
将以下列形式表示:
在应用程序/wkt中:
POLYGON (( 500116.08576537756 499994.25579707103, 500116.08576537756 500110.1012210889, 500286.2657688021 500110.1012210889, 500286.2657688021 499994.25579707103, 500116.08576537756 499994.25579707103 ))
在应用程序/json中:
{"type":"Polygon","coordinates":[[[500116.0858,499994.2558],[500116.0858,500110.1012],[500286.2658,500110.1012],[500286.2658,499994.2558],[500116.0858,499994.2558]]]}
在text/xml:
500116.08576537756,499994.25579707103 500116.08576537756,500110.1012210889 500286.2657688021,500110.1012210889 500286.2657688021,499994.25579707103 500116.08576537756,499994.25579707103
在APPLICATION/XML中:以下XML
<?xml version="1.0" encoding="UTF-8"?><gml:Polygon xmlns:gml="http://www.opengis.net/gml" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink"> <gml:outerBoundaryIs> <gml:LinearRing> <gml:coordinates>500116.08576537756,499994.25579707103 500116.08576537756,500110.1012210889 500286.2657688021,500110.1012210889 500286.2657688021,499994.25579707103 500116.08576537756,499994.25579707103</gml:coordinates> </gml:LinearRing> </gml:outerBoundaryIs> </gml:Polygon>
WPS下载请求POST有效负载的一般结构由两部分组成:第一部分 (<wps:DataInputs>
)包含进程的输入参数,第二个 (<wps:ResponseForm>
)包含有关交付输出的详细信息。典型的伪净荷如下:
<?xml version="1.0" encoding="UTF-8"?><wps:Execute version="1.0.0" service="WPS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.opengis.net/wps/1.0.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" xmlns:wcs="http://www.opengis.net/wcs/1.1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd"> <ows:Identifier>gs:WPS_Process_Name_Here</ows:Identifier> <wps:DataInputs> <wps:Input> <ows:Identifier>First_Param_Name</ows:Identifier> <wps:Data> (First_Param_Data) </wps:Data> </wps:Input> ... ... </wps:DataInputs> <wps:ResponseForm> <wps:RawDataOutput mimeType="application/zip"> <ows:Identifier>result</ows:Identifier> </wps:RawDataOutput> </wps:ResponseForm> </wps:Execute>
流程的每个参数都在其自己的参数中定义 <wps:Input>
XML块。在简单类型数据的情况下,例如layerName、outputFormat、Target CRS等,输入参数XML块具有以下形式:
<wps:Input> <ows:Identifier>layerName</ows:Identifier> <wps:Data> <wps:LiteralData>nurc:Img_Sample</wps:LiteralData> </wps:Data> </wps:Input>
请注意 <wps:LiteralData>
包装参数值的标记。在几何参数的情况下,例如过滤器、ROI,参数的 <wps:Input>
数据块不同:
<wps:Input> <ows:Identifier>ROI</ows:Identifier> <wps:Data> <wps:ComplexData mimeType="application/wkt"><![CDATA[POLYGON (( 500116.08576537756 499994.25579707103, 500116.08576537756 500110.1012210889, 500286.2657688021 500110.1012210889, 500286.2657688021 499994.25579707103, 500116.08576537756 499994.25579707103 ))]]></wps:ComplexData> </wps:Data> </wps:Input>
请注意 <wps:ComplexData>
标签,即 mimeType="application/wkt"
参数,并且 ![CDATA[]
根据选定的MIME类型对实际几何数据(以文本表示形式)进行包装。
请注意,如果将ROI参数定义为WKT,则还需要指定RoiCRS输入参数。
在使用参考源定义ROI的情况下,输入块略有不同:
<wps:Input> <ows:Identifier>ROI</ows:Identifier> <wps:Reference mimeType="application/wkt" xlink:href="url_to_fetch_data" method="GET"/> </wps:Input>
请注意 <wps:Reference>
标签替换 <wps:ComplexData>
标签,以及额外的 xlink:href="url_to_fetch_data"
参数,该参数定义执行HTTP GET请求的URL。对于POST请求案例,技术方法切换为POST,并且 <wps:Body>
标签用于包装POST数据:
<wps:Reference mimeType="application/wkt" xlink:href="url_to_fetch_data" method="POST"> <wps:Body><![CDATA[request_body_data]]></wps:Body> </wps:Reference>
过滤器参数定义¶
A filter
参数是向量过滤器运算的定义:
AS
TEXT
,以各种文本格式/表示形式AS
REFERENCE
,它是对特定URL的HTTP GET/POST请求的文本结果作为一名
SUBPROCESS
结果:作为流程执行结果产生的格式必须是兼容的几何文本格式。
筛选器定义的兼容文本格式为:
text/xml; filter/1.0
text/xml; filter/1.1
text/xml; cql
有关过滤器格式/语言的更多详细信息,可以查看 支持的筛选语言 和 过滤器功能 。筛选器参数适用于矢量数据。如果输入数据是这种情况,则示例 <wps:Input>
与我们先前用作ROI定义示例的多边形相交的滤镜块为:
<wps:Input> <ows:Identifier>filter</ows:Identifier> <wps:Data> <wps:ComplexData mimeType="text/plain; subtype=cql"><![CDATA[<Intersects> <PropertyName>GEOMETRY</PropertyName> <gml:Polygon> <gml:outerBoundaryIs> <gml:LinearRing> <gml:coordinates>500116.08576537756,499994.25579707103 500116.08576537756,500110.1012210889 500286.2657688021,500110.1012210889 500286.2657688021,499994.25579707103 500116.08576537756,499994.25579707103</gml:coordinates> </gml:LinearRing> </gml:outerBoundaryIs> </gml:Polygon> </Intersects>]]></wps:ComplexData> </wps:Data> </wps:Input>
样本请求¶
同步执行¶
以下是处理栅格数据集的WPS请求示例。假设我们想要使用北美的样本图像( nurc:Img_Sample )层,以生成一个 80x80 像素可下载 tiff 在……里面 EPSG:4326
假设本地Geoserver实例(用于wps/wps下载支持的安装程序)正在运行,我们向url发出POST请求:
http://127.0.0.1:8080/geoserver/ows?service=wps
使用以下有效负载:
<?xml version="1.0" encoding="UTF-8"?><wps:Execute version="1.0.0" service="WPS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.opengis.net/wps/1.0.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" xmlns:wcs="http://www.opengis.net/wcs/1.1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd"> <ows:Identifier>gs:Download</ows:Identifier> <wps:DataInputs> <wps:Input> <ows:Identifier>layerName</ows:Identifier> <wps:Data> <wps:LiteralData>nurc:Img_Sample</wps:LiteralData> </wps:Data> </wps:Input> <wps:Input> <ows:Identifier>outputFormat</ows:Identifier> <wps:Data> <wps:LiteralData>image/tiff</wps:LiteralData> </wps:Data> </wps:Input> <wps:Input> <ows:Identifier>targetCRS</ows:Identifier> <wps:Data> <wps:LiteralData>EPSG:4326</wps:LiteralData> </wps:Data> </wps:Input> <wps:Input> <ows:Identifier>targetSizeX</ows:Identifier> <wps:Data> <wps:LiteralData>80</wps:LiteralData> </wps:Data> </wps:Input> <wps:Input> <ows:Identifier>targetSizeY</ows:Identifier> <wps:Data> <wps:LiteralData>80</wps:LiteralData> </wps:Data> </wps:Input> </wps:DataInputs> <wps:ResponseForm> <wps:RawDataOutput mimeType="application/zip"> <ows:Identifier>result</ows:Identifier> </wps:RawDataOutput> </wps:ResponseForm> </wps:Execute>
可以使用更多参数(来自上面的参数列表),例如,我们只能选择波段 0 and 2 从原始栅格:
<wps:Input> <ows:Identifier>bandIndices</ows:Identifier> <wps:Data> <wps:LiteralData>0</wps:LiteralData> </wps:Data> </wps:Input> <wps:Input> <ows:Identifier>bandIndices</ows:Identifier> <wps:Data> <wps:LiteralData>2</wps:LiteralData> </wps:Data> </wps:Input>
或者,使用 Region Of Interest 要裁剪数据集,请执行以下操作:
<wps:Input> <ows:Identifier>ROI</ows:Identifier> <wps:Data> <wps:ComplexData mimeType="application/wkt"><![CDATA["POLYGON (( 500116.08576537756 499994.25579707103, 500116.08576537756 500110.1012210889, 500286.2657688021 500110.1012210889, 500286.2657688021 499994.25579707103, 500116.08576537756 499994.25579707103 ))]]></wps:ComplexData> </wps:Data> </wps:Input> <wps:Input> <ows:Identifier>RoiCRS</ows:Identifier> <wps:Data> <wps:LiteralData>EPSG:32615</wps:LiteralData> </wps:Data> </wps:Input>
生成的结果是一个需要下载的压缩文件。
异步执行¶
该过程也可以异步执行。在这种情况下,第二部分 (wps:ResponseForm
)的下载负载略有变化,方法是使用 storeExecuteResponse 和 status 参数,设置为 true 对于 <wps:ResponseDocument>
:
<wps:ResponseForm> <wps:ResponseDocument storeExecuteResponse="true" status="true"> <wps:RawDataOutput mimeType="application/zip"> <ows:Identifier>result</ows:Identifier> </wps:RawDataOutput> </wps:ResponseDocument>> </wps:ResponseForm>
在异步执行的情况下,最初的数据下载请求返回一个XML指示,表示进程已成功启动:
<?xml version="1.0" encoding="UTF-8"?><wps:ExecuteResponse xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" service="WPS" serviceInstance="http://127.0.0.1:8080/geoserver/ows?" statusLocation="http://127.0.0.1:8080/geoserver/ows?service=WPS&version=1.0.0&request=GetExecutionStatus&executionId=dd0d61f5-7da3-41ed-bd3f-15311fa660ba" version="1.0.0"> <wps:Process wps:processVersion="1.0.0"> <ows:Identifier>gs:Download</ows:Identifier> <ows:Title>Enterprise Download Process</ows:Title> <ows:Abstract>Downloads Layer Stream and provides a ZIP.</ows:Abstract> </wps:Process> <wps:Status creationTime="2016-08-08T11:03:18.167Z"> <wps:ProcessAccepted>Process accepted.</wps:ProcessAccepted> </wps:Status> </wps:ExecuteResponse>
该响应包含一个 <wps:Status>
指示成功创建进程和进程开始时间的块。然而,这一回应中的重要部分是 executionId=dd0d61f5-7da3-41ed-bd3f-15311fa660ba 属性中的 <wps:ExecuteResponse>
标签。这个 dd0d61f5-7da3-41ed-bd3f-15311fa660ba
ID可以作为该进程的参考,以便发出新的GET请求和检查进程状态。这些请求的格式为:
http://127.0.0.1:8080/geoserver/ows?service=WPS&request=GetExecutionStatus&executionId=277e24eb-365d-42e1-8329-44b8076d4fc0
发出后(且进程已在服务器上完成),此GET请求返回结果,以Base64编码的Zip格式下载/处理:
<?xml version="1.0" encoding="UTF-8"?> <wps:ExecuteResponse xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" service="WPS" serviceInstance="http://127.0.0.1:8080/geoserver/ows?" statusLocation="http://127.0.0.1:8080/geoserver/ows?service=WPS&version=1.0.0&request=GetExecutionStatus&executionId=0c596a4d-7ddb-4a4e-bf35-4a64b47ee0d3" version="1.0.0"> <wps:Process wps:processVersion="1.0.0"> <ows:Identifier>gs:Download</ows:Identifier> <ows:Title>Enterprise Download Process</ows:Title> <ows:Abstract>Downloads Layer Stream and provides a ZIP.</ows:Abstract> </wps:Process> <wps:Status creationTime="2016-08-08T11:18:46.015Z"> <wps:ProcessSucceeded>Process succeeded.</wps:ProcessSucceeded> </wps:Status> <wps:ProcessOutputs> <wps:Output> <ows:Identifier>result</ows:Identifier> <ows:Title>Zipped output files to download</ows:Title> <wps:Data> <wps:ComplexData encoding="base64" mimeType="application/zip">UEsDBBQACAgIAFdyCEkAAAAAAAAAAAAAAAApAAAAMGEwYmJkYmQtMjdkNi00...(more zipped raster data following, ommited for space saving)...</wps:ComplexData> </wps:Data> </wps:Output> </wps:ProcessOutputs> </wps:ExecuteResponse>
异步执行(作为参考输出)¶
这个 <wps:ResponseForm>
可以修改前面的异步请求有效负载示例的链接,以获得指向要下载的文件的链接,而不是Base64编码的数据。
... <wps:ResponseForm> <wps:ResponseDocument storeExecuteResponse="true" status="true"> <wps:Output asReference="true" mimeType="application/zip"> <ows:Identifier>result</ows:Identifier> </wps:Output> </wps:ResponseDocument> </wps:ResponseForm>
注意事项 <wps:ResponseDocument>
包含一个 <wps:Output>
而不是一个 <wps:RawDataOutput>
正被前面的示例使用。此外,该属性 asReference 设置为 true 已添加到 <wps:Output>
。
这一次,当发出GET请求时(服务器上的处理已经完成),GET请求返回结果,并将其作为链接的一部分进行下载 <wps:Output><wps:Reference>
。
<?xml version="1.0" encoding="UTF-8"?> <wps:ExecuteResponse xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" service="WPS" serviceInstance="http://127.0.0.1:8080/geoserver/ows?" statusLocation="http://127.0.0.1:8080/geoserver/ows?service=WPS&version=1.0.0&request=GetExecutionStatus&executionId=c1074100-446a-4963-94ad-cbbf8b8a7fd1" version="1.0.0"> <wps:Process wps:processVersion="1.0.0"> <ows:Identifier>gs:Download</ows:Identifier> <ows:Title>Enterprise Download Process</ows:Title> <ows:Abstract>Downloads Layer Stream and provides a ZIP.</ows:Abstract> </wps:Process> <wps:Status creationTime="2016-08-08T11:38:34.024Z"> <wps:ProcessSucceeded>Process succeeded.</wps:ProcessSucceeded> </wps:Status> <wps:ProcessOutputs> <wps:Output> <ows:Identifier>result</ows:Identifier> <ows:Title>Zipped output files to download</ows:Title> <wps:Reference href="http://127.0.0.1:8080/geoserver/ows?service=WPS&version=1.0.0&request=GetExecutionResult&executionId=c1074100-446a-4963-94ad-cbbf8b8a7fd1&outputId=result.zip&mimetype=application%2Fzip" mimeType="application/zip" /> </wps:Output> </wps:ProcessOutputs> </wps:ExecuteResponse>
输出格式和响应MIME类型¶
默认情况下,下载矢量数据会生成一个Shapefile,该文件与其SLD文件一起压缩为Zip文件。也可以使用下载GeoPackage文件 application/geopackage+sqlite3
属性的值作为 mimeType
参数。
同样,对于栅格数据,默认情况下将压缩下载的栅格以及与该层关联的SLD样式。在某些情况下,这可能是不必要的,特别是如果输出的TIFF已经具有某种类型的内部压缩,或者如果我们只是想要取回没有辅助SLD的TIFF输出文件。让我们考虑下载一个RGB TIFF:默认的raster.sld样式不会向输出中添加任何有用的东西。在这种情况下,可以指定 image/tiff
在响应的输出中 mimeType
:输出的TIFF将按原样提供,不需要额外的压缩和文件管理步骤。
... <wps:ResponseForm> <wps:ResponseDocument storeExecuteResponse="true" status="true"> <wps:Output asReference="true" mimeType="image/tiff"> <ows:Identifier>result</ows:Identifier> </wps:Output> </wps:ResponseDocument> </wps:ResponseForm>
也可以使用以GeoPackage格式下载栅格数据 application/geopackage+sqlite3
属性的值作为 mimeType
参数。
写入缓冲选项¶
默认情况下,使用通过默认16KB数据缓冲区写入的文件流对栅格像素进行编码。根据网络和磁盘设置的不同,您可能希望更改缓冲区的大小以提高性能。可以通过将此属性添加到 JAVA_OPTS
: -Dorg.geoserver.wps.download.raster.buffer.size=sizeinbytes
哪里 sizeinbytes
是要设置的实际值,即设置1MB缓冲区的值为1048576。
此外,在将数据资源从WPS机器内复制回最终文件输出位置时,将使用默认的16KB数据缓冲区。还可以通过将此属性添加到 JAVA_OPTS
: -Dorg.geoserver.wps.copy.buffer.size=sizeinbytes
哪里 sizeinbytes
是要设置的实际值,即设置1MB缓冲区的值为1048576。
正在写入参数¶
这个 writeParameters
流程执行的输入元素允许指定要由 outputFormat
产生输出文件时的编码器。写入参数以多个形式列出 <dwn:Parameter key="writingParameterName">value</dwn:Parameter>
在一个 <dwn:Parameters>
父元素。请参阅以下包含TIFF输出格式有效示例的完整语法的XML:
<wps:Input>
<ows:Identifier>writeParameters</ows:Identifier>
<wps:Data>
<wps:ComplexData xmlns:dwn="http://geoserver.org/wps/download">
<dwn:Parameters>
<dwn:Parameter key="tilewidth">128</dwn:Parameter>
<dwn:Parameter key="tileheight">128</dwn:Parameter>
<dwn:Parameter key="compression">JPEG</dwn:Parameter>
<dwn:Parameter key="quality">0.75</dwn:Parameter>
</dwn:Parameters>
</wps:ComplexData>
</wps:Data>
</wps:Input>
支持的GeoTIFF/TIFF写入参数¶
支持的写入参数包括:
tilewidth
:内部平铺的宽度,以像素为单位
tileheight
:内部平铺的高度,以像素为单位
compression
:用于存储内部瓷砖的压缩类型。支持的值包括:
CCITT RLE
(无损)(霍夫曼)
LZW
(无损)
JPEG
(Lossy)
ZLib
(无损)
PackBits
(无损)
Deflate
(无损)
quality
:压缩质量。值在范围内 [0 : 1]
为
JPEG
有损压缩,0表示最差质量/较高压缩,1表示最好质量/较低压缩。(默认为1)。为
Deflate
无损压缩,输入值在范围内 [0 : 1] 线性映射到该范围内的输出放气水平 [1 : 9] :(deflate level = 1 + 8 * (quality))
,其中级别1表示最佳速度,级别9表示最佳压缩。(默认级别为9)
writenodata
:支持的值为True/False之一。请注意,默认情况下, nodata TAG 一旦在要写入的GridCoverage2D中找到nodata,就会作为输出GeoTIFF文件的一部分生成。因此,如果不指定此参数,将导致写入nodata以保留默认行为。将其设置为False将避免写入该标记。
直接下载¶
栅格过程尽最大努力识别实际上正在选择单个、完整的源文件的下载,并在这种情况下执行该文件的直接副本。
条件:
通过请求选择单个完整的源文件(例如,完整的输入GeoTIFF,或从图像马赛克中选择单个完整的粒)。
输出格式与输入匹配(例如,两者都是GeoTIFF)
写入参数(如果存在)与输入文件的结构(相同的压缩、相同的平铺结构)匹配
为了更好地支持直接下载,可以指定WRITE参数 compression
AS auto
:如果可能,它不会干扰直接下载的选择,并将回落到 deflate
以防无法直接下载。
异质CRS图像栅格下载马赛克¶
将不同坐标系(即不同UTM区域内的多个DEM文件)中的颗粒组成的图像镶嵌定义为具有异质CRS的图像镶嵌。ImageMosaic层将公共CRS公开为原生CRS(即4326)。
默认情况下,具有不同CRS的镶嵌颗粒将导致从颗粒的原始CRS到该公共CRS的重投影。
从2.17开始,定义了一个新参数: minimizeReprojections
它将用于指定了已定义ROI和目标CRS的栅格下载。当设置为True时,ROI中具有与TargetCRS匹配的nativeCRS的任何区组都不会受到重新投影的影响。
从2.17开始,定义了一个新参数: bestResolutionOnMatchingCRS
它将在以下情况下使用 minimizeReprojections
在具有定义的ROI和目标CRS的栅格下载时,也启用,而不指定目标大小。当设置为TRUE时,下载的目的是尽可能地保留与目标CRS匹配的底层粒的本机属性。
返回到该示例,将UTM32N指定为目标CRS的RasterDownload和覆盖包含UTM32N颗粒的区域的ROI将导致在不应用任何中间重投影的情况下获得那些UTM32N颗粒,还提供可用于该CRS的最佳原始分辨率。因此,如果ImageMosaic是10公里分辨率的UTM32N DEM和100米分辨率的UTM33N的混合,则底层读取请求将使用10公里分辨率,这是Target CRS中可用的最佳分辨率。当没有颗粒与目标CRS匹配时,从所有颗粒中获取最佳分辨率。
确保将ImageMosaic的索引配置为同时包含CRS和RESOLUTION属性,以便尽可能多地保留粒的原生属性。
一个典型的 indexer.properties
这样的图像马赛克将如下所示::
GranuleAcceptors=org.geotools.gce.imagemosaic.acceptors.HeterogeneousCRSAcceptorFactory
GranuleHandler=org.geotools.gce.imagemosaic.granulehandler.ReprojectingGranuleHandlerFactory
HeterogeneousCRS=true
MosaicCRS=EPSG\:XXXX
Schema=*the_geom:Polygon,location:String,crs:String,resX:double,resY:double
ResolutionXAttribute=resX
ResolutionYAttribute=resY
CrsAttribute=crs
PropertyCollectors=CRSExtractorSPI(crs),ResolutionXExtractorSPI(resX),ResolutionYExtractorSPI(resY)
下载时的垂直数据重采样¶
包含高程数据(即DTM/DEM/DSM)的Coverage具有表示特定垂直CRS的高程/高度的像素值。
关联的垂直CRS可以在页面最底部的层配置中指定,其中会显示一个新的可选垂直坐标参考系部分。
以下示例显示了配置为将EPSG:5778指定为采用的垂直CRS的DSM层。
只有在以下情况下才会显示此部分:
WPS-Download模块已部署在Geoserver中
底层数据为单波段,数据类型至少为16位。(即:无字节数据类型、无RGB图像...)
WPS下载-垂直重采样¶
在栅格下载过程中,可以将数据重采样到其他垂直CRS,方法是指定 targetVerticalCRS WPS下载请求中的参数。例如:
<wps:Input>
<ows:Identifier>targetVerticalCRS</ows:Identifier>
<wps:Data>
<wps:LiteralData>EPSG:9274</wps:LiteralData>
</wps:Data>
</wps:Input>
备注
如果指定了Target VerticalCRS,但没有通过上述设置将源VerticalCRS分配给请求的层,则会引发异常。
自定义垂直CRS定义和格网转换¶
自定义垂直CRS定义可通过属性文件在Geoserver中指定为任何其他坐标参考系,如中所述 Custom CRS Definitions 佩奇。
这是将上述VerticalCRS作为WKT添加到 user_projections/epsg.properties
文件::
9274=VERT_CS["EVRF2000 Austria height", \
VERT_DATUM["European Vertical Reference Frame 2000 Austria", \
2000, AUTHORITY["EPSG","1261"]], \
AXIS["gravity-related height (H)",up], \
UNIT["m",1.0], \
AUTHORITY["EPSG","9274"]]
垂直CRS之间的变换可以通过垂直栅格偏移文件来支持(类似于NTV2栅格偏移可以用于支持2D栅格变换)。
自定义坐标运算在中定义 user_projections/epsg_operations.properties
数据目录中的文件(如果它不存在,则创建它)。
中的每行 epsg_operations.properties
将描述由一个 source CRS 一种 target CRS ,以及带有其参数值的数学变换。使用以下语法:
<source crs code>,<target crs code>=<WKT math transform>
数学变换是一个 Vertical Offset by Grid Interpolation
需要2个参数:
A
Vertical offset file
引用包含网格每个像素的垂直偏移量的偏移文件。引用的文件需要在user_projections
目录,一个
Interpolation CRS code
包含栅格文件的2D坐标参照系统的EPSG代码。
例子¶
用于上述垂直CRSS之间转换的自定义垂直栅格移动文件::
5778,9274=PARAM_MT["Vertical Offset by Grid Interpolation", \
PARAMETER["Vertical offset file", "GV_Hoehengrid_V1.tif"], \
PARAMETER["Interpolation CRS code", 4312]]
备注
目前仅支持GeoTIFF垂直偏移文件。垂直重采样将使用平铺加载访问该GeoTIFF中的像素。因此,请确保格网文件未被条带化(gdalinfo呼叫报告 Band 1 Block = NNN x 1
表示条带文件。在这种情况下,在将其用作垂直偏移文件之前,请考虑对其重新定位以获得更好的访问权限)