MapProxy 2.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. MapProxy-2.1.0.dist-info/AUTHORS.txt +33 -0
  2. MapProxy-2.1.0.dist-info/COPYING.txt +60 -0
  3. MapProxy-2.1.0.dist-info/LICENSE.txt +202 -0
  4. MapProxy-2.1.0.dist-info/METADATA +165 -0
  5. MapProxy-2.1.0.dist-info/RECORD +459 -0
  6. MapProxy-2.1.0.dist-info/WHEEL +5 -0
  7. MapProxy-2.1.0.dist-info/entry_points.txt +4 -0
  8. MapProxy-2.1.0.dist-info/top_level.txt +1 -0
  9. mapproxy/__init__.py +0 -0
  10. mapproxy/cache/__init__.py +36 -0
  11. mapproxy/cache/azureblob.py +145 -0
  12. mapproxy/cache/base.py +120 -0
  13. mapproxy/cache/compact.py +665 -0
  14. mapproxy/cache/couchdb.py +301 -0
  15. mapproxy/cache/dummy.py +36 -0
  16. mapproxy/cache/file.py +200 -0
  17. mapproxy/cache/geopackage.py +647 -0
  18. mapproxy/cache/legend.py +87 -0
  19. mapproxy/cache/mbtiles.py +411 -0
  20. mapproxy/cache/meta.py +80 -0
  21. mapproxy/cache/path.py +261 -0
  22. mapproxy/cache/redis.py +152 -0
  23. mapproxy/cache/renderd.py +100 -0
  24. mapproxy/cache/riak.py +206 -0
  25. mapproxy/cache/s3.py +209 -0
  26. mapproxy/cache/tile.py +736 -0
  27. mapproxy/client/__init__.py +0 -0
  28. mapproxy/client/arcgis.py +82 -0
  29. mapproxy/client/cgi.py +141 -0
  30. mapproxy/client/http.py +295 -0
  31. mapproxy/client/log.py +33 -0
  32. mapproxy/client/tile.py +158 -0
  33. mapproxy/client/wms.py +255 -0
  34. mapproxy/compat/__init__.py +0 -0
  35. mapproxy/compat/image.py +86 -0
  36. mapproxy/config/__init__.py +22 -0
  37. mapproxy/config/config-schema.json +813 -0
  38. mapproxy/config/config.py +213 -0
  39. mapproxy/config/coverage.py +108 -0
  40. mapproxy/config/defaults.py +102 -0
  41. mapproxy/config/loader.py +2399 -0
  42. mapproxy/config/spec.py +657 -0
  43. mapproxy/config/validator.py +242 -0
  44. mapproxy/config_template/__init__.py +0 -0
  45. mapproxy/config_template/base_config/config.wsgi +10 -0
  46. mapproxy/config_template/base_config/full_example.yaml +598 -0
  47. mapproxy/config_template/base_config/full_seed_example.yaml +79 -0
  48. mapproxy/config_template/base_config/log.ini +35 -0
  49. mapproxy/config_template/base_config/mapproxy.yaml +60 -0
  50. mapproxy/config_template/base_config/seed.yaml +27 -0
  51. mapproxy/exception.py +149 -0
  52. mapproxy/featureinfo.py +251 -0
  53. mapproxy/grid.py +1199 -0
  54. mapproxy/image/__init__.py +549 -0
  55. mapproxy/image/fonts/DejaVuSans.ttf +0 -0
  56. mapproxy/image/fonts/DejaVuSansMono.ttf +0 -0
  57. mapproxy/image/fonts/LICENSE +99 -0
  58. mapproxy/image/fonts/__init__.py +0 -0
  59. mapproxy/image/mask.py +79 -0
  60. mapproxy/image/merge.py +323 -0
  61. mapproxy/image/message.py +357 -0
  62. mapproxy/image/opts.py +185 -0
  63. mapproxy/image/tile.py +171 -0
  64. mapproxy/image/transform.py +350 -0
  65. mapproxy/layer.py +489 -0
  66. mapproxy/multiapp.py +230 -0
  67. mapproxy/proj.py +309 -0
  68. mapproxy/request/__init__.py +18 -0
  69. mapproxy/request/arcgis.py +268 -0
  70. mapproxy/request/base.py +466 -0
  71. mapproxy/request/tile.py +131 -0
  72. mapproxy/request/wms/__init__.py +829 -0
  73. mapproxy/request/wms/exception.py +107 -0
  74. mapproxy/request/wmts.py +442 -0
  75. mapproxy/response.py +237 -0
  76. mapproxy/script/__init__.py +0 -0
  77. mapproxy/script/conf/__init__.py +0 -0
  78. mapproxy/script/conf/app.py +222 -0
  79. mapproxy/script/conf/caches.py +44 -0
  80. mapproxy/script/conf/geopackage.py +136 -0
  81. mapproxy/script/conf/layers.py +54 -0
  82. mapproxy/script/conf/seeds.py +36 -0
  83. mapproxy/script/conf/sources.py +88 -0
  84. mapproxy/script/conf/utils.py +148 -0
  85. mapproxy/script/defrag.py +187 -0
  86. mapproxy/script/export.py +337 -0
  87. mapproxy/script/grids.py +198 -0
  88. mapproxy/script/scales.py +134 -0
  89. mapproxy/script/util.py +410 -0
  90. mapproxy/script/wms_capabilities.py +160 -0
  91. mapproxy/seed/__init__.py +0 -0
  92. mapproxy/seed/cachelock.py +127 -0
  93. mapproxy/seed/cleanup.py +191 -0
  94. mapproxy/seed/config.py +481 -0
  95. mapproxy/seed/script.py +391 -0
  96. mapproxy/seed/seeder.py +551 -0
  97. mapproxy/seed/spec.py +66 -0
  98. mapproxy/seed/util.py +266 -0
  99. mapproxy/service/__init__.py +14 -0
  100. mapproxy/service/base.py +45 -0
  101. mapproxy/service/demo.py +364 -0
  102. mapproxy/service/kml.py +333 -0
  103. mapproxy/service/ows.py +39 -0
  104. mapproxy/service/template_helper.py +55 -0
  105. mapproxy/service/templates/demo/capabilities_demo.html +18 -0
  106. mapproxy/service/templates/demo/demo.html +181 -0
  107. mapproxy/service/templates/demo/openlayers-demo.cfg +16 -0
  108. mapproxy/service/templates/demo/static/img/blank.gif +0 -0
  109. mapproxy/service/templates/demo/static/img/east-mini.png +0 -0
  110. mapproxy/service/templates/demo/static/img/north-mini.png +0 -0
  111. mapproxy/service/templates/demo/static/img/south-mini.png +0 -0
  112. mapproxy/service/templates/demo/static/img/west-mini.png +0 -0
  113. mapproxy/service/templates/demo/static/img/zoom-minus-mini.png +0 -0
  114. mapproxy/service/templates/demo/static/img/zoom-plus-mini.png +0 -0
  115. mapproxy/service/templates/demo/static/img/zoom-world-mini.png +0 -0
  116. mapproxy/service/templates/demo/static/logo.png +0 -0
  117. mapproxy/service/templates/demo/static/ol.css +345 -0
  118. mapproxy/service/templates/demo/static/ol.js +4 -0
  119. mapproxy/service/templates/demo/static/proj4.min.js +1 -0
  120. mapproxy/service/templates/demo/static/proj4defs.js +1 -0
  121. mapproxy/service/templates/demo/static/site.css +137 -0
  122. mapproxy/service/templates/demo/static/theme/default/framedCloud.css +0 -0
  123. mapproxy/service/templates/demo/static/theme/default/google.css +17 -0
  124. mapproxy/service/templates/demo/static/theme/default/ie6-style.css +10 -0
  125. mapproxy/service/templates/demo/static/theme/default/style.css +482 -0
  126. mapproxy/service/templates/demo/static.html +34 -0
  127. mapproxy/service/templates/demo/tms_demo.html +117 -0
  128. mapproxy/service/templates/demo/wms_demo.html +144 -0
  129. mapproxy/service/templates/demo/wmts_demo.html +118 -0
  130. mapproxy/service/templates/tms_capabilities.xml +13 -0
  131. mapproxy/service/templates/tms_exception.xml +4 -0
  132. mapproxy/service/templates/tms_root_resource.xml +7 -0
  133. mapproxy/service/templates/tms_tilemap_capabilities.xml +14 -0
  134. mapproxy/service/templates/wms100capabilities.xml +112 -0
  135. mapproxy/service/templates/wms100exception.xml +4 -0
  136. mapproxy/service/templates/wms110capabilities.xml +152 -0
  137. mapproxy/service/templates/wms110exception.xml +5 -0
  138. mapproxy/service/templates/wms111capabilities.xml +183 -0
  139. mapproxy/service/templates/wms111exception.xml +5 -0
  140. mapproxy/service/templates/wms130capabilities.xml +326 -0
  141. mapproxy/service/templates/wms130exception.xml +8 -0
  142. mapproxy/service/templates/wmts100capabilities.xml +155 -0
  143. mapproxy/service/templates/wmts100exception.xml +9 -0
  144. mapproxy/service/tile.py +540 -0
  145. mapproxy/service/wms.py +868 -0
  146. mapproxy/service/wmts.py +387 -0
  147. mapproxy/source/__init__.py +83 -0
  148. mapproxy/source/arcgis.py +39 -0
  149. mapproxy/source/error.py +40 -0
  150. mapproxy/source/mapnik.py +262 -0
  151. mapproxy/source/tile.py +97 -0
  152. mapproxy/source/wms.py +273 -0
  153. mapproxy/srs.py +734 -0
  154. mapproxy/template.py +54 -0
  155. mapproxy/test/__init__.py +0 -0
  156. mapproxy/test/conftest.py +8 -0
  157. mapproxy/test/helper.py +255 -0
  158. mapproxy/test/http.py +511 -0
  159. mapproxy/test/image.py +219 -0
  160. mapproxy/test/mocker.py +2291 -0
  161. mapproxy/test/schemas/inspire/common/1.0/common.xsd +1461 -0
  162. mapproxy/test/schemas/inspire/common/1.0/enums/enum_bul.xsd +108 -0
  163. mapproxy/test/schemas/inspire/common/1.0/enums/enum_cze.xsd +108 -0
  164. mapproxy/test/schemas/inspire/common/1.0/enums/enum_dan.xsd +108 -0
  165. mapproxy/test/schemas/inspire/common/1.0/enums/enum_dut.xsd +108 -0
  166. mapproxy/test/schemas/inspire/common/1.0/enums/enum_eng.xsd +155 -0
  167. mapproxy/test/schemas/inspire/common/1.0/enums/enum_est.xsd +108 -0
  168. mapproxy/test/schemas/inspire/common/1.0/enums/enum_fin.xsd +108 -0
  169. mapproxy/test/schemas/inspire/common/1.0/enums/enum_fre.xsd +108 -0
  170. mapproxy/test/schemas/inspire/common/1.0/enums/enum_ger.xsd +108 -0
  171. mapproxy/test/schemas/inspire/common/1.0/enums/enum_gle.xsd +109 -0
  172. mapproxy/test/schemas/inspire/common/1.0/enums/enum_gre.xsd +108 -0
  173. mapproxy/test/schemas/inspire/common/1.0/enums/enum_hun.xsd +108 -0
  174. mapproxy/test/schemas/inspire/common/1.0/enums/enum_ita.xsd +108 -0
  175. mapproxy/test/schemas/inspire/common/1.0/enums/enum_lav.xsd +108 -0
  176. mapproxy/test/schemas/inspire/common/1.0/enums/enum_lit.xsd +108 -0
  177. mapproxy/test/schemas/inspire/common/1.0/enums/enum_mlt.xsd +108 -0
  178. mapproxy/test/schemas/inspire/common/1.0/enums/enum_pol.xsd +108 -0
  179. mapproxy/test/schemas/inspire/common/1.0/enums/enum_por.xsd +108 -0
  180. mapproxy/test/schemas/inspire/common/1.0/enums/enum_rum.xsd +108 -0
  181. mapproxy/test/schemas/inspire/common/1.0/enums/enum_slo.xsd +108 -0
  182. mapproxy/test/schemas/inspire/common/1.0/enums/enum_slv.xsd +108 -0
  183. mapproxy/test/schemas/inspire/common/1.0/enums/enum_spa.xsd +108 -0
  184. mapproxy/test/schemas/inspire/common/1.0/enums/enum_swe.xsd +108 -0
  185. mapproxy/test/schemas/inspire/common/1.0/network.xsd +521 -0
  186. mapproxy/test/schemas/inspire/inspire_vs/1.0/inspire_vs.xsd +19 -0
  187. mapproxy/test/schemas/kml/2.2.0/ReadMe.txt +14 -0
  188. mapproxy/test/schemas/kml/2.2.0/atom-author-link.xsd +66 -0
  189. mapproxy/test/schemas/kml/2.2.0/ogckml22.xsd +1646 -0
  190. mapproxy/test/schemas/kml/2.2.0/xAL.xsd +1680 -0
  191. mapproxy/test/schemas/ows/1.1.0/ReadMe.txt +87 -0
  192. mapproxy/test/schemas/ows/1.1.0/ows19115subset.xsd +235 -0
  193. mapproxy/test/schemas/ows/1.1.0/owsAll.xsd +23 -0
  194. mapproxy/test/schemas/ows/1.1.0/owsCommon.xsd +157 -0
  195. mapproxy/test/schemas/ows/1.1.0/owsContents.xsd +86 -0
  196. mapproxy/test/schemas/ows/1.1.0/owsDataIdentification.xsd +127 -0
  197. mapproxy/test/schemas/ows/1.1.0/owsDomainType.xsd +279 -0
  198. mapproxy/test/schemas/ows/1.1.0/owsExceptionReport.xsd +76 -0
  199. mapproxy/test/schemas/ows/1.1.0/owsGetCapabilities.xsd +112 -0
  200. mapproxy/test/schemas/ows/1.1.0/owsGetResourceByID.xsd +51 -0
  201. mapproxy/test/schemas/ows/1.1.0/owsInputOutputData.xsd +59 -0
  202. mapproxy/test/schemas/ows/1.1.0/owsManifest.xsd +125 -0
  203. mapproxy/test/schemas/ows/1.1.0/owsOperationsMetadata.xsd +140 -0
  204. mapproxy/test/schemas/ows/1.1.0/owsServiceIdentification.xsd +60 -0
  205. mapproxy/test/schemas/ows/1.1.0/owsServiceProvider.xsd +47 -0
  206. mapproxy/test/schemas/sld/1.1.0/sld_capabilities.xsd +27 -0
  207. mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.dtd +353 -0
  208. mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.xml +188 -0
  209. mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.dtd +524 -0
  210. mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.xml +260 -0
  211. mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.dtd +273 -0
  212. mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.xml +303 -0
  213. mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.dtd +6 -0
  214. mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.xml +33 -0
  215. mapproxy/test/schemas/wms/1.1.1/OGC-exception.xsd +68 -0
  216. mapproxy/test/schemas/wms/1.1.1/WMS_DescribeLayerResponse.dtd +22 -0
  217. mapproxy/test/schemas/wms/1.1.1/WMS_MS_Capabilities.dtd +274 -0
  218. mapproxy/test/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd +5 -0
  219. mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.dtd +276 -0
  220. mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.xml +303 -0
  221. mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.dtd +6 -0
  222. mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.xml +33 -0
  223. mapproxy/test/schemas/wms/1.3.0/ReadMe.txt +8 -0
  224. mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xml +277 -0
  225. mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xsd +611 -0
  226. mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xml +34 -0
  227. mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xsd +28 -0
  228. mapproxy/test/schemas/wmsc/1.1.1/OGC-exception.xsd +68 -0
  229. mapproxy/test/schemas/wmsc/1.1.1/WMS_DescribeLayerResponse.dtd +22 -0
  230. mapproxy/test/schemas/wmsc/1.1.1/WMS_MS_Capabilities.dtd +283 -0
  231. mapproxy/test/schemas/wmsc/1.1.1/WMS_exception_1_1_1.dtd +5 -0
  232. mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.dtd +276 -0
  233. mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.xml +303 -0
  234. mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.dtd +6 -0
  235. mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.xml +33 -0
  236. mapproxy/test/schemas/wmts/1.0/ReadMe.txt +32 -0
  237. mapproxy/test/schemas/wmts/1.0/wmts.xsd +28 -0
  238. mapproxy/test/schemas/wmts/1.0/wmtsAbstract.wsdl +151 -0
  239. mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_request.xsd +38 -0
  240. mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_response.xsd +564 -0
  241. mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_request.xsd +57 -0
  242. mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_response.xsd +72 -0
  243. mapproxy/test/schemas/wmts/1.0/wmtsGetTile_request.xsd +91 -0
  244. mapproxy/test/schemas/wmts/1.0/wmtsKVP.xsd +76 -0
  245. mapproxy/test/schemas/wmts/1.0/wmtsPayload_response.xsd +70 -0
  246. mapproxy/test/schemas/xlink/1.0.0/ReadMe.txt +6 -0
  247. mapproxy/test/schemas/xlink/1.0.0/xlinks.xsd +122 -0
  248. mapproxy/test/schemas/xml.xsd +287 -0
  249. mapproxy/test/system/__init__.py +98 -0
  250. mapproxy/test/system/fixture/arcgis.yaml +57 -0
  251. mapproxy/test/system/fixture/auth.yaml +70 -0
  252. mapproxy/test/system/fixture/cache.mbtiles +0 -0
  253. mapproxy/test/system/fixture/cache_azureblob.yaml +59 -0
  254. mapproxy/test/system/fixture/cache_band_merge.yaml +73 -0
  255. mapproxy/test/system/fixture/cache_bulk_meta_tiles.yaml +24 -0
  256. mapproxy/test/system/fixture/cache_coverage.yaml +84 -0
  257. mapproxy/test/system/fixture/cache_data/dop_cache_EPSG3857/00/000/000/000/000/000/000.png +0 -0
  258. mapproxy/test/system/fixture/cache_data/wms_cache_EPSG900913/01/000/000/000/000/000/001.jpeg +0 -0
  259. mapproxy/test/system/fixture/cache_data/wms_cache_transparent_EPSG900913/01/000/000/000/000/000/001.png +0 -0
  260. mapproxy/test/system/fixture/cache_geopackage.yaml +56 -0
  261. mapproxy/test/system/fixture/cache_grid_names.yaml +50 -0
  262. mapproxy/test/system/fixture/cache_mbtiles.yaml +28 -0
  263. mapproxy/test/system/fixture/cache_s3.yaml +58 -0
  264. mapproxy/test/system/fixture/cache_source.yaml +81 -0
  265. mapproxy/test/system/fixture/combined_sources.yaml +130 -0
  266. mapproxy/test/system/fixture/coverage.yaml +77 -0
  267. mapproxy/test/system/fixture/demo.yaml +135 -0
  268. mapproxy/test/system/fixture/dimension.yaml +59 -0
  269. mapproxy/test/system/fixture/disable_storage.yaml +25 -0
  270. mapproxy/test/system/fixture/empty_ogrdata.geojson +1 -0
  271. mapproxy/test/system/fixture/formats.yaml +72 -0
  272. mapproxy/test/system/fixture/inspire.yaml +101 -0
  273. mapproxy/test/system/fixture/inspire_full.yaml +124 -0
  274. mapproxy/test/system/fixture/kml_layer.yaml +66 -0
  275. mapproxy/test/system/fixture/layer.yaml +260 -0
  276. mapproxy/test/system/fixture/layergroups.yaml +57 -0
  277. mapproxy/test/system/fixture/layergroups_root.yaml +106 -0
  278. mapproxy/test/system/fixture/legendgraphic.yaml +93 -0
  279. mapproxy/test/system/fixture/mapnik_source.yaml +66 -0
  280. mapproxy/test/system/fixture/mapproxy_export.yaml +12 -0
  281. mapproxy/test/system/fixture/mapserver.yaml +23 -0
  282. mapproxy/test/system/fixture/minimal_cgi.py +16 -0
  283. mapproxy/test/system/fixture/mixed_mode.yaml +49 -0
  284. mapproxy/test/system/fixture/multi_cache_layers.yaml +111 -0
  285. mapproxy/test/system/fixture/multiapp1.yaml +20 -0
  286. mapproxy/test/system/fixture/multiapp2.yaml +19 -0
  287. mapproxy/test/system/fixture/renderd_client.yaml +55 -0
  288. mapproxy/test/system/fixture/scalehints.yaml +70 -0
  289. mapproxy/test/system/fixture/seed.yaml +94 -0
  290. mapproxy/test/system/fixture/seed_mapproxy.yaml +39 -0
  291. mapproxy/test/system/fixture/seed_old.yaml +12 -0
  292. mapproxy/test/system/fixture/seed_timeouts.yaml +12 -0
  293. mapproxy/test/system/fixture/seed_timeouts_mapproxy.yaml +27 -0
  294. mapproxy/test/system/fixture/seedonly.yaml +51 -0
  295. mapproxy/test/system/fixture/sld.yaml +35 -0
  296. mapproxy/test/system/fixture/source_errors.yaml +84 -0
  297. mapproxy/test/system/fixture/source_errors_raise.yaml +82 -0
  298. mapproxy/test/system/fixture/tileservice_origin.yaml +26 -0
  299. mapproxy/test/system/fixture/tileservice_refresh.yaml +59 -0
  300. mapproxy/test/system/fixture/tilesource_minmax_res.yaml +22 -0
  301. mapproxy/test/system/fixture/util-conf-base-grids.yaml +5 -0
  302. mapproxy/test/system/fixture/util-conf-overwrite.yaml +13 -0
  303. mapproxy/test/system/fixture/util-conf-wms-111-cap.xml +90 -0
  304. mapproxy/test/system/fixture/util_grids.yaml +29 -0
  305. mapproxy/test/system/fixture/util_wms_capabilities111.xml +130 -0
  306. mapproxy/test/system/fixture/util_wms_capabilities130.xml +100 -0
  307. mapproxy/test/system/fixture/util_wms_capabilities_service_exception.xml +5 -0
  308. mapproxy/test/system/fixture/watermark.yaml +50 -0
  309. mapproxy/test/system/fixture/wms_srs_extent.yaml +39 -0
  310. mapproxy/test/system/fixture/wms_versions.yaml +38 -0
  311. mapproxy/test/system/fixture/wmts.yaml +134 -0
  312. mapproxy/test/system/fixture/wmts_dimensions.yaml +57 -0
  313. mapproxy/test/system/fixture/xslt_featureinfo.yaml +54 -0
  314. mapproxy/test/system/fixture/xslt_featureinfo_input.yaml +51 -0
  315. mapproxy/test/system/test_arcgis.py +156 -0
  316. mapproxy/test/system/test_auth.py +1133 -0
  317. mapproxy/test/system/test_behind_proxy.py +75 -0
  318. mapproxy/test/system/test_bulk_meta_tiles.py +106 -0
  319. mapproxy/test/system/test_cache_azureblob.py +127 -0
  320. mapproxy/test/system/test_cache_band_merge.py +103 -0
  321. mapproxy/test/system/test_cache_coverage.py +168 -0
  322. mapproxy/test/system/test_cache_geopackage.py +144 -0
  323. mapproxy/test/system/test_cache_grid_names.py +89 -0
  324. mapproxy/test/system/test_cache_mbtiles.py +85 -0
  325. mapproxy/test/system/test_cache_s3.py +115 -0
  326. mapproxy/test/system/test_cache_source.py +146 -0
  327. mapproxy/test/system/test_combined_sources.py +335 -0
  328. mapproxy/test/system/test_coverage.py +140 -0
  329. mapproxy/test/system/test_decorate_img.py +214 -0
  330. mapproxy/test/system/test_demo.py +56 -0
  331. mapproxy/test/system/test_demo_with_extra_service.py +57 -0
  332. mapproxy/test/system/test_dimensions.py +279 -0
  333. mapproxy/test/system/test_disable_storage.py +42 -0
  334. mapproxy/test/system/test_formats.py +219 -0
  335. mapproxy/test/system/test_inspire_vs.py +173 -0
  336. mapproxy/test/system/test_kml.py +264 -0
  337. mapproxy/test/system/test_layergroups.py +160 -0
  338. mapproxy/test/system/test_legendgraphic.py +308 -0
  339. mapproxy/test/system/test_mapnik.py +162 -0
  340. mapproxy/test/system/test_mapserver.py +83 -0
  341. mapproxy/test/system/test_mixed_mode_format.py +201 -0
  342. mapproxy/test/system/test_multi_cache_layers.py +169 -0
  343. mapproxy/test/system/test_multiapp.py +92 -0
  344. mapproxy/test/system/test_refresh.py +206 -0
  345. mapproxy/test/system/test_renderd_client.py +304 -0
  346. mapproxy/test/system/test_response_headers.py +54 -0
  347. mapproxy/test/system/test_scalehints.py +140 -0
  348. mapproxy/test/system/test_seed.py +425 -0
  349. mapproxy/test/system/test_seed_only.py +93 -0
  350. mapproxy/test/system/test_sld.py +120 -0
  351. mapproxy/test/system/test_source_errors.py +377 -0
  352. mapproxy/test/system/test_tilesource_minmax_res.py +54 -0
  353. mapproxy/test/system/test_tms.py +277 -0
  354. mapproxy/test/system/test_tms_origin.py +46 -0
  355. mapproxy/test/system/test_util_conf.py +434 -0
  356. mapproxy/test/system/test_util_export.py +210 -0
  357. mapproxy/test/system/test_util_grids.py +88 -0
  358. mapproxy/test/system/test_util_wms_capabilities.py +182 -0
  359. mapproxy/test/system/test_watermark.py +91 -0
  360. mapproxy/test/system/test_wms.py +1616 -0
  361. mapproxy/test/system/test_wms_srs_extent.py +165 -0
  362. mapproxy/test/system/test_wms_version.py +85 -0
  363. mapproxy/test/system/test_wmsc.py +116 -0
  364. mapproxy/test/system/test_wmts.py +334 -0
  365. mapproxy/test/system/test_wmts_dimensions.py +206 -0
  366. mapproxy/test/system/test_wmts_restful.py +198 -0
  367. mapproxy/test/system/test_xslt_featureinfo.py +423 -0
  368. mapproxy/test/test_http_helper.py +217 -0
  369. mapproxy/test/unit/__init__.py +0 -0
  370. mapproxy/test/unit/epsg +2 -0
  371. mapproxy/test/unit/polygons/polygons.dbf +0 -0
  372. mapproxy/test/unit/polygons/polygons.shp +0 -0
  373. mapproxy/test/unit/polygons/polygons.shx +0 -0
  374. mapproxy/test/unit/test_async.py +242 -0
  375. mapproxy/test/unit/test_auth.py +430 -0
  376. mapproxy/test/unit/test_cache.py +1356 -0
  377. mapproxy/test/unit/test_cache_azureblob.py +97 -0
  378. mapproxy/test/unit/test_cache_compact.py +324 -0
  379. mapproxy/test/unit/test_cache_couchdb.py +118 -0
  380. mapproxy/test/unit/test_cache_geopackage.py +256 -0
  381. mapproxy/test/unit/test_cache_redis.py +123 -0
  382. mapproxy/test/unit/test_cache_riak.py +80 -0
  383. mapproxy/test/unit/test_cache_s3.py +93 -0
  384. mapproxy/test/unit/test_cache_tile.py +477 -0
  385. mapproxy/test/unit/test_client.py +488 -0
  386. mapproxy/test/unit/test_client_arcgis.py +74 -0
  387. mapproxy/test/unit/test_client_cgi.py +140 -0
  388. mapproxy/test/unit/test_collections.py +116 -0
  389. mapproxy/test/unit/test_concat_legends.py +37 -0
  390. mapproxy/test/unit/test_conf_loader.py +1267 -0
  391. mapproxy/test/unit/test_conf_validator.py +427 -0
  392. mapproxy/test/unit/test_config.py +118 -0
  393. mapproxy/test/unit/test_decorate_img.py +185 -0
  394. mapproxy/test/unit/test_exceptions.py +270 -0
  395. mapproxy/test/unit/test_featureinfo.py +313 -0
  396. mapproxy/test/unit/test_file_lock_load.py +49 -0
  397. mapproxy/test/unit/test_geom.py +512 -0
  398. mapproxy/test/unit/test_grid.py +1279 -0
  399. mapproxy/test/unit/test_image.py +1051 -0
  400. mapproxy/test/unit/test_image_mask.py +181 -0
  401. mapproxy/test/unit/test_image_messages.py +209 -0
  402. mapproxy/test/unit/test_image_options.py +160 -0
  403. mapproxy/test/unit/test_isodate.py +118 -0
  404. mapproxy/test/unit/test_multiapp.py +163 -0
  405. mapproxy/test/unit/test_ogr_reader.py +51 -0
  406. mapproxy/test/unit/test_request.py +745 -0
  407. mapproxy/test/unit/test_request_wmts.py +178 -0
  408. mapproxy/test/unit/test_response.py +78 -0
  409. mapproxy/test/unit/test_seed.py +365 -0
  410. mapproxy/test/unit/test_seed_cachelock.py +91 -0
  411. mapproxy/test/unit/test_srs.py +215 -0
  412. mapproxy/test/unit/test_tiled_source.py +122 -0
  413. mapproxy/test/unit/test_tilefilter.py +31 -0
  414. mapproxy/test/unit/test_times.py +25 -0
  415. mapproxy/test/unit/test_timeutils.py +50 -0
  416. mapproxy/test/unit/test_util_conf_utils.py +75 -0
  417. mapproxy/test/unit/test_utils.py +476 -0
  418. mapproxy/test/unit/test_wms_capabilities.py +44 -0
  419. mapproxy/test/unit/test_wms_layer.py +113 -0
  420. mapproxy/test/unit/test_yaml.py +68 -0
  421. mapproxy/tilefilter.py +61 -0
  422. mapproxy/util/__init__.py +0 -0
  423. mapproxy/util/async_.py +229 -0
  424. mapproxy/util/collections.py +134 -0
  425. mapproxy/util/coverage.py +337 -0
  426. mapproxy/util/ext/__init__.py +14 -0
  427. mapproxy/util/ext/dictspec/__init__.py +1 -0
  428. mapproxy/util/ext/dictspec/spec.py +131 -0
  429. mapproxy/util/ext/dictspec/test/__init__.py +0 -0
  430. mapproxy/util/ext/dictspec/test/test_validator.py +278 -0
  431. mapproxy/util/ext/dictspec/validator.py +194 -0
  432. mapproxy/util/ext/local.py +198 -0
  433. mapproxy/util/ext/lockfile.py +140 -0
  434. mapproxy/util/ext/odict.py +321 -0
  435. mapproxy/util/ext/serving.py +491 -0
  436. mapproxy/util/ext/tempita/__init__.py +1093 -0
  437. mapproxy/util/ext/tempita/_looper.py +163 -0
  438. mapproxy/util/ext/tempita/string_utils.py +24 -0
  439. mapproxy/util/ext/wmsparse/__init__.py +3 -0
  440. mapproxy/util/ext/wmsparse/duration.py +600 -0
  441. mapproxy/util/ext/wmsparse/parse.py +307 -0
  442. mapproxy/util/ext/wmsparse/test/__init__.py +0 -0
  443. mapproxy/util/ext/wmsparse/test/test_parse.py +111 -0
  444. mapproxy/util/ext/wmsparse/test/test_util.py +23 -0
  445. mapproxy/util/ext/wmsparse/test/wms-example-111.xml +90 -0
  446. mapproxy/util/ext/wmsparse/test/wms-example-130.xml +120 -0
  447. mapproxy/util/ext/wmsparse/test/wms-large-111.xml +2114 -0
  448. mapproxy/util/ext/wmsparse/test/wms_nasa_cap.xml +386 -0
  449. mapproxy/util/ext/wmsparse/util.py +189 -0
  450. mapproxy/util/fs.py +164 -0
  451. mapproxy/util/geom.py +307 -0
  452. mapproxy/util/lib.py +117 -0
  453. mapproxy/util/lock.py +171 -0
  454. mapproxy/util/ogr.py +247 -0
  455. mapproxy/util/py.py +75 -0
  456. mapproxy/util/times.py +78 -0
  457. mapproxy/util/yaml.py +58 -0
  458. mapproxy/version.py +33 -0
  459. mapproxy/wsgiapp.py +167 -0
@@ -0,0 +1,813 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "MapProxy Configuration",
4
+ "description": "Configuration for a MapProxy server",
5
+ "type": "object",
6
+ "properties": {
7
+ "layers": {
8
+ "description": "The published layers",
9
+ "type": "array",
10
+ "items": {
11
+ "$ref": "#/$defs/layer"
12
+ }
13
+ },
14
+ "sources": {
15
+ "title": "sources",
16
+ "description": "The map data sources",
17
+ "type": "object",
18
+ "additionalProperties": {
19
+ "$ref": "#/$defs/source"
20
+ }
21
+ },
22
+ "services": {
23
+ "title": "services",
24
+ "description": "The available services and their configurations",
25
+ "type": "object",
26
+ "additionalProperties": false,
27
+ "properties": {
28
+ "wms": {
29
+ "oneOf": [
30
+ {
31
+ "type": "null"
32
+ },
33
+ {
34
+ "title": "wms",
35
+ "description": "WMS service configuration",
36
+ "type": "object",
37
+ "additionalProperties": false,
38
+ "properties": {
39
+ "attribution": {
40
+ "type": "object",
41
+ "additionalProperties": false,
42
+ "properties": {
43
+ "text": {
44
+ "type": "string"
45
+ }
46
+ }
47
+ },
48
+ "md": {
49
+ "title": "md",
50
+ "description": "The metadata config for the wms service",
51
+ "$ref": "#/$defs/metadata"
52
+ },
53
+ "inspire_md": {
54
+ "title": "md",
55
+ "description": "The inspire metadata config for the wms service",
56
+ "type": "object"
57
+ },
58
+ "srs": {
59
+ "title": "srs",
60
+ "description": "Supported SRS of the WMS service",
61
+ "type": "array",
62
+ "minItems": 1,
63
+ "items": {
64
+ "type": "string"
65
+ }
66
+ },
67
+ "bbox_srs": {
68
+ "title": "bbox_srs",
69
+ "description": "Supported SRS of the BBOX of the WMS service",
70
+ "type": "array",
71
+ "minItems": 1,
72
+ "items": {
73
+ "oneOf": [
74
+ {
75
+ "type": "string"
76
+ },
77
+ {
78
+ "type": "object",
79
+ "additionalProperties": false,
80
+ "required": ["srs", "bbox"],
81
+ "properties": {
82
+ "srs": {
83
+ "type": "string"
84
+ },
85
+ "bbox": {
86
+ "type": "array",
87
+ "minItems": 4,
88
+ "maxItems": 4,
89
+ "items": {
90
+ "type": "number"
91
+ }
92
+ }
93
+ }
94
+ }
95
+ ]
96
+ }
97
+ },
98
+ "image_formats": {
99
+ "title": "image_formats",
100
+ "description": "List of image mime types",
101
+ "type": "array",
102
+ "minItems": 1,
103
+ "items": {
104
+ "type": "string"
105
+ }
106
+ },
107
+ "featureinfo_types": {
108
+ "title": "featureinfo_types",
109
+ "description": "List of feature info types",
110
+ "type": "array",
111
+ "minItems": 1,
112
+ "items": {
113
+ "oneOf": [
114
+ {
115
+ "const": "text"
116
+ },
117
+ {
118
+ "const": "html"
119
+ },
120
+ {
121
+ "const": "xml"
122
+ }
123
+ ]
124
+ }
125
+ },
126
+ "featureinfo_xslt": {
127
+ "description": "XSLT to transform feature info",
128
+ "oneOf": [
129
+ {
130
+ "type": "string"
131
+ },
132
+ {
133
+ "title": "featureinfo_xslt",
134
+ "type": "object",
135
+ "additionalProperties": false,
136
+ "properties": {
137
+ "html": {
138
+ "type": "string"
139
+ },
140
+ "xml": {
141
+ "type": "string"
142
+ }
143
+ }
144
+ }
145
+ ]
146
+ },
147
+ "strict": {
148
+ "description": "Require wms feature info request to contain all required parameters",
149
+ "type": "boolean"
150
+ },
151
+ "on_source_errors": {
152
+ "description": "What to do when one or more sources return errors or no response at all",
153
+ "oneOf": [
154
+ {
155
+ "const": "notify"
156
+ },
157
+ {
158
+ "const": "raise"
159
+ }
160
+ ]
161
+ },
162
+ "max_output_pixels": {
163
+ "description": "Maximum output size for a WMS requests in pixel",
164
+ "type": "array",
165
+ "minItems": 2,
166
+ "maxItems": 2,
167
+ "items": {
168
+ "type": "integer"
169
+ }
170
+ },
171
+ "versions": {
172
+ "description": "Versions the the MapProxy WMS should support",
173
+ "type": "array",
174
+ "minItems": 1,
175
+ "items": {
176
+ "type": "string"
177
+ }
178
+ }
179
+ }
180
+ }
181
+ ]
182
+ },
183
+ "tms": {
184
+ "oneOf": [
185
+ {
186
+ "type": "null"
187
+ },
188
+ {
189
+ "title": "tms",
190
+ "description": "TMS service configuration",
191
+ "type": "object",
192
+ "additionalProperties": false,
193
+ "properties": {
194
+ "use_grid_names": {
195
+ "description": "Use name of grid instead of srs identifier in url",
196
+ "type": "boolean"
197
+ },
198
+ "origin": {
199
+ "description": "Change the default origin for the tiles",
200
+ "oneOf": [
201
+ {
202
+ "const": "nw"
203
+ },
204
+ {
205
+ "const": "sw"
206
+ }
207
+ ]
208
+ }
209
+ }
210
+ }
211
+ ]
212
+ },
213
+ "kml": {
214
+ "oneOf": [
215
+ {
216
+ "type": "null"
217
+ },
218
+ {
219
+ "title": "kml",
220
+ "description": "KML service configuration",
221
+ "type": "object",
222
+ "additionalProperties": false,
223
+ "properties": {
224
+ "use_grid_names": {
225
+ "description": "Use name of grid instead of srs identifier in url",
226
+ "type": "boolean"
227
+ }
228
+ }
229
+ }
230
+ ]
231
+ },
232
+ "wmts": {
233
+ "oneOf": [
234
+ {
235
+ "type": "null"
236
+ },
237
+ {
238
+ "title": "wmts",
239
+ "description": "WMTS service configuration",
240
+ "type": "object",
241
+ "properties": {
242
+ "md": {
243
+ "title": "md",
244
+ "description": "The metadata config for the wmts service",
245
+ "$ref": "#/$defs/metadata"
246
+ },
247
+ "kvp": {
248
+ "title": "kvp",
249
+ "description": "Enable KVP requests",
250
+ "type": "boolean"
251
+ },
252
+ "restful": {
253
+ "title": "restful",
254
+ "description": "Enable restful requests",
255
+ "type": "boolean"
256
+ },
257
+ "restful_template": {
258
+ "title": "restful_template",
259
+ "description": "URL Template for restful tile request",
260
+ "type": "string"
261
+ },
262
+ "restful_fi_template": {
263
+ "title": "restful_fi_template",
264
+ "description": "URL Template for restful feature info request",
265
+ "type": "string"
266
+ },
267
+ "featureinfo_formats": {
268
+ "title": "featureinfo_formats",
269
+ "description": "List of feature info formats",
270
+ "type": "array",
271
+ "minItems": 1,
272
+ "items": {
273
+ "type": "object",
274
+ "additionalProperties": false,
275
+ "properties": {
276
+ "mimetype": {
277
+ "type": "string"
278
+ },
279
+ "suffix": {
280
+ "type": "string"
281
+ }
282
+ }
283
+ }
284
+ }
285
+ }
286
+ }
287
+ ]
288
+ },
289
+ "demo": {
290
+ "type": "null"
291
+ }
292
+ }
293
+ },
294
+ "caches": {
295
+ "title": "caches",
296
+ "description": "The configured caches",
297
+ "type": "object",
298
+ "additionalProperties": {
299
+ "$ref": "#/$defs/cache"
300
+ }
301
+ },
302
+ "grids": {},
303
+
304
+ "globals": {}
305
+ },
306
+ "required": ["layers", "services"],
307
+
308
+ "$defs": {
309
+ "layer": {
310
+ "title": "layer",
311
+ "description": "Configuration of a published layer",
312
+ "type": "object",
313
+ "additionalProperties": false,
314
+ "anyOf": [
315
+ {
316
+ "required": ["sources"]
317
+ },
318
+ {
319
+ "required": ["layers"]
320
+ },
321
+ {
322
+ "required": ["tile_sources"]
323
+ }
324
+ ],
325
+ "properties": {
326
+ "name": {
327
+ "description": "The addressable name of the layer",
328
+ "oneOf": [
329
+ {
330
+ "type": "string"
331
+ },
332
+ {
333
+ "type": "integer"
334
+ }
335
+ ]
336
+ },
337
+ "title": {
338
+ "description": "The title of the layer",
339
+ "type": "string"
340
+ },
341
+ "sources": {
342
+ "description": "Associated sources for the layer",
343
+ "type": "array",
344
+ "minItems": 1,
345
+ "uniqueItems": true,
346
+ "items": {
347
+ "oneOf": [
348
+ {
349
+ "type": "string"
350
+ },
351
+ {
352
+ "type": "integer"
353
+ }
354
+ ]
355
+ }
356
+ },
357
+ "layers": {
358
+ "description": "Child layers of the layer",
359
+ "type": "array",
360
+ "minItems": 1,
361
+ "uniqueItems": true,
362
+ "item": {
363
+ "$ref": "#/$defs/layer"
364
+ }
365
+ },
366
+ "tile_sources": {
367
+ "description": "Associated tile sources for the layer",
368
+ "type": "array",
369
+ "minItems": 1,
370
+ "uniqueItems": true,
371
+ "items": {
372
+ "type": "string"
373
+ }
374
+ },
375
+ "min_res": {
376
+ "description": "Minimum resolution",
377
+ "type": "number"
378
+ },
379
+ "max_res": {
380
+ "description": "Maximum resolution",
381
+ "type": "number"
382
+ },
383
+ "min_scale": {
384
+ "description": "Minimum scale",
385
+ "type": "number"
386
+ },
387
+ "max_scale": {
388
+ "description": "Maximum scale",
389
+ "type": "number"
390
+ },
391
+ "legendurl": {
392
+ "description": "URL to an image used as a legend for this layer",
393
+ "type": "string"
394
+ },
395
+ "md": {
396
+ "title": "md",
397
+ "description": "Additional metadata for this layer",
398
+ "type": "object"
399
+ },
400
+ "dimensions": {
401
+ "title": "dimensions",
402
+ "description": "Configure dimensions for the layer",
403
+ "type": "object",
404
+ "additionalProperties": {
405
+ "type": "object",
406
+ "additionalProperties": false,
407
+ "properties": {
408
+ "values": {
409
+ "type": "array",
410
+ "minItems": 1,
411
+ "item": {
412
+ "oneOf": [
413
+ {
414
+ "type": "string"
415
+ },
416
+ {
417
+ "type": "number"
418
+ }
419
+ ]
420
+ }
421
+ },
422
+ "default": {
423
+ "oneOf": [
424
+ {
425
+ "type": "string"
426
+ },
427
+ {
428
+ "type": "number"
429
+ }
430
+ ]
431
+ }
432
+ }
433
+ }
434
+ }
435
+ }
436
+ },
437
+
438
+ "cache": {
439
+ "title": "cache",
440
+ "type": "object",
441
+ "additionalProperties": false,
442
+ "properties": {
443
+ "sources": {
444
+ "description": "Sources of the cache",
445
+ "oneOf": [
446
+ {
447
+ "type": "string"
448
+ },
449
+ {
450
+ "type": "integer"
451
+ },
452
+ {
453
+ "type": "array",
454
+ "items": {
455
+ "oneOf": [
456
+ {
457
+ "type": "string"
458
+ },
459
+ {
460
+ "type": "integer"
461
+ }
462
+ ]
463
+ }
464
+ },
465
+ {
466
+ "title": "sources",
467
+ "type": "object",
468
+ "description": "Band merging config",
469
+ "properties": {
470
+ "r": {
471
+ "$ref": "#/$defs/bandMerge"
472
+ },
473
+ "g": {
474
+ "$ref": "#/$defs/bandMerge"
475
+ },
476
+ "b": {
477
+ "$ref": "#/$defs/bandMerge"
478
+ },
479
+ "l": {
480
+ "$ref": "#/$defs/bandMerge"
481
+ }
482
+ },
483
+ "additionalProperties": false
484
+ }
485
+ ]
486
+ },
487
+ "format": {
488
+ "description": "Internal image format",
489
+ "type": "string"
490
+ },
491
+ "request_format": {
492
+ "description": "Image format used in request",
493
+ "type": "string"
494
+ },
495
+ "link_single_color_images": {
496
+ "description": "How to store single color images",
497
+ "oneOf": [
498
+ {
499
+ "const": true
500
+ },
501
+ {
502
+ "const": "symlink"
503
+ },
504
+ {
505
+ "const": "hardlink"
506
+ }
507
+ ]
508
+ },
509
+ "minimize_meta_requests": {
510
+ "description": "Only issue a single request to the source",
511
+ "type": "boolean"
512
+ },
513
+ "watermark": {
514
+ "title": "watermark",
515
+ "description": "Watermark for cached tiles",
516
+ "type": "object",
517
+ "additionalProperties": false,
518
+ "required": ["text"],
519
+ "properties": {
520
+ "text": {
521
+ "type": "string"
522
+ },
523
+ "opacity": {
524
+ "type": "number"
525
+ },
526
+ "font_size": {
527
+ "type": "number"
528
+ },
529
+ "color": {
530
+ "oneOf": [
531
+ {
532
+ "type": "string"
533
+ },
534
+ {
535
+ "type": "array",
536
+ "minItems": 3,
537
+ "maxItems": 3,
538
+ "item": {
539
+ "type": "integer"
540
+ }
541
+ }
542
+ ]
543
+ },
544
+ "spacing": {
545
+ "const": "wide"
546
+ }
547
+ }
548
+ },
549
+ "grids": {
550
+ "description": "Grids used for storing by the cache",
551
+ "type": "array",
552
+ "item": {
553
+ "type": "string"
554
+ }
555
+ },
556
+ "meta_size": {
557
+ "$ref": "#/$defs/metaSize"
558
+ },
559
+ "meta_buffer": {
560
+ "$ref": "#/$defs/metaBuffer"
561
+ },
562
+ "bulk_meta_tiles": {
563
+ "description": "Enables bulk loading of meta tiles",
564
+ "type": "boolean"
565
+ },
566
+ "image": {
567
+ "title": "image",
568
+ "description": "Image options",
569
+ "type": "object"
570
+ },
571
+ "use_direct_from_level": {
572
+ "description": "Requests below this level will not be stored",
573
+ "type": "boolean"
574
+ },
575
+ "use_direct_from_res": {
576
+ "description": "Requests below this resolution will not be stored",
577
+ "type": "boolean"
578
+ },
579
+ "upscale_tiles": {
580
+ "description": "Upscale tiles by this many zoom levels if not available in cache",
581
+ "type": "integer"
582
+ },
583
+ "downscale_tiles": {
584
+ "description": "Downscale tiles by this many zoom levels if not available in cache",
585
+ "type": "integer"
586
+ },
587
+ "cache_rescaled_tiles": {
588
+ "description": "Cache rescaled tiles",
589
+ "type": "boolean"
590
+ },
591
+ "refresh_before": {
592
+ "title": "refresh_before",
593
+ "description": "Refresh tiles if requested before this time",
594
+ "type": "object"
595
+ },
596
+ "disable_storage": {
597
+ "description": "Do not use cache, get everything from source",
598
+ "type": "boolean"
599
+ },
600
+ "cache_dir": {
601
+ "description": "Directory to store data for this cache",
602
+ "type": "string"
603
+ },
604
+ "cache": {
605
+ "title": "cache",
606
+ "description": "Configure type of the cache"
607
+ }
608
+ },
609
+ "required": ["sources"]
610
+ },
611
+
612
+ "metaSize": {
613
+ "description": "Size of meta tile in tiles",
614
+ "type": "array",
615
+ "minItems": 2,
616
+ "maxItems": 2,
617
+ "item": {
618
+ "type": "integer"
619
+ }
620
+ },
621
+
622
+ "metaBuffer": {
623
+ "description": "Buffer around each meta tile",
624
+ "type": "integer"
625
+ },
626
+
627
+ "source": {
628
+ "title": "source",
629
+ "type": "object",
630
+ "properties": {
631
+ "type": {
632
+ "type": "string"
633
+ },
634
+ "layers": {},
635
+ "req": {
636
+ "title": "req",
637
+ "type": "object",
638
+ "properties": {
639
+ "layers": {}
640
+ }
641
+ }
642
+ },
643
+ "required": ["type"],
644
+
645
+ "if": {
646
+ "properties": {
647
+ "type": {
648
+ "const": "wms"
649
+ }
650
+ }
651
+ },
652
+ "then": {
653
+ "$ref": "#/$defs/source-wms"
654
+ }
655
+ },
656
+
657
+ "source-wms": {
658
+ "title": "source",
659
+ "type": "object",
660
+ "anyOf": [
661
+ {
662
+ "required": ["layers"]
663
+ },
664
+ {
665
+ "properties": {
666
+ "req": {
667
+ "title": "req",
668
+ "type": "object"
669
+ }
670
+ },
671
+ "required": ["req"]
672
+ }
673
+ ]
674
+ },
675
+
676
+ "metadata": {
677
+ "type": "object",
678
+ "additionalProperties": false,
679
+ "properties": {
680
+ "title": {
681
+ "type": "string"
682
+ },
683
+ "abstract": {
684
+ "type": "string"
685
+ },
686
+ "online_resource": {
687
+ "type": "string"
688
+ },
689
+ "contact": {
690
+ "title": "contact",
691
+ "type": "object",
692
+ "additionalProperties": false,
693
+ "properties": {
694
+ "person": {
695
+ "type": "string"
696
+ },
697
+ "position": {
698
+ "type": "string"
699
+ },
700
+ "organization": {
701
+ "type": "string"
702
+ },
703
+ "address": {
704
+ "type": "string"
705
+ },
706
+ "city": {
707
+ "type": "string"
708
+ },
709
+ "postcode": {
710
+ "oneOf": [
711
+ {
712
+ "type": "string"
713
+ },
714
+ {
715
+ "type": "integer"
716
+ }
717
+ ]
718
+ },
719
+ "state": {
720
+ "type": "string"
721
+ },
722
+ "country": {
723
+ "type": "string"
724
+ },
725
+ "phone": {
726
+ "type": "string"
727
+ },
728
+ "fax": {
729
+ "type": "string"
730
+ },
731
+ "email": {
732
+ "type": "string"
733
+ }
734
+ }
735
+ },
736
+ "access_constraints": {
737
+ "type": "string"
738
+ },
739
+ "fees": {
740
+ "type": "string"
741
+ },
742
+ "keyword_list": {
743
+ "type": "array",
744
+ "minItems": 1,
745
+ "items": {
746
+ "type": "object",
747
+ "additionalProperties": false,
748
+ "required": [
749
+ "keywords"
750
+ ],
751
+ "properties": {
752
+ "vocabulary": {
753
+ "type": "string"
754
+ },
755
+ "keywords": {
756
+ "type": "array",
757
+ "minItems": 1,
758
+ "items": {
759
+ "type": "string"
760
+ }
761
+ }
762
+ }
763
+ }
764
+ }
765
+ }
766
+ },
767
+
768
+ "bandMerge": {
769
+ "description": "Band merging configs",
770
+ "type": "array",
771
+ "minItems": 1,
772
+ "items": {
773
+ "title": "sources",
774
+ "type": "object",
775
+ "properties": {
776
+ "source": {
777
+ "oneOf": [
778
+ {
779
+ "description": "A source name",
780
+ "type": "string"
781
+ },
782
+ {
783
+ "description": "A source name",
784
+ "type": "integer"
785
+ },
786
+ {
787
+ "description": "An array of source names",
788
+ "type": "array",
789
+ "minItems": 1,
790
+ "items": {
791
+ "oneOf": [
792
+ {
793
+ "type": "string"
794
+ },
795
+ {
796
+ "type": "integer"
797
+ }
798
+ ]
799
+ }
800
+ }
801
+ ]
802
+ },
803
+ "band": {
804
+ "description": "The band index starting from 0",
805
+ "type": "integer"
806
+ },
807
+ "additionalProperties": false
808
+ },
809
+ "required": ["source", "band"]
810
+ }
811
+ }
812
+ }
813
+ }