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,598 @@
1
+ # #####################################################################
2
+ # MapProxy example configuration
3
+ # #####################################################################
4
+ #
5
+ # This is _not_ a runnable configuration, but it contains most
6
+ # available options in meaningful combinations.
7
+ #
8
+ # Use this file in addition to the documentation to see where and how
9
+ # things can be configured.
10
+
11
+
12
+ services:
13
+ demo:
14
+ kml:
15
+ # use the actual name of the grid as the grid identifier
16
+ # instead of the SRS code, e.g. /kml/mylayer/mygrid/
17
+ use_grid_names: true
18
+ tms:
19
+ # use the actual name of the grid as the grid identifier
20
+ # instead of the SRS code, e.g. /tms/1.0.0/mylayer/mygrid/
21
+ use_grid_names: true
22
+ # sets the tile origin to the north west corner, only works for
23
+ # tileservice at /tiles. TMS at /tms/1.0.0/ will still use
24
+ # south west as defined by the standard
25
+ origin: 'nw'
26
+
27
+ wmts:
28
+ # use restful access to WMTS
29
+ restful: true
30
+ # this is the default template for MapProxy
31
+ restful_template: '/{Layer}/{TileMatrixSet}/{TileMatrix}/{TileCol}/{TileRow}.{Format}'
32
+ # and also allow KVP requests
33
+ kvp: true
34
+ md:
35
+ # metadata used in capabilities documents for WMTS
36
+ # if the md option is not set, the metadata of the WMS will be used
37
+ title: MapProxy WMS Proxy
38
+ abstract: This is the fantastic MapProxy.
39
+ online_resource: http://mapproxy.org/
40
+ contact:
41
+ person: Your Name Here
42
+ position: Technical Director
43
+ organization:
44
+ address: Fakestreet 123
45
+ city: Somewhere
46
+ postcode: 12345
47
+ country: Germany
48
+ phone: +49(0)000-000000-0
49
+ fax: +49(0)000-000000-0
50
+ email: info@example.org
51
+ # multiline strings are possible with the right indention
52
+ access_constraints:
53
+ Insert license and copyright information for this service.
54
+ fees: 'None'
55
+
56
+ wms:
57
+ # only offer WMS 1.1.1
58
+ versions: ['1.1.1']
59
+
60
+ # supported SRS for this WMS
61
+ srs: ['EPSG:4326', 'EPSG:900913', 'EPSG:25832']
62
+
63
+ # force the layer extents (BBOX) to be displayed in this SRS
64
+ bbox_srs: ['EPSG:4326']
65
+
66
+ # limit the supported image formats.
67
+ image_formats: ['image/jpeg', 'image/png', 'image/gif', 'image/GeoTIFF', 'image/tiff']
68
+
69
+ # add attribution text in the lower-right corner.
70
+ attribution:
71
+ text: '(c) Acme'
72
+
73
+ # return an OGC service exception when one or more sources return errors
74
+ # or no response at all (e.g. timeout)
75
+ on_source_errors: raise
76
+
77
+ # maximum output size for a WMS requests in pixel, default is 4000 x 4000
78
+ # compares the product, eg. 3000x1000 pixel < 2000x2000 pixel and is still
79
+ # permitted
80
+ max_output_pixels: [2000, 2000]
81
+
82
+ # some WMS clients do not send all required parameters in feature info
83
+ # requests, MapProxy ignores these errors unless you set strict to true.
84
+ strict: true
85
+
86
+ # list of feature info types the server should offer
87
+ featureinfo_types: ['text', 'html', 'xml']
88
+
89
+ md:
90
+ # metadata used in capabilities documents
91
+ title: MapProxy WMS Proxy
92
+ abstract: This is the fantastic MapProxy.
93
+ online_resource: http://mapproxy.org/
94
+ contact:
95
+ person: Your Name Here
96
+ position: Technical Director
97
+ organization:
98
+ address: Fakestreet 123
99
+ city: Somewhere
100
+ postcode: 12345
101
+ country: Germany
102
+ phone: +49(0)000-000000-0
103
+ fax: +49(0)000-000000-0
104
+ email: info@example.org
105
+ # multiline strings are possible with the right indention
106
+ access_constraints:
107
+ Insert license and copyright information for this service.
108
+ fees: 'None'
109
+
110
+ layers:
111
+ # layer with minimal options
112
+ - name: osm
113
+ title: OSM
114
+ sources: [osm_cache]
115
+
116
+ # layer with multiple sources
117
+ - name: merged_layer
118
+ title: OSM merged
119
+ sources: [osm_cache, osm_cache_full_example]
120
+
121
+ # these layers supports the GetLegendGraphicRequest
122
+ - name: wms_legend
123
+ title: Layer with legendgraphic support
124
+ # legend graphics will work for cache sources and direct sources
125
+ sources: [legend_wms]
126
+ - name: wms_legend_static
127
+ title: Layer with a static LegendURL
128
+ # MapProxy ignores the legends from the sources of this layer
129
+ # if you configure a legendurl here
130
+ legendurl: http://localhost:42423/staticlegend_layer.png
131
+ # local legend images are supported as well
132
+ # legendurl: file://relative/staticlegend_layer.png
133
+ # legendurl: file:///absulute/staticlegend_layer.png
134
+ sources: [legend_wms]
135
+
136
+ # this layer uses extended metadata
137
+ - name: md_layer
138
+ title: WMS layer with extended metadata
139
+ sources: [osm_cache]
140
+ md:
141
+ abstract: Some abstract
142
+ keyword_list:
143
+ - vocabulary: Name of the vocabulary
144
+ keywords: [keyword1, keyword2]
145
+ - vocabulary: Name of another vocabulary
146
+ keywords: [keyword1, keyword2]
147
+ - keywords: ["keywords without vocabulary"]
148
+ attribution:
149
+ title: My attribution title
150
+ url: http://example.org/
151
+ logo:
152
+ url: http://example.org/logo.jpg
153
+ width: 100
154
+ height: 100
155
+ format: image/jpeg
156
+ identifier:
157
+ - url: http://example.org/
158
+ name: HKU1234
159
+ value: Some value
160
+ metadata:
161
+ - url: http://example.org/metadata2.xml
162
+ type: INSPIRE
163
+ format: application/xml
164
+ - url: http://example.org/metadata2.xml
165
+ type: ISO19115:2003
166
+ format: application/xml
167
+ data:
168
+ - url: http://example.org/datasets/test.shp
169
+ format: application/octet-stream
170
+ - url: http://example.org/datasets/test.gml
171
+ format: text/xml; subtype=gml/3.2.1
172
+ feature_list:
173
+ - url: http://example.org/datasets/test.pdf
174
+ format: application/pdf
175
+
176
+ # defines a layer with a min and max resolution. requests outside of the
177
+ # resolution result in a blank image
178
+ - name: resolution
179
+ title: Cache Layer with min/max resolution
180
+ # xx_res in meter/pixel
181
+ min_res: 10000
182
+ max_res: 10
183
+ sources: [osm_cache]
184
+
185
+ # nested/grouped layers
186
+ # 'Group Layer' has no name and GIS clients should display all sub-layers
187
+ # in this group.
188
+ # layer2 combines both layer2a and layer2b
189
+ - title: Group Layer
190
+ layers:
191
+ - name: layer1
192
+ title: layer 1
193
+ sources: [osm_cache]
194
+ - name: layer2
195
+ title: layer 2
196
+ layers:
197
+ - name: layer2a
198
+ title: layer 2a
199
+ sources: [osm_cache]
200
+ - name: layer2b
201
+ title: layer 2b
202
+ sources: [osm_cache]
203
+
204
+ # the childs of this group layer all use the same WMS.
205
+ # reference the layer as tagged source
206
+ - title: Example with tagged sources
207
+ layers:
208
+ - name: landusage
209
+ title: Landusage
210
+ sources: ['wms_source:landusage']
211
+ - name: roads
212
+ title: Roads and railways
213
+ sources: ['wms_source:roads,railways']
214
+ - name: buildings
215
+ title: Buildings
216
+ sources: ['wms_source:buildings']
217
+
218
+ # this layer will be reprojected from the source
219
+ - name: osm_utm
220
+ title: OSM in UTM
221
+ sources: [osm_utm_cache]
222
+
223
+ # layer with a mixed_mode cache image-format
224
+ - name: mixed_mode
225
+ title: cache with PNG and JPEG
226
+ sources: [mixed_cache]
227
+
228
+ # feature information layer
229
+ - name: feature_layer
230
+ title: feature information from source layers
231
+ # map images from osm_cache, feature info from feature_info_source
232
+ sources: [osm_cache, feature_info_source]
233
+
234
+ caches:
235
+ osm_cache:
236
+ # cache the results in two grids/projections
237
+ grids: [GLOBAL_MERCATOR, global_geodetic_sqrt2]
238
+ sources: [osm_wms]
239
+
240
+ osm_cache_full_example:
241
+ # request a meta tile, that consists of m x n tiles
242
+ meta_size: [5, 5]
243
+ # increase the size of each meta-tile request by n pixel in each direction
244
+ # this can solve cases where labels are cut-off at the edge of tiles
245
+ meta_buffer: 20
246
+ # image format for the cache, default format is image/png
247
+ format: image/jpeg
248
+ # the source will be requested in this format
249
+ request_format: image/tiff
250
+ # if set to true, MapProxy will store tiles that only
251
+ # contain a single color once
252
+ # not available on Windows
253
+ link_single_color_images: true
254
+ # allow to make 2 parallel requests to the sources for missing tiles
255
+ concurrent_tile_creators: 2
256
+ # level 0 - 13 will be cached, others are served directly from the source
257
+ use_direct_from_level: 14
258
+ grids: [grid_full_example]
259
+ # a list with all sources for this cache, MapProxy will merge multiple
260
+ # sources from left (bottom) to right (top)
261
+ sources: [osm_wms, overlay_full_example]
262
+ # add a watermark to each tile
263
+ watermark:
264
+ text: 'my watermark'
265
+ opacity: 100
266
+ font_size: 30
267
+
268
+ # mixed image mode cache
269
+ mixed_mode_cache:
270
+ # images with transparency will be stored as PNG, fully opaque images as JPEG.
271
+ # you need to set the request_format to image/png when using mixed-mode
272
+ format: mixed
273
+ request_format: image/png
274
+ # the source images should have transparency to make use of this
275
+ # feature, but any source will do
276
+ sources: [legend_wms]
277
+
278
+ # cache for reprojecting tiles
279
+ osm_utm_cache:
280
+ grids: [utm32n]
281
+ meta_size: [4, 4]
282
+ sources: [osm_cache_in]
283
+ osm_cache_in:
284
+ grids: [osm_grid]
285
+ # cache will not be stored locally
286
+ disable_storage: true
287
+ # a tile source you want to reproject
288
+ sources: [osm_source]
289
+
290
+ # mbtile cache:
291
+ mbtile_cache:
292
+ # leave the source-list empty if you use an existing MBTiles file
293
+ # and don't have a source
294
+ sources: []
295
+ grids: [GLOBAL_MERCATOR]
296
+ cache:
297
+ type: mbtiles
298
+ filename: /path/to/bluemarble.mbtiles
299
+
300
+ # filecache with a directory option.
301
+ file_cache:
302
+ cache:
303
+ type: file
304
+ # Directory where MapProxy should directly store the tiles
305
+ # You can use this option to point MapProxy to an existing tile collection
306
+ # This option does not add the cache or grid name to the path
307
+ directory: /path/to/preferred_dir/
308
+ # use a custom image format defined below
309
+ format: custom_format
310
+ grids: [GLOBAL_MERCATOR]
311
+ # multiple sources, use the secure_source as overlay
312
+ sources: [osm_wms, secure_source]
313
+
314
+ # couchdb cache
315
+ couchdb_cache:
316
+ cache:
317
+ type: couchdb
318
+ url: http://localhost:5984
319
+ db_name: couchdb_cache
320
+ tile_id: "%(grid_name)s-%(z)d-%(x)d-%(y)d"
321
+ # additional metadata that will be stored with each tile
322
+ tile_metadata:
323
+ mydata: myvalue
324
+ tile_col: '{{x}}'
325
+ tile_row: '{{y}}'
326
+ tile_level: '{{z}}'
327
+ created_ts: '{{timestamp}}'
328
+ created: '{{utc_iso}}'
329
+ center: '{{wgs_tile_centroid}}'
330
+ grids: [GLOBAL_MERCATOR]
331
+ sources: [osm_wms]
332
+ riak_cache:
333
+ grid: [GLOBAL_MERCATOR]
334
+ sources: [osm_wms]
335
+ cache:
336
+ type: riak
337
+ bucket: tile_bucket
338
+ protocol: pbc
339
+ default_ports:
340
+ pb: 8087
341
+ http: 8098
342
+ nodes:
343
+ - host: 1.example.com
344
+ pb_port: 9999
345
+ - host: 2.example.com
346
+ - host: 3.example.com
347
+ http_port: 8888
348
+
349
+ sources:
350
+ # minimal WMS source
351
+ osm_wms:
352
+ type: wms
353
+ req:
354
+ url: http://example.org/service?
355
+ layers: osm
356
+
357
+ # WMS source for use with tagged sources
358
+ wms_source:
359
+ type: wms
360
+ req:
361
+ url: http://example.org/service?
362
+ # you can remove `layer` when using this source as
363
+ # tagged source, or you can list all available layers.
364
+ # in this case MapProxy will check the layernames when
365
+ # you reference this source.
366
+ layers: roads,railways,landusage,buildings
367
+
368
+ # source with GetLegendGraphic support
369
+ legend_wms:
370
+ type: wms
371
+ # requests for other SRS will be reprojected from these SRS
372
+ supported_srs: ['EPSG:3857', 'EPSG:4326']
373
+ wms_opts:
374
+ # request the source with the specific version
375
+ version: '1.3.0'
376
+ # enable legend graphic
377
+ legendgraphic: True
378
+ req:
379
+ url: http://localhost:42423/service?
380
+ layers: foo,bar
381
+
382
+ # tile-based source, use the type tile to request data from from existing
383
+ # tile servers like TileCache and GeoWebCache.
384
+ osm_source:
385
+ type: tile
386
+ grid: osm_grid
387
+ url: https://tile.openstreetmap.org/%(z)s/%(x)s/%(y)s.png
388
+
389
+ # limit the source to the given min and max resolution or scale.
390
+ # MapProxy will return a blank image for requests outside of these boundaries
391
+ wms_resolution:
392
+ type: wms
393
+ min_res: 10000
394
+ max_res: 10
395
+ req:
396
+ url: http://localhost:42423/service?
397
+ layers: scalelayer
398
+
399
+ # with coverages you can define areas where data is available
400
+ # or where data you are interested in is
401
+ coverage_source:
402
+ type: wms
403
+ req:
404
+ url: http://localhost:42423/service?
405
+ layers: base
406
+ coverage:
407
+ bbox: [5, 50, 10, 55]
408
+ srs: 'EPSG:4326'
409
+ # you can also use Shapefile/GeoJSON/PostGIS/etc.
410
+ # coverage:
411
+ # datasource: path/to/shapefile.shp
412
+ # where: "COUNTRY = 'Germany'"
413
+ # srs: 'EPSG:4326'
414
+
415
+
416
+ # WMS source that requires authentication, MapProxy has support for
417
+ # HTTP Basic Authentication and HTTP Digest Authentication
418
+ secure_source:
419
+ type: wms
420
+ http:
421
+ # You can either disable the certificate verification fro HTTPS
422
+ ssl_no_cert_checks: true
423
+ # or point MapProxy to the SSL certificate chain on your system
424
+ # ssl_ca_certs: /etc/ssl/certs/ca-certificates.crt
425
+ req:
426
+ # username and password are extracted from the URL and do not show
427
+ # up in log files
428
+ url: https://username:mypassword@example.org/service?
429
+ transparent: true
430
+ layers: securelayer
431
+
432
+ # WMS source that requires authentication and session management
433
+ # through HTTP cookies
434
+ session_source:
435
+ type: wms
436
+ http:
437
+ # Accept session cookies and forward on subsequent requests
438
+ manage_cookies: true
439
+ # Use basic auth header directly
440
+ headers:
441
+ Authorization: Basic YWRtaW46Z2Vvc2VydmVy
442
+ req:
443
+ url: https://my-service.com/service?
444
+ transparent: true
445
+ layers: securelayer
446
+
447
+ feature_info_source:
448
+ type: wms
449
+ wms_opts:
450
+ # just query feature informations and no map
451
+ map: false
452
+ featureinfo: true
453
+ req:
454
+ url: http://localhost:42423/service?
455
+ layers: foo,bar,baz
456
+
457
+ mapserver_source:
458
+ type: mapserver
459
+ req:
460
+ # path to Mapserver mapfile instead of URL
461
+ map: /path/to/my.map
462
+ layers: base
463
+ mapserver:
464
+ binary: /usr/cgi-bin/mapserv
465
+ working_dir: /path/to
466
+
467
+ mapnik_source:
468
+ type: mapnik
469
+ mapfile: /path/to/mapnik.xml
470
+ layers: foo, bar
471
+ transparent: true
472
+
473
+ # source used as overlay for different layers
474
+ overlay_full_example:
475
+ type: wms
476
+ # allow up to 4 concurrent requests to this source
477
+ concurrent_requests: 4
478
+ wms_opts:
479
+ version: 1.3.0
480
+ featureinfo: true
481
+ supported_srs: ['EPSG:4326', 'EPSG:31467']
482
+ supported_formats: ['image/tiff', 'image/jpeg']
483
+ http:
484
+ # defines how long MapProxy should wait for data from source servers
485
+ client_timeout: 600 # seconds
486
+ # add additional HTTP headers to all requests to your sources.
487
+ headers:
488
+ my-header: value
489
+ req:
490
+ url: https://user:password@example.org:81/service?
491
+ layers: roads,rails
492
+ transparent: true
493
+ # additional options passed to the WMS source
494
+ styles: base,base
495
+ map: /home/map/mapserver.map
496
+
497
+ grids:
498
+ global_geodetic_sqrt2:
499
+ # base the grid on the options of another grid you already defined
500
+ base: GLOBAL_GEODETIC
501
+ res_factor: 'sqrt2'
502
+
503
+ utm32n:
504
+ srs: 'EPSG:25832'
505
+ bbox: [4, 46, 16, 56]
506
+ # let MapProxy transform the bbox to the grid SRS
507
+ bbox_srs: 'EPSG:4326'
508
+ origin: 'nw'
509
+ # resolution of level 0
510
+ min_res: 5700
511
+ num_levels: 14
512
+
513
+ osm_grid:
514
+ base: GLOBAL_MERCATOR
515
+ srs: 'EPSG:3857'
516
+ origin: nw
517
+
518
+ grid_full_example:
519
+ # default tile size is 256 x 256 pixel
520
+ tile_size: [512, 512]
521
+ srs: 'EPSG:3857'
522
+ bbox: [5, 45, 15, 55]
523
+ bbox_srs: 'EPSG:4326'
524
+ # the resolution of the first and last level
525
+ min_res: 2000 #m/px
526
+ max_res: 50 #m/px
527
+ align_resolutions_with: GLOBAL_MERCATOR
528
+
529
+ res_grid:
530
+ srs: 'EPSG:4326'
531
+ bbox: [4, 46, 16, 56]
532
+ origin: nw
533
+ # resolutions created from scales with
534
+ # % mapproxy-util scales --unit d --as-res-config --dpi 72 100000 50000 25000 12500 8000 5000
535
+ res: [
536
+ # res level scale @72.0 DPI
537
+ 0.0003169057, # 0 100000.00000000
538
+ 0.0001584528, # 1 50000.00000000
539
+ 0.0000792264, # 2 25000.00000000
540
+ 0.0000396132, # 3 12500.00000000
541
+ 0.0000253525, # 4 8000.00000000
542
+ 0.0000158453, # 5 5000.00000000
543
+ ]
544
+
545
+ globals:
546
+ srs:
547
+ # override system projection file
548
+ proj_data_dir: '/path to dir that contains epsg file'
549
+
550
+ # cache options
551
+ cache:
552
+ # where to store the cached images
553
+ base_dir: './cache_data'
554
+ # where to store lockfiles for concurrent_requests
555
+ lock_dir: './cache_data/locks'
556
+ # where to store lockfiles for tile creation
557
+ tile_lock_dir: './cache_data/tile_locks'
558
+
559
+ # request x*y tiles in one step
560
+ meta_size: [4, 4]
561
+ # add a buffer on all sides (in pixel) when requesting
562
+ # new images
563
+ meta_buffer: 80
564
+
565
+
566
+ # image/transformation options
567
+ image:
568
+ # use best resampling for vector data
569
+ resampling_method: bicubic # nearest/bilinear
570
+ # stretch cached images by this factor before
571
+ # using the next level
572
+ stretch_factor: 1.15
573
+ # shrink cached images up to this factor before
574
+ # returning an empty image (for the first level)
575
+ max_shrink_factor: 4.0
576
+
577
+ # Enable 24bit PNG images. Defaults to true (8bit PNG)
578
+ paletted: false
579
+ formats:
580
+ custom_format:
581
+ format: image/png
582
+ # the custom format will be stored as 8bit PNG
583
+ mode: P
584
+ colors: 32
585
+ transparent: true
586
+ encoding_options:
587
+ # The algorithm used to quantize (reduce) the image colors
588
+ quantizer: fastoctree
589
+ # edit an existing format
590
+ image/jpeg:
591
+ encoding_options:
592
+ # jpeg quality [0-100]
593
+ jpeg_quality: 60
594
+
595
+ # background map of the demo service
596
+ background:
597
+ # tile source in ZXY format
598
+ url: "https://tile.openstreetmap.org/{z}/{x}/{y}.png"
@@ -0,0 +1,79 @@
1
+ # #####################################################################
2
+ # MapProxy example seed configuration
3
+ # #####################################################################
4
+ #
5
+ # This is _not_ a runnable configuration, but it contains most
6
+ # available options in meaningful combinations.
7
+ #
8
+ # Use this file in addition to the documentation to see where and how
9
+ # things can be configured.
10
+
11
+ seeds:
12
+ myseed1:
13
+ # seed all grids of this cache
14
+ caches: [osm_cache]
15
+ levels:
16
+ to: 10
17
+ refresh_before:
18
+ # re-generate tiles older than this date
19
+ time: 2013-10-10T12:35:00
20
+
21
+ myseed2:
22
+ # seed two caches, but only GLOBAL_GEODETIC grid
23
+ caches: [cache1, cache2]
24
+ grids: [GLOBAL_GEODETIC]
25
+ levels:
26
+ to: 14
27
+ refresh_before:
28
+ # re-generate tiles older than the modification time
29
+ # of this file. on linux/unix use `touch` to change the time.
30
+ mtime: ./reseed.time
31
+
32
+ cleanups:
33
+ cleanup_older_tiles:
34
+ caches: [osm_cache]
35
+ remove_before:
36
+ days: 30
37
+ levels:
38
+ from: 16
39
+
40
+ remove_complete_levels:
41
+ caches: [cache1]
42
+ # remove all tiles regardless of the timestamp.
43
+ # will remove the complete level directory for `file` caches
44
+ remove_all: true
45
+ levels: [14, 18, 19, 20]
46
+
47
+ remove_changes:
48
+ caches: [cache1]
49
+ # be careful when using cleanup with coverages, since it needs to check
50
+ # every possible tile in this coverage (as reported by
51
+ # `mapproxy-util grids --coverage`). only use small coverages and/or limit
52
+ # levels
53
+ coverages: [changed_area]
54
+ # without remove_before: remove all tiles created before you called
55
+ # mapproxy-seed. i.e. tiles created before with in this seed run
56
+ # are not removed
57
+ levels:
58
+ from: 14
59
+ to: 17
60
+
61
+ coverages:
62
+ germany:
63
+ # any source supported by OGR
64
+ datasource: 'shps/world_boundaries_m.shp'
65
+ where: 'CNTRY_NAME = "Germany"'
66
+ srs: 'EPSG:3857'
67
+ austria:
68
+ # simple bbox
69
+ bbox: [9.36, 46.33, 17.28, 49.09]
70
+ srs: "EPSG:4326"
71
+ switzerland:
72
+ # text file with WKT (Multi)Polygons
73
+ datasource: 'polygons/SZ.txt'
74
+ srs: "EPSG:3857"
75
+ changed_area:
76
+ # example with PostGIS query
77
+ datasource: "PG: dbname='db' host='host' user='user' password='password'"
78
+ where: "select * from last_changes"
79
+ srs: 'EPSG:3857'
@@ -0,0 +1,35 @@
1
+ [loggers]
2
+ keys=root,source_requests
3
+
4
+ [handlers]
5
+ keys=mapproxy,source_requests
6
+
7
+ [formatters]
8
+ keys=default,requests
9
+
10
+ [logger_root]
11
+ level=INFO
12
+ handlers=mapproxy
13
+
14
+ [logger_source_requests]
15
+ level=INFO
16
+ qualname=mapproxy.source.request
17
+ # propagate=0 -> do not show up in logger_root
18
+ propagate=0
19
+ handlers=source_requests
20
+
21
+ [handler_mapproxy]
22
+ class=FileHandler
23
+ formatter=default
24
+ args=(r"%(here)s/mapproxy.log", "a")
25
+
26
+ [handler_source_requests]
27
+ class=FileHandler
28
+ formatter=requests
29
+ args=(r"%(here)s/source-requests.log", "a")
30
+
31
+ [formatter_default]
32
+ format=%(asctime)s - %(levelname)s - %(name)s - %(message)s
33
+
34
+ [formatter_requests]
35
+ format=[%(asctime)s] %(message)s