usage.rst 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588
  1. .. _wmts_multidminensional_usage:
  2. WMTS Multidimensional usage
  3. ===========================
  4. All described operations including is optional parameters and other extensions were implemented, only the REST interfaces for the domain discovery operations were not implemented.
  5. The ``GetFeature`` operation only supports the profile GML 3.1 as feature info format ("application/gml+xml; version=3.1") and the ``GetHistogram`` operation only supports ``text/xml`` as output format.
  6. This module support well defined dimensions like elevation and time, but also custom dimensions.
  7. GetCapabilities
  8. ---------------
  9. The default behavior of WMTS is to list in the capabilities document all the values available in a certain dimension, something like this:
  10. .. code-block:: xml
  11. <Dimension>
  12. <ows:Identifier>elevation</ows:Identifier>
  13. <Default>0.0</Default>
  14. <Value>0.0</Value>
  15. <Value>200.0</Value>
  16. <Value>400.0</Value>
  17. <Value>600.0</Value>
  18. <Value>800.0</Value>
  19. <Value>1000.0</Value>
  20. <Value>1200.0</Value>
  21. <Value>1400.0</Value>
  22. <Value>1600.0</Value>
  23. <Value>1800.0</Value>
  24. <Value>2000.0</Value>
  25. <Value>3000.0</Value>
  26. <Value>4000.0</Value>
  27. <Value>5000.0</Value>
  28. <Value>6000.0</Value>
  29. <Value>7000.0</Value>
  30. <Value>8000.0</Value>
  31. <Value>9000.0</Value>
  32. </Dimension>
  33. This module will instead take into account the presentation mode selected by the user:
  34. .. figure:: images/layer_dimensions.png
  35. :align: center
  36. *Configuration of a layer dimensions.*
  37. With the presentation mode select to ``Continuous interval`` or ``Resolution and interval`` we will instead see something like this:
  38. .. code-block:: xml
  39. <Dimension>
  40. <ows:Identifier>elevation</ows:Identifier>
  41. <Default>0.0</Default>
  42. <Value>0.0--9000.0</Value>
  43. </Dimension>
  44. Descriptions for the new introduced operations and associated formats will also be added to the capabilities document.
  45. Operations
  46. ----------
  47. This module adds three new operations to the WMTS service that are described in detail in this `document <http://demo.geo-solutions.it/share/wmts-multidim/wmts_multidim_geosolutions.html>`_:
  48. .. list-table::
  49. :widths: 20 80
  50. :header-rows: 1
  51. * - Operation
  52. - Description
  53. * - DescribeDomains
  54. - Describes all the dimension domains in a compact document, along with the restricted bounding box of the two dimensional space intercepted by the request.
  55. * - GetDomainValues
  56. - Allows to page through domain values (supplements DescribeDomains in case the domain has too many values, and the client still wants to get all of them, one page at a time)
  57. * - GetHistogram
  58. - Given a scattered domain description and an interval, this operation divides the interval in regular buckets, and provides an item count for each bucket.
  59. * - GetFeature
  60. - Enumerate the actual dimension possible values combinations, returns a list of features along with dimension values using the same formats as the feature info operation ("application/gml+xml; version=3.1").
  61. Note that currently there is no restful implementations of this operations.
  62. DescribeDomains
  63. ^^^^^^^^^^^^^^^
  64. This operation is useful to understand which domains are available in our layer dimensions and how they relate to each other. The parameters available for this operation are:
  65. .. list-table::
  66. :widths: 20 10 70
  67. :header-rows: 1
  68. * - Name
  69. - Mandatory
  70. - Description
  71. * - Service=WMTS
  72. - Yes
  73. - Service type identifier
  74. * - Request=DescribeDomains
  75. - Yes
  76. - Operation name
  77. * - Version=1.0.0
  78. - Yes
  79. - Standard and schema version for this operation
  80. * - Layer
  81. - Yes
  82. - Layer identifier
  83. * - TileMatrixSet
  84. - Yes
  85. - Tile matrix set identifier
  86. * - bbox=minx,miny,maxx,maxy
  87. - No
  88. - Bounding box corners (lower left, upper right) in CRS units
  89. * - DimensionIdentifier
  90. - No
  91. - At most one per dimension, a range described as min/max, restricting the domain of this dimension
  92. * - Domains
  93. - No
  94. - A comma separated list of domain names to be returned, in case only a subset is required. The space domain is identified by "bbox".
  95. * - ExpandLimit
  96. - No
  97. - A numerical value, greater or equal to zero. If the number of unique domain values is below ``ExpandLimit`` then the domain with be represented in full, as
  98. a comma separated list of values, otherwise in compact form, as ``start--end``. The server assumes a built-in limit of 200 in case not specified,
  99. and allows client to specify a value up to 10000, values can be tuned via the user interface, in the WMTS panel (server defaults) and on a layer
  100. by layer basis.
  101. .. figure:: images/expandLimitConfig.png
  102. :align: center
  103. *Configuration domain expansion limits.*
  104. The ``bbox`` parameter allows the client to restrict the ``DescribeDomains`` operation to a certain spatial area, by default the layer extent will be used.
  105. The ``DimensionIdentifier`` parameter can be used to restrict the domain values of a certain dimension, this is useful to answer questions like which elevations values are available in a specific day.
  106. A simple ``DescribeDomains`` request will look like this:
  107. .. code-block:: guess
  108. http://localhost:8080/geoserver/gwc/service/wmts?REQUEST=DescribeDomains&Version=1.0.0&Layer=some_layer&TileMatrixSet=EPSG:4326
  109. and the result will be similar to this:
  110. .. code-block:: xml
  111. <Domains xmlns="http://demo.geo-solutions.it/share/wmts-multidim/wmts_multi_dimensional.xsd" xmlns:ows="http://www.opengis.net/ows/1.1">
  112. <SpaceDomain>
  113. <BoundingBox CRS="EPSG:4326"
  114. maxx="179.875" maxy="89.9375" minx="-180.125" miny="-90.125"/>
  115. </SpaceDomain>
  116. <DimensionDomain>
  117. <ows:Identifier>elevation</ows:Identifier>
  118. <Domain>0.0,200.0,400.0,600.0,800.0,1000.0</Domain>
  119. <Size>6</Size>
  120. </DimensionDomain>
  121. <DimensionDomain>
  122. <ows:Identifier>REFERENCE_TIME</ows:Identifier>
  123. <Domain>2016-02-23T00:00:00.000Z,2016-02-24T00:00:00.000Z</Domain>
  124. <Size>2</Size>
  125. </DimensionDomain>
  126. <DimensionDomain>
  127. <ows:Identifier>time</ows:Identifier>
  128. <Domain>2016-02-23T03:00:00.000Z,2016-02-23T06:00:00.000Z</Domain>
  129. <Size>2</Size>
  130. </DimensionDomain>
  131. </Domains>
  132. Note that if an end attribute has been defined in the layer dimension configuration page, the result will show ranges in place of single values. The result in this case will look like the following:
  133. .. code-block:: xml
  134. <Domains xmlns="http://demo.geo-solutions.it/share/wmts-multidim/wmts_multi_dimensional.xsd" xmlns:ows="http://www.opengis.net/ows/1.1">
  135. <SpaceDomain>
  136. <BoundingBox CRS="EPSG:4326"
  137. maxx="179.875" maxy="89.9375" minx="-180.125" miny="-90.125"/>
  138. </SpaceDomain>
  139. <DimensionDomain>
  140. <ows:Identifier>elevation</ows:Identifier>
  141. <Domain>0.0/50.0,200.0/300.0,400.0/500.0</Domain>
  142. <Size>6</Size>
  143. </DimensionDomain>
  144. <DimensionDomain>
  145. <ows:Identifier>REFERENCE_TIME</ows:Identifier>
  146. <Domain>2016-02-23T00:00:00.000Z/2016-02-23T23:00:00.000Z,2016-02-24T00:00:00.000Z/2016-02-24T12:00:00.000Z</Domain>
  147. <Size>2</Size>
  148. </DimensionDomain>
  149. <DimensionDomain>
  150. <ows:Identifier>time</ows:Identifier>
  151. <Domain>2016-02-23T03:00:00.000Z/2016-02-23T06:00:00.000Z,2016-02-23T06:00:00.000Z/2016-02-23T12:00:00.000Z</Domain>
  152. <Size>2</Size>
  153. </DimensionDomain>
  154. </Domains>
  155. From the information above we can see that we have three dimensions ``time``, ``elevation`` and ``REFERENCE_TIME`` and the respective domains values.
  156. Now let's see how elevations relate to time dimension by asking which elevations under 500.0 meters are available at time 2016-02-23T03:00:00.000Z:
  157. .. code-block:: guess
  158. http://localhost:8080/geoserver/gwc/service/wmts?REQUEST=DescribeDomains&Version=1.0.0&Layer=some_layer&TileMatrixSet=EPSG:4326&elevation=0/500&time=2016-02-23T03:00:00.000Z
  159. the result will be similar to this:
  160. .. code-block:: xml
  161. <Domains xmlns="http://demo.geo-solutions.it/share/wmts-multidim/wmts_multi_dimensional.xsd" xmlns:ows="http://www.opengis.net/ows/1.1">
  162. <SpaceDomain>
  163. <BoundingBox CRS="EPSG:4326"
  164. maxx="179.875" maxy="89.9375" minx="-180.125" miny="-90.125"/>
  165. </SpaceDomain>
  166. <DimensionDomain>
  167. <ows:Identifier>elevation</ows:Identifier>
  168. <Domain>200.0</Domain>
  169. <Size>1</Size>
  170. </DimensionDomain>
  171. <DimensionDomain>
  172. <ows:Identifier>REFERENCE_TIME</ows:Identifier>
  173. <Domain>2016-02-23T00:00:00.000Z</Domain>
  174. <Size>1</Size>
  175. </DimensionDomain>
  176. <DimensionDomain>
  177. <ows:Identifier>time</ows:Identifier>
  178. <Domain>2016-02-23T03:00:00.000Z</Domain>
  179. <Size>1</Size>
  180. </DimensionDomain>
  181. </Domains>
  182. So for time 2016-02-23T03:00:00.000Z there is only values measured at 200.0 meters.
  183. In case only the space domain is of interest, the following request will do:
  184. .. code-block:: guess
  185. http://localhost:8080/geoserver/gwc/service/wmts?REQUEST=DescribeDomains&Version=1.0.0&Layer=some_layer&TileMatrixSet=EPSG:4326&elevation=0/500&time=2016-02-23T03:00:00.000Z&domains=bbox
  186. and the result will be similar to this:
  187. .. code-block:: xml
  188. <Domains xmlns="http://demo.geo-solutions.it/share/wmts-multidim/wmts_multi_dimensional.xsd" xmlns:ows="http://www.opengis.net/ows/1.1">
  189. <SpaceDomain>
  190. <BoundingBox CRS="EPSG:4326"
  191. maxx="179.875" maxy="89.9375" minx="-180.125" miny="-90.125"/>
  192. </SpaceDomain>
  193. </Domains>
  194. GetDomainValues
  195. ^^^^^^^^^^^^^^^
  196. This operation is useful to page through the values of a given domain, in case the "multidimensional" area of interest
  197. is too large for DescribeDomain to return them in a single shot.
  198. .. list-table::
  199. :widths: 20 10 70
  200. :header-rows: 1
  201. * - Name
  202. - Mandatory
  203. - Description
  204. * - Service=WMTS
  205. - Yes
  206. - Service type identifier
  207. * - Request=GetDomainValues
  208. - Yes
  209. - Operation name
  210. * - Version=1.0.0
  211. - Yes
  212. - Standard and schema version for this operation
  213. * - Layer
  214. - Yes
  215. - Layer identifier
  216. * - bbox=minx,miny,maxx,maxy
  217. - No
  218. - Bounding box corners (lower left, upper right) in CRS units
  219. * - DimensionIdentifier
  220. - No
  221. - At most one per dimension, a range described as min/max, restricting the domain of this dimension
  222. * - Domain
  223. - Yes
  224. - Name of the domain whose values will be returned (one cannot use "bbox", only single value dimensions can be enumerated by GetDomainValues, e.g., time, elevation).
  225. * - FromValue
  226. - No
  227. - Sets the beginning of domain enumeration, for paging purposes. It's not included in the result
  228. * - FromEnd
  229. - No
  230. - If equals to true specifies that the beginning of domain enumeration, set by the FromValue, should be applied to the end attribute. When set to true results will be sorted by end attribute.
  231. * - Sort
  232. - No
  233. - Can be "asc" or "desc", determines if the enumeration is from low to high, or from high to low
  234. * - Limit
  235. - No
  236. - Maximum number of values returned by this call. The server assumes a built-in limit of 1000 in case not specified,
  237. and allows client to specify a value up to 10000.
  238. For example, let's say a "elevation" domain has values 1,2,3 and 5, and that we are paging through
  239. it by pages of 2 elements. The client will start without providing a "fromValue", and will then continue
  240. using the last value of the previous page as a reference:
  241. .. code-block:: guess
  242. http://localhost:8080/geoserver/gwc/service/wmts?request=GetDomainValues&Version=1.0.0&Layer=sampleLayer&domain=elevation&limit=2
  243. .. code-block:: xml
  244. <DomainValues xmlns="http://demo.geo-solutions.it/share/wmts-multidim/wmts_multi_dimensional.xsd" xmlns:ows="http://www.opengis.net/ows/1.1">
  245. <ows:Identifier>elevation</ows:Identifier>
  246. <Limit>2</Limit>
  247. <Sort>asc</Sort>
  248. <Domain>1.0,2.0</Domain>
  249. <Size>2</Size>
  250. </DomainValues>
  251. .. code-block:: guess
  252. http://localhost:8080/geoserver/gwc/service/wmts?request=GetDomainValues&Version=1.0.0&Layer=sampleLayer&domain=elevation&limit=2&fromValue=2
  253. .. code-block:: xml
  254. <DomainValues xmlns="http://demo.geo-solutions.it/share/wmts-multidim/wmts_multi_dimensional.xsd" xmlns:ows="http://www.opengis.net/ows/1.1">
  255. <ows:Identifier>elevation</ows:Identifier>
  256. <Limit>2</Limit>
  257. <Sort>asc</Sort>
  258. <FromValue>2.0</FromValue>
  259. <Domain>3.0,5.0</Domain>
  260. <Size>2</Size>
  261. </DomainValues>
  262. .. code-block:: guess
  263. http://localhost:8080/geoserver/gwc/service/wmts?request=GetDomainValues&Version=1.0.0&Layer=sampleLayer&domain=elevation&limit=2&fromValue=5
  264. .. code-block:: xml
  265. <DomainValues xmlns="http://demo.geo-solutions.it/share/wmts-multidim/wmts_multi_dimensional.xsd" xmlns:ows="http://www.opengis.net/ows/1.1">
  266. <ows:Identifier>elevation</ows:Identifier>
  267. <Limit>2</Limit>
  268. <Sort>asc</Sort>
  269. <FromValue>5.0</FromValue>
  270. <Domain></Domain>
  271. <Size>0</Size>
  272. </DomainValues>
  273. For elevations it might not be uncommon to iterate backwards, from the top-most elevation down to the lowest value. The interaction
  274. between client and server might then look as follows:
  275. .. code-block:: guess
  276. http://localhost:8080/geoserver/gwc/service/wmts?request=GetDomainValues&Version=1.0.0&Layer=sampleLayer&domain=elevation&limit=2&sort=desc
  277. .. code-block:: xml
  278. <DomainValues xmlns="http://demo.geo-solutions.it/share/wmts-multidim/wmts_multi_dimensional.xsd" xmlns:ows="http://www.opengis.net/ows/1.1">
  279. <ows:Identifier>elevation</ows:Identifier>
  280. <Limit>2</Limit>
  281. <Sort>asc</Sort>
  282. <Domain>5.0,3.0</Domain>
  283. <Size>2</Size>
  284. </DomainValues>
  285. .. code-block:: guess
  286. http://localhost:8080/geoserver/gwc/service/wmts?request=GetDomainValues&Version=1.0.0&Layer=sampleLayer&domain=elevation&limit=2&fromValue=3&sort=desc
  287. .. code-block:: xml
  288. <DomainValues xmlns="http://demo.geo-solutions.it/share/wmts-multidim/wmts_multi_dimensional.xsd" xmlns:ows="http://www.opengis.net/ows/1.1">
  289. <ows:Identifier>elevation</ows:Identifier>
  290. <Limit>2</Limit>
  291. <Sort>asc</Sort>
  292. <FromValue>3.0</FromValue>
  293. <Domain>2.0,1.0</Domain>
  294. <Size>2</Size>
  295. </DomainValues>
  296. .. code-block:: guess
  297. http://localhost:8080/geoserver/gwc/service/wmts?request=GetDomainValues&Version=1.0.0&Layer=sampleLayer&domain=elevation&limit=2&fromValue=1&sort=desc
  298. .. code-block:: xml
  299. <DomainValues xmlns="http://demo.geo-solutions.it/share/wmts-multidim/wmts_multi_dimensional.xsd" xmlns:ows="http://www.opengis.net/ows/1.1">
  300. <ows:Identifier>elevation</ows:Identifier>
  301. <Limit>2</Limit>
  302. <Sort>asc</Sort>
  303. <FromValue>1.0</FromValue>
  304. <Domain></Domain>
  305. <Size>0</Size>
  306. </DomainValues>
  307. Assume now that along with the values 1,2,3,5 we have end attribute values respectively equal to 5,3,4,6.
  308. The following request:
  309. .. code-block:: guess
  310. http://localhost:8080/geoserver/gwc/service/wmts?request=GetDomainValues&Version=1.0.0&Layer=sampleLayer&domain=elevation&limit=2&fromValue=3.5&fromEnd=true
  311. will return
  312. .. code-block:: xml
  313. <DomainValues xmlns="http://demo.geo-solutions.it/share/wmts-multidim/wmts_multi_dimensional.xsd" xmlns:ows="http://www.opengis.net/ows/1.1">
  314. <ows:Identifier>elevation</ows:Identifier>
  315. <Limit>2</Limit>
  316. <Sort>asc</Sort>
  317. <Domain>3.0/4.0,1.0/5.0,5.0/6.0</Domain>
  318. <Size>2</Size>
  319. </DomainValues>
  320. The paging approach might seem odd for those used to using "limit" and "offset". The main reason it's done
  321. this way it's performance, paging through unique values via limit and offset means that the data source
  322. has to compute and collect the unique values that are not needed (the ones in previous pages) in order to
  323. find the ones in the current page. With large domains (typical of time series) this quickly becomes too
  324. slow for interactive usage, as one moves forward in the domain.
  325. By giving a starting point, the unneeded data points can be skipped via index and the distinct value
  326. computation can be performed only on the current page data, stopping it as soon as the desired number
  327. of results has been computed. With an index on the dimension being queries, this results in nearly
  328. constant response times, regardless of the page being requested.
  329. GetHistogram
  330. ^^^^^^^^^^^^
  331. This operation can be used to provide information about the data distribution between the minimum and maximum values of a certain dimension.
  332. The parameters available for this operation are:
  333. .. list-table::
  334. :widths: 20 10 70
  335. :header-rows: 1
  336. * - Name
  337. - Mandatory
  338. - Description
  339. * - Service=WMTS
  340. - Yes
  341. - Service type identifier
  342. * - Request=GetHistogram
  343. - Yes
  344. - Operation name
  345. * - Version=1.0.0
  346. - Yes
  347. - Standard and schema version for this operation
  348. * - Layer
  349. - Yes
  350. - Layer identifier
  351. * - TileMatrixSet
  352. - Yes
  353. - Tile matrix set identifier
  354. * - BBOX=minx,miny,maxx,maxy
  355. - No
  356. - Bounding box corners (lower left, upper right) in CRS units
  357. * - DimensionIdentifier
  358. - No
  359. - At most one per dimension, a range described as min/max, restricting the domain of this dimension
  360. * - Histogram
  361. - Yes
  362. - Name of the dimension for which the histogram will be computed
  363. * - Resolution
  364. - No
  365. - Suggested size of the histogram bucket. Cannot be provided for enumerated dimensions, will use the period syntax for time (e.g. PT1H), a number for numeric dimensions, or auto to leave the decision to the server
  366. * - Format
  367. - No
  368. - The desired output format, default is text/html.
  369. The parameters common to the ``DescribeDomains`` operation work as already described above. Currently only the ``text/xml`` output format is supported.
  370. The following example request the histogram for time dimension with a resolution of 8 hours restricting elevations between 500.0 and 1000.0 meters:
  371. .. code-block:: guess
  372. http://localhost:8080/geoserver/gwc/service/wmts?REQUEST=GetHistogram&Version=1.0.0&Layer=some_layer&TileMatrixSet=EPSG:4326&histogram=time&resolution=PT8H&elevation=500.0/1000.0
  373. and the result will be similar to this:
  374. .. code-block:: xml
  375. <Histogram xmlns="http://demo.geo-solutions.it/share/wmts-multidim/wmts_multi_dimensional.xsd" xmlns:ows="http://www.opengis.net/ows/1.1">
  376. <ows:Identifier>time</ows:Identifier>
  377. <Domain>2016-02-23T00:00:00.000Z/2016-02-25T00:00:00.000Z/PT8H</Domain>
  378. <Values>240,0,240,0,0,240</Values>
  379. </Histogram>
  380. Looking at the result we can conclude that measurements between 500.0 and 1000.0 meters are typically done during the night.
  381. The bucket matching is setup so that each one contains its first value, but not its last value (which is contained in the next bucket instead).
  382. This is important to understand the results. Say we have a dataset with regular elevations, from 0 to 100 with a step of 10, and the
  383. request calls for elevations between 0 and 20. Then the results will look something like follows:
  384. .. code-block:: xml
  385. <Histogram xmlns="http://demo.geo-solutions.it/share/wmts-multidim/wmts_multi_dimensional.xsd" xmlns:ows="http://www.opengis.net/ows/1.1">
  386. <ows:Identifier>elevation</ows:Identifier>
  387. <Domain>0/30/10</Domain>
  388. <Values>5,3,8</Values>
  389. </Histogram>
  390. That is, there values catch the intervals [0,10[, [10, 20[, and [20, 30[ (to have a bucket for the images/features
  391. having elevation exactly matching 20). This will happen only if an extreme value if found, the same request
  392. filtering on elevations between 0 and 15 will return this instead:
  393. .. code-block:: xml
  394. <Histogram xmlns="http://demo.geo-solutions.it/share/wmts-multidim/wmts_multi_dimensional.xsd" xmlns:ows="http://www.opengis.net/ows/1.1">
  395. <ows:Identifier>elevation</ows:Identifier>
  396. <Domain>0/20/10</Domain>
  397. <Values>5,3</Values>
  398. </Histogram>
  399. Note that if an end attribute is specified the bucket matching will be applied on ranges rather than on single values. In this case, buckets are filled by the intersection of ranges' values with bucket limits and not by containment. This is done in order to avoid some range values falling outside every bucket, but as a side effect, the same range can match more than one bucket.
  400. GetFeature
  401. ^^^^^^^^^^
  402. This operation is capable to enumerate the actual possible values combinations. The output of this operation is similar to the output of the ``WFS 2.0 GetFeature`` operation which is a list of features along with dimension values using the same formats as the feature info operation. This output can be used to draw the features on a map for example.
  403. The parameters available for this operation are:
  404. .. list-table::
  405. :widths: 20 10 70
  406. :header-rows: 1
  407. * - Name
  408. - Mandatory
  409. - Description
  410. * - Service=WMTS
  411. - Yes
  412. - Service type identifier
  413. * - Request=GetFeature
  414. - Yes
  415. - Operation name
  416. * - Version=1.0.0
  417. - Yes
  418. - Standard and schema version for this operation
  419. * - Layer
  420. - Yes
  421. - Layer identifier
  422. * - TileMatrixSet
  423. - Yes
  424. - Tile matrix set identifier
  425. * - BBOX=minx,miny,maxx,maxy
  426. - No
  427. - Bounding box corners (lower left, upper right) in CRS units
  428. * - DimensionIdentifier
  429. - No
  430. - At most one per dimension, a range described as min/max, restricting the domain of this dimension
  431. * - Format
  432. - Yes
  433. - The desired output format
  434. The parameters common to the ``DescribeDomains`` operation work as already described above. Currently only the ``application/gml+xml; version=3.1`` output format is supported.
  435. Using the same restrictions parameters we used for the second request used as an example for the ``DescribeDomains`` operation a ``GetFeature`` request will look like this:
  436. .. code-block:: guess
  437. http://localhost:8080/geoserver/gwc/service/wmts?REQUEST=GetFeature&Version=1.0.0&Layer=some_layer&TileMatrixSet=EPSG:4326&elevation=0/500&time=2016-02-23T03:00:00.000Z
  438. and the result will be similar to this:
  439. .. code-block:: xml
  440. <?xml version="1.0" encoding="UTF-8"?><wmts:FeatureCollection xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:wmts="http://www.opengis.net/wmts/1.0">
  441. <wmts:feature gml:id="FID.1681">
  442. <wmts:footprint>
  443. <gml:Polygon xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns:xlink="http://www.w3.org/1999/xlink" srsDimension="2" srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
  444. <gml:exterior>
  445. <gml:LinearRing srsDimension="2">
  446. <gml:posList>-180.125 -90.125 -180.125 89.875 179.875 89.875 179.875 -90.125 -180.125 -90.125</gml:posList>
  447. </gml:LinearRing>
  448. </gml:exterior>
  449. </gml:Polygon>
  450. </wmts:footprint>
  451. <wmts:dimension name="elevation">200.0</wmts:dimension>
  452. <wmts:dimension name="time">2016-02-23T03:00:00.000Z</wmts:dimension>
  453. <wmts:dimension name="REFERENCE_TIME">2016-02-23T00:00:00.000Z</wmts:dimension>
  454. </wmts:feature>
  455. </wmts:FeatureCollection>
  456. Note how this result correlate with the correspondent ``DescribeDomains`` operation result.