@loaders.gl/wms 3.3.2 → 3.4.0-alpha.2

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 (404) hide show
  1. package/dist/csw-capabilities-loader.d.ts +29 -0
  2. package/dist/csw-capabilities-loader.d.ts.map +1 -0
  3. package/dist/csw-capabilities-loader.js +31 -0
  4. package/dist/csw-domain-loader.d.ts +28 -0
  5. package/dist/csw-domain-loader.d.ts.map +1 -0
  6. package/dist/csw-domain-loader.js +31 -0
  7. package/dist/csw-records-loader.d.ts +12 -0
  8. package/dist/csw-records-loader.d.ts.map +1 -0
  9. package/dist/csw-records-loader.js +30 -0
  10. package/dist/dist.min.js +3781 -4001
  11. package/dist/es5/csw-capabilities-loader.js +55 -0
  12. package/dist/es5/csw-capabilities-loader.js.map +1 -0
  13. package/dist/es5/csw-domain-loader.js +54 -0
  14. package/dist/es5/csw-domain-loader.js.map +1 -0
  15. package/dist/es5/csw-records-loader.js +52 -0
  16. package/dist/es5/csw-records-loader.js.map +1 -0
  17. package/dist/es5/{wip/gml-loader.js → gml-loader.js} +3 -3
  18. package/dist/es5/gml-loader.js.map +1 -0
  19. package/dist/es5/index.js +43 -8
  20. package/dist/es5/index.js.map +1 -1
  21. package/dist/es5/lerc-loader.js +1 -1
  22. package/dist/es5/lerc-loader.js.map +1 -1
  23. package/dist/es5/lib/{data-sources/create-image-source.js → create-image-source.js} +4 -4
  24. package/dist/es5/lib/create-image-source.js.map +1 -0
  25. package/dist/es5/lib/parsers/csw/parse-csw-capabilities.js +24 -0
  26. package/dist/es5/lib/parsers/csw/parse-csw-capabilities.js.map +1 -0
  27. package/dist/es5/lib/parsers/csw/parse-csw-domain.js +42 -0
  28. package/dist/es5/lib/parsers/csw/parse-csw-domain.js.map +1 -0
  29. package/dist/es5/lib/parsers/csw/parse-csw-records.js +76 -0
  30. package/dist/es5/lib/parsers/csw/parse-csw-records.js.map +1 -0
  31. package/dist/es5/lib/parsers/csw/parse-exception-report.js +18 -0
  32. package/dist/es5/lib/parsers/csw/parse-exception-report.js.map +1 -0
  33. package/dist/es5/lib/parsers/gml/deep-strict-equal.js.map +1 -0
  34. package/dist/es5/lib/parsers/gml/parse-gml.js.map +1 -0
  35. package/dist/es5/lib/parsers/lerc/lerc-types.js.map +1 -0
  36. package/dist/es5/lib/{wms/parse-wms.js → parsers/wms/parse-wms-capabilities.js} +1 -42
  37. package/dist/es5/lib/parsers/wms/parse-wms-capabilities.js.map +1 -0
  38. package/dist/es5/lib/parsers/wms/parse-wms-error.js +16 -0
  39. package/dist/es5/lib/parsers/wms/parse-wms-error.js.map +1 -0
  40. package/dist/es5/lib/parsers/wms/parse-wms-features.js +33 -0
  41. package/dist/es5/lib/parsers/wms/parse-wms-features.js.map +1 -0
  42. package/dist/es5/lib/parsers/wms/parse-wms-layer-description.js +13 -0
  43. package/dist/es5/lib/parsers/wms/parse-wms-layer-description.js.map +1 -0
  44. package/dist/es5/lib/{data-sources/image-services → services/arcgis}/arcgis-image-service.js +36 -29
  45. package/dist/es5/lib/services/arcgis/arcgis-image-service.js.map +1 -0
  46. package/dist/es5/lib/services/arcgis/arcgis-server.js +115 -0
  47. package/dist/es5/lib/services/arcgis/arcgis-server.js.map +1 -0
  48. package/dist/es5/lib/{data-sources/adhoc-image-service.js → services/generic/image-service.js} +22 -19
  49. package/dist/es5/lib/services/generic/image-service.js.map +1 -0
  50. package/dist/es5/lib/services/generic/tile-service.js +2 -0
  51. package/dist/es5/lib/services/generic/tile-service.js.map +1 -0
  52. package/dist/es5/lib/services/ogc/csw-service.js +384 -0
  53. package/dist/es5/lib/services/ogc/csw-service.js.map +1 -0
  54. package/dist/es5/lib/{data-sources/image-services → services/ogc}/wms-service.js +163 -115
  55. package/dist/es5/lib/services/ogc/wms-service.js.map +1 -0
  56. package/dist/es5/lib/services/ogc/wmts-service.ts.disabled +348 -0
  57. package/dist/es5/lib/sources/data-source.js +44 -0
  58. package/dist/es5/lib/sources/data-source.js.map +1 -0
  59. package/dist/es5/lib/sources/image-source.js +26 -0
  60. package/dist/es5/lib/sources/image-source.js.map +1 -0
  61. package/dist/es5/lib/sources/tile-source.js +26 -0
  62. package/dist/es5/lib/sources/tile-source.js.map +1 -0
  63. package/dist/es5/lib/sources/utils/utils.js +40 -0
  64. package/dist/es5/lib/sources/utils/utils.js.map +1 -0
  65. package/dist/es5/{lib/wfs/parse-wfs.js → wip/lib/wcs/parse-wcs-capabilities.js} +7 -29
  66. package/dist/es5/wip/lib/wcs/parse-wcs-capabilities.js.map +1 -0
  67. package/dist/es5/{lib/wcs/parse-wcs.js → wip/lib/wfs/parse-wfs-capabilities.js} +7 -28
  68. package/dist/es5/wip/lib/wfs/parse-wfs-capabilities.js.map +1 -0
  69. package/dist/es5/{lib/wmts/parse-wmts.js → wip/lib/wmts/parse-wmts-capabilities.js} +7 -28
  70. package/dist/es5/wip/lib/wmts/parse-wmts-capabilities.js.map +1 -0
  71. package/dist/es5/wip/wcs-capabilities-loader.js +4 -4
  72. package/dist/es5/wip/wcs-capabilities-loader.js.map +1 -1
  73. package/dist/es5/wip/wfs-capabilities-loader.js +4 -4
  74. package/dist/es5/wip/wfs-capabilities-loader.js.map +1 -1
  75. package/dist/es5/wip/wms-feature-info-loader.js +3 -3
  76. package/dist/es5/wip/wms-feature-info-loader.js.map +1 -1
  77. package/dist/es5/wip/wms-layer-description-loader.js +3 -3
  78. package/dist/es5/wip/wms-layer-description-loader.js.map +1 -1
  79. package/dist/es5/wip/wmts-capabilities-loader.js +10 -4
  80. package/dist/es5/wip/wmts-capabilities-loader.js.map +1 -1
  81. package/dist/es5/wms-capabilities-loader.js +5 -4
  82. package/dist/es5/wms-capabilities-loader.js.map +1 -1
  83. package/dist/es5/wms-error-loader.js +3 -3
  84. package/dist/es5/wms-error-loader.js.map +1 -1
  85. package/dist/esm/csw-capabilities-loader.js +26 -0
  86. package/dist/esm/csw-capabilities-loader.js.map +1 -0
  87. package/dist/esm/csw-domain-loader.js +25 -0
  88. package/dist/esm/csw-domain-loader.js.map +1 -0
  89. package/dist/esm/csw-records-loader.js +24 -0
  90. package/dist/esm/csw-records-loader.js.map +1 -0
  91. package/dist/esm/{wip/gml-loader.js → gml-loader.js} +3 -3
  92. package/dist/esm/gml-loader.js.map +1 -0
  93. package/dist/esm/index.js +16 -8
  94. package/dist/esm/index.js.map +1 -1
  95. package/dist/esm/lerc-loader.js +1 -1
  96. package/dist/esm/lerc-loader.js.map +1 -1
  97. package/dist/esm/lib/{data-sources/create-image-source.js → create-image-source.js} +4 -4
  98. package/dist/esm/lib/create-image-source.js.map +1 -0
  99. package/dist/esm/lib/parsers/csw/parse-csw-capabilities.js +19 -0
  100. package/dist/esm/lib/parsers/csw/parse-csw-capabilities.js.map +1 -0
  101. package/dist/esm/lib/parsers/csw/parse-csw-domain.js +25 -0
  102. package/dist/esm/lib/parsers/csw/parse-csw-domain.js.map +1 -0
  103. package/dist/esm/lib/parsers/csw/parse-csw-records.js +46 -0
  104. package/dist/esm/lib/parsers/csw/parse-csw-records.js.map +1 -0
  105. package/dist/esm/lib/parsers/csw/parse-exception-report.js +13 -0
  106. package/dist/esm/lib/parsers/csw/parse-exception-report.js.map +1 -0
  107. package/dist/esm/lib/parsers/gml/deep-strict-equal.js.map +1 -0
  108. package/dist/esm/lib/parsers/gml/parse-gml.js.map +1 -0
  109. package/dist/esm/lib/parsers/lerc/lerc-types.js.map +1 -0
  110. package/dist/esm/lib/{wms/parse-wms.js → parsers/wms/parse-wms-capabilities.js} +1 -37
  111. package/dist/esm/lib/parsers/wms/parse-wms-capabilities.js.map +1 -0
  112. package/dist/esm/lib/parsers/wms/parse-wms-error.js +12 -0
  113. package/dist/esm/lib/parsers/wms/parse-wms-error.js.map +1 -0
  114. package/dist/esm/lib/parsers/wms/parse-wms-features.js +27 -0
  115. package/dist/esm/lib/parsers/wms/parse-wms-features.js.map +1 -0
  116. package/dist/esm/lib/parsers/wms/parse-wms-layer-description.js +9 -0
  117. package/dist/esm/lib/parsers/wms/parse-wms-layer-description.js.map +1 -0
  118. package/dist/esm/lib/services/arcgis/arcgis-image-service.js +67 -0
  119. package/dist/esm/lib/services/arcgis/arcgis-image-service.js.map +1 -0
  120. package/dist/esm/lib/services/arcgis/arcgis-server.js +35 -0
  121. package/dist/esm/lib/services/arcgis/arcgis-server.js.map +1 -0
  122. package/dist/esm/lib/{data-sources/adhoc-image-service.js → services/generic/image-service.js} +13 -10
  123. package/dist/esm/lib/services/generic/image-service.js.map +1 -0
  124. package/dist/esm/lib/services/generic/tile-service.js +2 -0
  125. package/dist/esm/lib/services/generic/tile-service.js.map +1 -0
  126. package/dist/esm/lib/services/ogc/csw-service.js +162 -0
  127. package/dist/esm/lib/services/ogc/csw-service.js.map +1 -0
  128. package/dist/esm/lib/{data-sources/image-services → services/ogc}/wms-service.js +40 -34
  129. package/dist/esm/lib/services/ogc/wms-service.js.map +1 -0
  130. package/dist/esm/lib/services/ogc/wmts-service.ts.disabled +348 -0
  131. package/dist/esm/lib/sources/data-source.js +29 -0
  132. package/dist/esm/lib/sources/data-source.js.map +1 -0
  133. package/dist/esm/lib/sources/image-source.js +6 -0
  134. package/dist/esm/lib/sources/image-source.js.map +1 -0
  135. package/dist/esm/lib/sources/tile-source.js +6 -0
  136. package/dist/esm/lib/sources/tile-source.js.map +1 -0
  137. package/dist/esm/lib/sources/utils/utils.js +26 -0
  138. package/dist/esm/lib/sources/utils/utils.js.map +1 -0
  139. package/dist/esm/wip/lib/wcs/parse-wcs-capabilities.js +16 -0
  140. package/dist/esm/wip/lib/wcs/parse-wcs-capabilities.js.map +1 -0
  141. package/dist/esm/wip/lib/wfs/parse-wfs-capabilities.js +17 -0
  142. package/dist/esm/wip/lib/wfs/parse-wfs-capabilities.js.map +1 -0
  143. package/dist/esm/wip/lib/wmts/parse-wmts-capabilities.js +17 -0
  144. package/dist/esm/wip/lib/wmts/parse-wmts-capabilities.js.map +1 -0
  145. package/dist/esm/wip/wcs-capabilities-loader.js +4 -4
  146. package/dist/esm/wip/wcs-capabilities-loader.js.map +1 -1
  147. package/dist/esm/wip/wfs-capabilities-loader.js +2 -2
  148. package/dist/esm/wip/wfs-capabilities-loader.js.map +1 -1
  149. package/dist/esm/wip/wms-feature-info-loader.js +1 -2
  150. package/dist/esm/wip/wms-feature-info-loader.js.map +1 -1
  151. package/dist/esm/wip/wms-layer-description-loader.js +1 -2
  152. package/dist/esm/wip/wms-layer-description-loader.js.map +1 -1
  153. package/dist/esm/wip/wmts-capabilities-loader.js +4 -2
  154. package/dist/esm/wip/wmts-capabilities-loader.js.map +1 -1
  155. package/dist/esm/wms-capabilities-loader.js +3 -2
  156. package/dist/esm/wms-capabilities-loader.js.map +1 -1
  157. package/dist/esm/wms-error-loader.js +2 -2
  158. package/dist/esm/wms-error-loader.js.map +1 -1
  159. package/dist/gml-loader.d.ts.map +1 -0
  160. package/dist/{wip/gml-loader.js → gml-loader.js} +2 -2
  161. package/dist/index.d.ts +25 -16
  162. package/dist/index.d.ts.map +1 -1
  163. package/dist/index.js +26 -14
  164. package/dist/lerc-loader.d.ts +1 -1
  165. package/dist/lerc-loader.d.ts.map +1 -1
  166. package/dist/lib/create-image-source.d.ts +17 -0
  167. package/dist/lib/create-image-source.d.ts.map +1 -0
  168. package/dist/lib/{data-sources/create-image-source.js → create-image-source.js} +5 -5
  169. package/dist/lib/{wmts/wmts-types.d.ts → parsers/csw/parse-csw-capabilities.d.ts} +9 -3
  170. package/dist/lib/parsers/csw/parse-csw-capabilities.d.ts.map +1 -0
  171. package/dist/lib/parsers/csw/parse-csw-capabilities.js +24 -0
  172. package/dist/lib/parsers/csw/parse-csw-domain.d.ts +17 -0
  173. package/dist/lib/parsers/csw/parse-csw-domain.d.ts.map +1 -0
  174. package/dist/lib/parsers/csw/parse-csw-domain.js +33 -0
  175. package/dist/lib/parsers/csw/parse-csw-records.d.ts +33 -0
  176. package/dist/lib/parsers/csw/parse-csw-records.d.ts.map +1 -0
  177. package/dist/lib/parsers/csw/parse-csw-records.js +58 -0
  178. package/dist/lib/parsers/csw/parse-exception-report.d.ts +6 -0
  179. package/dist/lib/parsers/csw/parse-exception-report.d.ts.map +1 -0
  180. package/dist/lib/parsers/csw/parse-exception-report.js +30 -0
  181. package/dist/lib/parsers/gml/deep-strict-equal.d.ts.map +1 -0
  182. package/dist/lib/parsers/gml/parse-gml.d.ts.map +1 -0
  183. package/dist/lib/parsers/lerc/lerc-types.d.ts.map +1 -0
  184. package/dist/lib/{wms/wms-types.d.ts → parsers/wms/parse-wms-capabilities.d.ts} +6 -19
  185. package/dist/lib/parsers/wms/parse-wms-capabilities.d.ts.map +1 -0
  186. package/dist/lib/{wms/wms-types.js → parsers/wms/parse-wms-capabilities.js} +61 -1
  187. package/dist/lib/parsers/wms/parse-wms-error.d.ts +8 -0
  188. package/dist/lib/parsers/wms/parse-wms-error.d.ts.map +1 -0
  189. package/dist/lib/parsers/wms/parse-wms-error.js +22 -0
  190. package/dist/lib/parsers/wms/parse-wms-features.d.ts +20 -0
  191. package/dist/lib/parsers/wms/parse-wms-features.d.ts.map +1 -0
  192. package/dist/lib/parsers/wms/parse-wms-features.js +27 -0
  193. package/dist/lib/parsers/wms/parse-wms-layer-description.d.ts +10 -0
  194. package/dist/lib/parsers/wms/parse-wms-layer-description.d.ts.map +1 -0
  195. package/dist/lib/parsers/wms/parse-wms-layer-description.js +15 -0
  196. package/dist/lib/{data-sources/image-services → services/arcgis}/arcgis-image-service.d.ts +25 -13
  197. package/dist/lib/services/arcgis/arcgis-image-service.d.ts.map +1 -0
  198. package/dist/lib/{data-sources → services/arcgis}/arcgis-image-service.js +33 -23
  199. package/dist/lib/services/arcgis/arcgis-server.d.ts +15 -0
  200. package/dist/lib/services/arcgis/arcgis-server.d.ts.map +1 -0
  201. package/dist/lib/services/arcgis/arcgis-server.js +42 -0
  202. package/dist/lib/{data-sources/image-services → services/generic}/image-service.d.ts +3 -13
  203. package/dist/lib/services/generic/image-service.d.ts.map +1 -0
  204. package/dist/lib/{data-sources/adhoc-image-service.js → services/generic/image-service.js} +12 -10
  205. package/dist/lib/services/generic/tile-service.d.ts +1 -0
  206. package/dist/lib/services/generic/tile-service.d.ts.map +1 -0
  207. package/dist/lib/services/generic/tile-service.js +1 -0
  208. package/dist/lib/services/ogc/csw-service.d.ts +115 -0
  209. package/dist/lib/services/ogc/csw-service.d.ts.map +1 -0
  210. package/dist/lib/services/ogc/csw-service.js +170 -0
  211. package/dist/lib/{data-sources/image-services → services/ogc}/wms-service.d.ts +41 -22
  212. package/dist/lib/services/ogc/wms-service.d.ts.map +1 -0
  213. package/dist/lib/{data-sources/image-services → services/ogc}/wms-service.js +41 -28
  214. package/dist/lib/sources/data-source.d.ts +22 -0
  215. package/dist/lib/sources/data-source.d.ts.map +1 -0
  216. package/dist/lib/sources/data-source.js +34 -0
  217. package/dist/lib/{data-sources → sources}/image-source.d.ts +4 -1
  218. package/dist/lib/sources/image-source.d.ts.map +1 -0
  219. package/dist/lib/{data-sources → sources}/image-source.js +2 -1
  220. package/dist/lib/sources/tile-source.d.ts +54 -0
  221. package/dist/lib/sources/tile-source.d.ts.map +1 -0
  222. package/dist/lib/sources/tile-source.js +13 -0
  223. package/dist/lib/sources/utils/utils.d.ts +13 -0
  224. package/dist/lib/sources/utils/utils.d.ts.map +1 -0
  225. package/dist/lib/sources/utils/utils.js +38 -0
  226. package/dist/{lib/wfs/wfs-types.d.ts → wip/lib/wcs/parse-wcs-capabilities.d.ts} +8 -3
  227. package/dist/wip/lib/wcs/parse-wcs-capabilities.d.ts.map +1 -0
  228. package/dist/wip/lib/wcs/parse-wcs-capabilities.js +15 -0
  229. package/dist/{lib/wcs/wcs-types.d.ts → wip/lib/wfs/parse-wfs-capabilities.d.ts} +6 -1
  230. package/dist/wip/lib/wfs/parse-wfs-capabilities.d.ts.map +1 -0
  231. package/dist/wip/lib/wfs/parse-wfs-capabilities.js +19 -0
  232. package/dist/wip/lib/wmts/parse-wmts-capabilities.d.ts +87 -0
  233. package/dist/wip/lib/wmts/parse-wmts-capabilities.d.ts.map +1 -0
  234. package/dist/wip/lib/wmts/parse-wmts-capabilities.js +77 -0
  235. package/dist/wip/wcs-capabilities-loader.d.ts +4 -3
  236. package/dist/wip/wcs-capabilities-loader.d.ts.map +1 -1
  237. package/dist/wip/wcs-capabilities-loader.js +3 -3
  238. package/dist/wip/wfs-capabilities-loader.d.ts +4 -3
  239. package/dist/wip/wfs-capabilities-loader.d.ts.map +1 -1
  240. package/dist/wip/wfs-capabilities-loader.js +3 -3
  241. package/dist/wip/wms-feature-info-loader.d.ts +4 -2
  242. package/dist/wip/wms-feature-info-loader.d.ts.map +1 -1
  243. package/dist/wip/wms-feature-info-loader.js +3 -3
  244. package/dist/wip/wms-layer-description-loader.d.ts +5 -3
  245. package/dist/wip/wms-layer-description-loader.d.ts.map +1 -1
  246. package/dist/wip/wms-layer-description-loader.js +3 -3
  247. package/dist/wip/wmts-capabilities-loader.d.ts +4 -3
  248. package/dist/wip/wmts-capabilities-loader.d.ts.map +1 -1
  249. package/dist/wip/wmts-capabilities-loader.js +3 -3
  250. package/dist/wms-capabilities-loader.d.ts +4 -3
  251. package/dist/wms-capabilities-loader.d.ts.map +1 -1
  252. package/dist/wms-capabilities-loader.js +3 -3
  253. package/dist/wms-error-loader.js +2 -2
  254. package/package.json +7 -7
  255. package/src/csw-capabilities-loader.ts +46 -0
  256. package/src/csw-domain-loader.ts +44 -0
  257. package/src/csw-records-loader.ts +42 -0
  258. package/src/{wip/gml-loader.ts → gml-loader.ts} +2 -2
  259. package/src/index.ts +48 -28
  260. package/src/lerc-loader.ts +1 -1
  261. package/src/lib/{data-sources/create-image-source.ts → create-image-source.ts} +12 -10
  262. package/src/lib/parsers/csw/parse-csw-capabilities.ts +103 -0
  263. package/src/lib/parsers/csw/parse-csw-domain.ts +45 -0
  264. package/src/lib/parsers/csw/parse-csw-records.ts +90 -0
  265. package/src/lib/parsers/csw/parse-exception-report.ts +31 -0
  266. package/src/lib/{wms/wms-types.ts → parsers/wms/parse-wms-capabilities.ts} +72 -53
  267. package/src/lib/parsers/wms/parse-wms-error.ts +22 -0
  268. package/src/lib/parsers/wms/parse-wms-features.ts +39 -0
  269. package/src/lib/parsers/wms/parse-wms-layer-description.ts +18 -0
  270. package/src/lib/{data-sources/image-services → services/arcgis}/arcgis-image-service.ts +44 -26
  271. package/src/lib/services/arcgis/arcgis-server.ts +59 -0
  272. package/src/lib/{data-sources/adhoc-image-service.ts → services/generic/image-service.ts} +18 -12
  273. package/src/lib/services/generic/tile-service.ts +0 -0
  274. package/src/lib/services/ogc/csw-service.ts +251 -0
  275. package/src/lib/{data-sources/image-services → services/ogc}/wms-service.ts +73 -34
  276. package/src/lib/services/ogc/wmts-service.ts.disabled +348 -0
  277. package/src/lib/sources/data-source.ts +46 -0
  278. package/src/lib/{data-sources → sources}/image-source.ts +5 -1
  279. package/src/lib/sources/tile-source.ts +59 -0
  280. package/src/lib/sources/utils/utils.ts +42 -0
  281. package/src/{lib/wmts/wmts-types.ts → wip/lib/wcs/parse-wcs-capabilities.ts} +15 -3
  282. package/src/{lib/wcs/wcs-types.ts → wip/lib/wfs/parse-wfs-capabilities.ts} +18 -1
  283. package/src/wip/lib/wmts/parse-wmts-capabilities.ts +170 -0
  284. package/src/wip/wcs-capabilities-loader.ts +6 -3
  285. package/src/wip/wfs-capabilities-loader.ts +4 -1
  286. package/src/wip/wms-feature-info-loader.ts +5 -1
  287. package/src/wip/wms-layer-description-loader.ts +7 -2
  288. package/src/wip/wmts-capabilities-loader.ts +4 -1
  289. package/src/wms-capabilities-loader.ts +5 -1
  290. package/src/wms-error-loader.ts +1 -1
  291. package/dist/es5/lib/data-sources/adhoc-image-service.js.map +0 -1
  292. package/dist/es5/lib/data-sources/arcgis-image-service.js +0 -180
  293. package/dist/es5/lib/data-sources/arcgis-image-service.js.map +0 -1
  294. package/dist/es5/lib/data-sources/create-image-source.js.map +0 -1
  295. package/dist/es5/lib/data-sources/image-services/arcgis-image-service.js.map +0 -1
  296. package/dist/es5/lib/data-sources/image-services/image-service.js +0 -163
  297. package/dist/es5/lib/data-sources/image-services/image-service.js.map +0 -1
  298. package/dist/es5/lib/data-sources/image-services/wms-service.js.map +0 -1
  299. package/dist/es5/lib/data-sources/image-source.js +0 -14
  300. package/dist/es5/lib/data-sources/image-source.js.map +0 -1
  301. package/dist/es5/lib/gml/deep-strict-equal.js.map +0 -1
  302. package/dist/es5/lib/gml/parse-gml.js.map +0 -1
  303. package/dist/es5/lib/lerc/lerc-types.js.map +0 -1
  304. package/dist/es5/lib/wcs/parse-wcs.js.map +0 -1
  305. package/dist/es5/lib/wcs/wcs-types.js +0 -2
  306. package/dist/es5/lib/wcs/wcs-types.js.map +0 -1
  307. package/dist/es5/lib/wfs/parse-wfs.js.map +0 -1
  308. package/dist/es5/lib/wfs/wfs-types.js +0 -2
  309. package/dist/es5/lib/wfs/wfs-types.js.map +0 -1
  310. package/dist/es5/lib/wms/parse-wms.js.map +0 -1
  311. package/dist/es5/lib/wms/wms-types.js +0 -2
  312. package/dist/es5/lib/wms/wms-types.js.map +0 -1
  313. package/dist/es5/lib/wmts/parse-wmts.js.map +0 -1
  314. package/dist/es5/lib/wmts/wmts-types.js +0 -2
  315. package/dist/es5/lib/wmts/wmts-types.js.map +0 -1
  316. package/dist/es5/wip/gml-loader.js.map +0 -1
  317. package/dist/esm/lib/data-sources/adhoc-image-service.js.map +0 -1
  318. package/dist/esm/lib/data-sources/arcgis-image-service.js +0 -62
  319. package/dist/esm/lib/data-sources/arcgis-image-service.js.map +0 -1
  320. package/dist/esm/lib/data-sources/create-image-source.js.map +0 -1
  321. package/dist/esm/lib/data-sources/image-services/arcgis-image-service.js +0 -61
  322. package/dist/esm/lib/data-sources/image-services/arcgis-image-service.js.map +0 -1
  323. package/dist/esm/lib/data-sources/image-services/image-service.js +0 -72
  324. package/dist/esm/lib/data-sources/image-services/image-service.js.map +0 -1
  325. package/dist/esm/lib/data-sources/image-services/wms-service.js.map +0 -1
  326. package/dist/esm/lib/data-sources/image-source.js +0 -4
  327. package/dist/esm/lib/data-sources/image-source.js.map +0 -1
  328. package/dist/esm/lib/gml/deep-strict-equal.js.map +0 -1
  329. package/dist/esm/lib/gml/parse-gml.js.map +0 -1
  330. package/dist/esm/lib/lerc/lerc-types.js.map +0 -1
  331. package/dist/esm/lib/wcs/parse-wcs.js +0 -32
  332. package/dist/esm/lib/wcs/parse-wcs.js.map +0 -1
  333. package/dist/esm/lib/wcs/wcs-types.js +0 -2
  334. package/dist/esm/lib/wcs/wcs-types.js.map +0 -1
  335. package/dist/esm/lib/wfs/parse-wfs.js +0 -32
  336. package/dist/esm/lib/wfs/parse-wfs.js.map +0 -1
  337. package/dist/esm/lib/wfs/wfs-types.js +0 -2
  338. package/dist/esm/lib/wfs/wfs-types.js.map +0 -1
  339. package/dist/esm/lib/wms/parse-wms.js.map +0 -1
  340. package/dist/esm/lib/wms/wms-types.js +0 -2
  341. package/dist/esm/lib/wms/wms-types.js.map +0 -1
  342. package/dist/esm/lib/wmts/parse-wmts.js +0 -32
  343. package/dist/esm/lib/wmts/parse-wmts.js.map +0 -1
  344. package/dist/esm/lib/wmts/wmts-types.js +0 -2
  345. package/dist/esm/lib/wmts/wmts-types.js.map +0 -1
  346. package/dist/esm/wip/gml-loader.js.map +0 -1
  347. package/dist/lib/data-sources/adhoc-image-service.d.ts +0 -24
  348. package/dist/lib/data-sources/adhoc-image-service.d.ts.map +0 -1
  349. package/dist/lib/data-sources/arcgis-image-service.d.ts +0 -79
  350. package/dist/lib/data-sources/arcgis-image-service.d.ts.map +0 -1
  351. package/dist/lib/data-sources/create-image-source.d.ts +0 -16
  352. package/dist/lib/data-sources/create-image-source.d.ts.map +0 -1
  353. package/dist/lib/data-sources/image-services/arcgis-image-service.d.ts.map +0 -1
  354. package/dist/lib/data-sources/image-services/arcgis-image-service.js +0 -85
  355. package/dist/lib/data-sources/image-services/image-service.d.ts.map +0 -1
  356. package/dist/lib/data-sources/image-services/image-service.js +0 -82
  357. package/dist/lib/data-sources/image-services/wms-service.d.ts.map +0 -1
  358. package/dist/lib/data-sources/image-source.d.ts.map +0 -1
  359. package/dist/lib/gml/deep-strict-equal.d.ts.map +0 -1
  360. package/dist/lib/gml/parse-gml.d.ts.map +0 -1
  361. package/dist/lib/lerc/lerc-types.d.ts.map +0 -1
  362. package/dist/lib/wcs/parse-wcs.d.ts +0 -7
  363. package/dist/lib/wcs/parse-wcs.d.ts.map +0 -1
  364. package/dist/lib/wcs/parse-wcs.js +0 -36
  365. package/dist/lib/wcs/wcs-types.d.ts.map +0 -1
  366. package/dist/lib/wcs/wcs-types.js +0 -3
  367. package/dist/lib/wfs/parse-wfs.d.ts +0 -7
  368. package/dist/lib/wfs/parse-wfs.d.ts.map +0 -1
  369. package/dist/lib/wfs/parse-wfs.js +0 -36
  370. package/dist/lib/wfs/wfs-types.d.ts.map +0 -1
  371. package/dist/lib/wfs/wfs-types.js +0 -3
  372. package/dist/lib/wms/parse-wms.d.ts +0 -24
  373. package/dist/lib/wms/parse-wms.d.ts.map +0 -1
  374. package/dist/lib/wms/parse-wms.js +0 -115
  375. package/dist/lib/wms/wms-types.d.ts.map +0 -1
  376. package/dist/lib/wmts/parse-wmts.d.ts +0 -7
  377. package/dist/lib/wmts/parse-wmts.d.ts.map +0 -1
  378. package/dist/lib/wmts/parse-wmts.js +0 -36
  379. package/dist/lib/wmts/wmts-types.d.ts.map +0 -1
  380. package/dist/lib/wmts/wmts-types.js +0 -3
  381. package/dist/wip/gml-loader.d.ts.map +0 -1
  382. package/src/lib/data-sources/arcgis-image-service.ts +0 -146
  383. package/src/lib/data-sources/image-services/image-service.ts +0 -105
  384. package/src/lib/wcs/parse-wcs.ts +0 -39
  385. package/src/lib/wfs/parse-wfs.ts +0 -39
  386. package/src/lib/wfs/wfs-types.ts +0 -78
  387. package/src/lib/wms/parse-wms.ts +0 -142
  388. package/src/lib/wmts/parse-wmts.ts +0 -39
  389. /package/dist/es5/lib/{gml → parsers/gml}/deep-strict-equal.js +0 -0
  390. /package/dist/es5/lib/{gml → parsers/gml}/parse-gml.js +0 -0
  391. /package/dist/es5/lib/{lerc → parsers/lerc}/lerc-types.js +0 -0
  392. /package/dist/esm/lib/{gml → parsers/gml}/deep-strict-equal.js +0 -0
  393. /package/dist/esm/lib/{gml → parsers/gml}/parse-gml.js +0 -0
  394. /package/dist/esm/lib/{lerc → parsers/lerc}/lerc-types.js +0 -0
  395. /package/dist/{wip/gml-loader.d.ts → gml-loader.d.ts} +0 -0
  396. /package/dist/lib/{gml → parsers/gml}/deep-strict-equal.d.ts +0 -0
  397. /package/dist/lib/{gml → parsers/gml}/deep-strict-equal.js +0 -0
  398. /package/dist/lib/{gml → parsers/gml}/parse-gml.d.ts +0 -0
  399. /package/dist/lib/{gml → parsers/gml}/parse-gml.js +0 -0
  400. /package/dist/lib/{lerc → parsers/lerc}/lerc-types.d.ts +0 -0
  401. /package/dist/lib/{lerc → parsers/lerc}/lerc-types.js +0 -0
  402. /package/src/lib/{gml → parsers/gml}/deep-strict-equal.ts +0 -0
  403. /package/src/lib/{gml → parsers/gml}/parse-gml.ts +0 -0
  404. /package/src/lib/{lerc → parsers/lerc}/lerc-types.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"wms-types.js","names":[],"sources":["../../../../src/lib/wms/wms-types.ts"],"sourcesContent":["// loaders.gl, MIT licenses\n\n/** All capabilities of a WMS service - response to a WMS `GetCapabilities` data structure extracted from XML */\nexport type WMSCapabilities = {\n name: string;\n title?: string;\n abstract?: string;\n keywords: string[];\n layer: {\n name: string;\n title?: string;\n srs?: string[];\n boundingBox?: [number, number, number, number];\n layers: WMSLayer[];\n };\n requests: Record<string, WMSRequest>;\n raw: Record<string, unknown>;\n};\n\nexport type WMSLayer = {\n name: string;\n title?: string;\n srs?: string[];\n boundingBox?: [number, number, number, number];\n layers: WMSLayer[];\n};\n\nexport type WMSRequest = {\n name: string;\n mimeTypes: string[];\n};\n\n// GetFeatureInfo\n\n/** WMS Feature info - response to a WMS `GetFeatureInfo` request */\nexport type WMSFeatureInfo = {\n features: WMSFeature[];\n};\n\nexport type WMSFeature = {\n attributes: Record<string, number | string>;\n type: string;\n bounds: {top: number; bottom: number; left: number; right: number};\n};\n\n// DescribeLayer\n\n/** Layer description - response to a WMS `DescribeLayer` request */\nexport type WMSLayerDescription = {\n layers: {}[];\n};\n\n// // WIP\n\n// export type GetCapabilities = {\n// request: 'GetCapabilities';\n// format: string[];\n// dcpType: unknown;\n// };\n\n// export type GetMap = {\n// request: 'GetMap';\n// format: string[];\n// dcpType: unknown;\n// };\n\n// export type GetFeatureInfo = {\n// request: 'GetFeatureInfo';\n// format: string[];\n// dcpType: unknown;\n// };\n\n// export type GetLegendGraphic = {\n// request: 'GetLegendGraphic';\n// format: string[];\n// dcpType: unknown;\n// };\n\n// export type GetStyles = {\n// request: 'GetStyles';\n// format: string[];\n// dcpType: unknown;\n// };\n\n/**\n * <EX_GeographicBoundingBox>\n * <westBoundLongitude>-180</westBoundLongitude>\n * <eastBoundLongitude>180</eastBoundLongitude>\n * <southBoundLatitude>-65</southBoundLatitude>\n * <northBoundLatitude>75</northBoundLatitude>\n * </EX_GeographicBoundingBox>\n * <BoundingBox CRS=\"EPSG:4326\"\n * minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n */\nexport type Layer = {\n name: string; // e.g. DMSP-Global-Composites-Version-4\n title: string; // e.g. DMSP-Global-Composites-Version-4</Title>\n abstract?: string; // DMSP-Global-Composites-Version-4</Abstract>\n crs: string; // e.g. EPSG:4326</CRS>\n queryable?: boolean;\n opaque?: boolean;\n cascaded?: boolean;\n geographicBoundingBox: number[];\n boundingBox: number[];\n boundingBoxCRS: string;\n layers: Layer[];\n};\n\n/**\n * <Style>\n * <Name>default</Name>\n * <Title>default</Title>\n * <LegendURL width=\"89\" height=\"21\">\n * <Format>image/png</Format>\n * <OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:type=\"simple\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?version=1.3.0&amp;service=WMS&amp;request=GetLegendGraphic&amp;sld_version=1.1.0&amp;layer=countries&amp;format=image/png&amp;STYLE=default\"/>\n * </LegendURL>\n * </Style>\n */\nexport type Style = {\n name: string; // e.g. DMSP-Global-Composites-Version-4\n title: string; // e.g. DMSP-Global-Composites-Version-4</Title>\n legendUrl?: {\n width: number;\n height: number;\n format: string;\n onlineResource: string;\n };\n};\n\n// export type Capability = GetCapabilities | GetMap;\n\nexport type WMSService = {\n rawData: unknown;\n name: string;\n title: string;\n onlineResource?: string;\n contactInformation?: string;\n maxWidth?: number;\n maxHeight?: number;\n capabilities: {\n // getCapabilities: GetCapabilities;\n // getMap: GetMap;\n // getFeatureInfo?: GetFeatureInfo;\n };\n\n untypedData: unknown; // The raw, untyped JSON converted from XML\n};\n\n/* \n<Capability>\n <Request>\n <GetCapabilities>\n <Format>text/xml</Format>\n <DCPType>\n <HTTP>\n <Get><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Get>\n <Post><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Post>\n </HTTP>\n </DCPType>\n </GetCapabilities>\n <GetMap>\n <Format>image/png</Format>\n <Format>image/tiff</Format>\n <Format>image/jpeg</Format>\n <Format>image/png; mode=8bit</Format>\n <Format>application/x-pdf</Format>\n <Format>image/svg+xml</Format>\n <DCPType>\n <HTTP>\n <Get><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Get>\n <Post><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Post>\n </HTTP>\n </DCPType>\n </GetMap>\n <GetFeatureInfo>\n <Format>text/plain</Format>\n <Format>application/vnd.ogc.gml</Format>\n <DCPType>\n <HTTP>\n <Get><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Get>\n <Post><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Post>\n </HTTP>\n </DCPType>\n </GetFeatureInfo>\n <sld:DescribeLayer>\n <Format>text/xml</Format>\n <DCPType>\n <HTTP>\n <Get><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Get>\n <Post><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Post>\n </HTTP>\n </DCPType>\n </sld:DescribeLayer>\n <sld:GetLegendGraphic>\n <Format>image/png</Format>\n <Format>image/jpeg</Format>\n <Format>image/png; mode=8bit</Format>\n <DCPType>\n <HTTP>\n <Get><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Get>\n <Post><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Post>\n </HTTP>\n </DCPType>\n </sld:GetLegendGraphic>\n <ms:GetStyles>\n <Format>text/xml</Format>\n <DCPType>\n <HTTP>\n <Get><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Get>\n <Post><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Post>\n </HTTP>\n </DCPType>\n </ms:GetStyles>\n </Request>\n <Exception>\n <Format>XML</Format>\n <Format>INIMAGE</Format>\n <Format>BLANK</Format>\n </Exception>\n <sld:UserDefinedSymbolization SupportSLD=\"1\" UserLayer=\"0\" UserStyle=\"1\" RemoteWFS=\"0\" InlineFeature=\"0\" RemoteWCS=\"0\"/>\n <Layer>\n <Name>DMSP-Global-Composites-Version-4</Name>\n <Title>DMSP-Global-Composites-Version-4</Title>\n <Abstract>DMSP-Global-Composites-Version-4</Abstract>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>countries</Name>\n <Title>Countries</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-90</southBoundLatitude>\n <northBoundLatitude>83.6236</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-90\" miny=\"-180\" maxx=\"83.6236\" maxy=\"180\" />\n <Style>\n <Name>default</Name>\n <Title>default</Title>\n <LegendURL width=\"89\" height=\"21\">\n <Format>image/png</Format>\n <OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:type=\"simple\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?version=1.3.0&amp;service=WMS&amp;request=GetLegendGraphic&amp;sld_version=1.1.0&amp;layer=countries&amp;format=image/png&amp;STYLE=default\"/>\n </LegendURL>\n </Style>\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>adminboundaries</Name>\n <Title>Administrative Boundaries</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-90</southBoundLatitude>\n <northBoundLatitude>83.6236</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-90\" miny=\"-180\" maxx=\"83.6236\" maxy=\"180\" />\n <Style>\n <Name>default</Name>\n <Title>default</Title>\n <LegendURL width=\"65\" height=\"21\">\n <Format>image/png</Format>\n <OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:type=\"simple\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?version=1.3.0&amp;service=WMS&amp;request=GetLegendGraphic&amp;sld_version=1.1.0&amp;layer=adminboundaries&amp;format=image/png&amp;STYLE=default\"/>\n </LegendURL>\n </Style>\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>eez</Name>\n <Title>EEZ Boundaries</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-179.999</westBoundLongitude>\n <eastBoundLongitude>179.999</eastBoundLongitude>\n <southBoundLatitude>-85.4703</southBoundLatitude>\n <northBoundLatitude>87.0239</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-85.4703\" miny=\"-179.999\" maxx=\"87.0239\" maxy=\"179.999\" />\n <Style>\n <Name>default</Name>\n <Title>default</Title>\n <LegendURL width=\"53\" height=\"21\">\n <Format>image/png</Format>\n <OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:type=\"simple\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?version=1.3.0&amp;service=WMS&amp;request=GetLegendGraphic&amp;sld_version=1.1.0&amp;layer=eez&amp;format=image/png&amp;STYLE=default\"/>\n </LegendURL>\n </Style>\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>cities</Name>\n <Title>Cities</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-176.152</westBoundLongitude>\n <eastBoundLongitude>179.222</eastBoundLongitude>\n <southBoundLatitude>-54.792</southBoundLatitude>\n <northBoundLatitude>78.2</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-54.792\" miny=\"-176.152\" maxx=\"78.2\" maxy=\"179.222\" />\n <Style>\n <Name>default</Name>\n <Title>default</Title>\n <LegendURL width=\"71\" height=\"21\">\n <Format>image/png</Format>\n <OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:type=\"simple\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?version=1.3.0&amp;service=WMS&amp;request=GetLegendGraphic&amp;sld_version=1.1.0&amp;layer=cities&amp;format=image/png&amp;STYLE=default\"/>\n </LegendURL>\n </Style>\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>citieslabeled</Name>\n <Title>Cities With Labels</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-176.152</westBoundLongitude>\n <eastBoundLongitude>179.222</eastBoundLongitude>\n <southBoundLatitude>-54.792</southBoundLatitude>\n <northBoundLatitude>78.2</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-54.792\" miny=\"-176.152\" maxx=\"78.2\" maxy=\"179.222\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>land</Name>\n <Title>Land Sea Mask</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-90</southBoundLatitude>\n <northBoundLatitude>83.6236</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-90\" miny=\"-180\" maxx=\"83.6236\" maxy=\"180\" />\n <Style>\n <Name>default</Name>\n <Title>default</Title>\n <LegendURL width=\"59\" height=\"21\">\n <Format>image/png</Format>\n <OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:type=\"simple\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?version=1.3.0&amp;service=WMS&amp;request=GetLegendGraphic&amp;sld_version=1.1.0&amp;layer=land&amp;format=image/png&amp;STYLE=default\"/>\n </LegendURL>\n </Style>\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>LandSeaMask</Name>\n <Title>LandSeaMask</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-90</southBoundLatitude>\n <northBoundLatitude>90</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-90\" miny=\"-180\" maxx=\"90\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>Rivers</Name>\n <Title>Rivers</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-164.887</westBoundLongitude>\n <eastBoundLongitude>160.764</eastBoundLongitude>\n <southBoundLatitude>-36.9694</southBoundLatitude>\n <northBoundLatitude>71.3925</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-36.9694\" miny=\"-164.887\" maxx=\"71.3925\" maxy=\"160.764\" />\n <Style>\n <Name>default</Name>\n <Title>default</Title>\n <LegendURL width=\"71\" height=\"21\">\n <Format>image/png</Format>\n <OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:type=\"simple\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?version=1.3.0&amp;service=WMS&amp;request=GetLegendGraphic&amp;sld_version=1.1.0&amp;layer=Rivers&amp;format=image/png&amp;STYLE=default\"/>\n </LegendURL>\n </Style>\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101992.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F101992.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101992.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F101992.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101992.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F101992.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101992.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F101992.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101993.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F101993.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101993.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F101993.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101993.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F101993.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101993.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F101993.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101994.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F101994.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101994.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F101994.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101994.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F101994.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101994.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F101994.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121994.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F121994.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121994.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F121994.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121994.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F121994.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121994.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F121994.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121995.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F121995.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121995.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F121995.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121995.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F121995.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121995.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F121995.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121996.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F121996.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121996.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F121996.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121996.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F121996.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121996.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F121996.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121997.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F121997.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121997.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F121997.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121997.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F121997.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121997.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F121997.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121998.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F121998.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121998.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F121998.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121998.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F121998.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121998.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F121998.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121999.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F121999.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121999.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F121999.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121999.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F121999.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121999.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F121999.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141997.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F141997.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141997.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F141997.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141997.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F141997.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141997.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F141997.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141998.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F141998.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141998.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F141998.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141998.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F141998.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141998.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F141998.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141999.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F141999.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141999.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F141999.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141999.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F141999.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141999.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F141999.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142000.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F142000.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142000.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F142000.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142000.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F142000.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142000.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F142000.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142001.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F142001.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142001.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F142001.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142001.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F142001.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142001.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F142001.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142002.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F142002.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142002.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F142002.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142002.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F142002.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142002.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F142002.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142003.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F142003.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142003.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F142003.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142003.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F142003.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142003.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F142003.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152000.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152000.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152000.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152000.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152000.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152000.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152000.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152000.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152001.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152001.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152001.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152001.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152001.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152001.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152001.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152001.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152002.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152002.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152002.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152002.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152002.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152002.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152002.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152002.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152003.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152003.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152003.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152003.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152003.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152003.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152003.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152003.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152004.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152004.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152004.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152004.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152004.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152004.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152004.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152004.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152005.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152005.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152005.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152005.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152005.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152005.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152005.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152005.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152006.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152006.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152006.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152006.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152006.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152006.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152006.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152006.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152007.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152007.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152007.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152007.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152007.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152007.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152007.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152007.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152008.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152008.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152008.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152008.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152008.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152008.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152008.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152008.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162004.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F162004.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162004.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F162004.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162004.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F162004.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162004.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F162004.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162005.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F162005.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162005.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F162005.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162005.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F162005.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162005.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F162005.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162006.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F162006.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162006.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F162006.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162006.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F162006.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162006.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F162006.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162007.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F162007.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162007.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F162007.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162007.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F162007.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162007.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F162007.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162008.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F162008.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162008.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F162008.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162008.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F162008.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162008.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F162008.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162009.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F162009.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162009.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F162009.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162009.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F162009.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162009.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F162009.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F182010.v4c.avg_lights_x_pct.lzw.tif</Name>\n <Title>F182010.v4c.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F182010.v4c_web.avg_vis.lzw.tif</Name>\n <Title>F182010.v4c_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F182010.v4c_web.cf_cvg.lzw.tif</Name>\n <Title>F182010.v4c_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F182010.v4c_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F182010.v4c_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n </Layer>\n</Capability>\n</WMS_Capabilities>\n*/\n"],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-wmts.js","names":["parseWMTSCapabilities","text","options","xml","removeNSPrefix","parsedXML","XMLLoader","parseTextSync","xmlCapabilities","Capabilities","uncapitalizeKeys","object","newObject","Object","entries","key","value","uncapitalize","str","charAt","toLowerCase","slice"],"sources":["../../../../src/lib/wmts/parse-wmts.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {WMTSCapabilities} from './wmts-types';\n\nimport {XMLLoader} from '@loaders.gl/xml';\n\n// GetCapabilities\n\n/**\n * Parses a typed data structure from raw XML for `GetCapabilities` response\n * @note Error handlings is fairly weak\n */\nexport function parseWMTSCapabilities(text: string, options): WMTSCapabilities {\n // Remove namespaces in XML\n options = {...options, xml: {...options?.xml, removeNSPrefix: true}};\n const parsedXML = XMLLoader.parseTextSync(text, options);\n const xmlCapabilities: any = parsedXML.Capabilities || parsedXML;\n return uncapitalizeKeys(xmlCapabilities);\n}\n\nfunction uncapitalizeKeys(object: any): any {\n if (object && typeof object === 'object') {\n const newObject = {};\n for (const [key, value] of Object.entries(object)) {\n newObject[uncapitalize(key)] = uncapitalizeKeys(value);\n }\n return newObject;\n }\n return object;\n}\n\n/**\n * Uncapitalize first letter of a string\n * @param {string} str\n * @returns {string}\n */\nfunction uncapitalize(str: string): string {\n return typeof str === 'string' ? str.charAt(0).toLowerCase() + str.slice(1) : str;\n}\n"],"mappings":";;;;;;;;;;AAIA;AAA0C;AAAA;;AAQnC,SAASA,qBAAqB,CAACC,IAAY,EAAEC,OAAO,EAAoB;EAAA;EAE7EA,OAAO,mCAAOA,OAAO;IAAEC,GAAG,8CAAMD,OAAO,6CAAP,SAASC,GAAG;MAAEC,cAAc,EAAE;IAAI;EAAC,EAAC;EACpE,IAAMC,SAAS,GAAGC,cAAS,CAACC,aAAa,CAACN,IAAI,EAAEC,OAAO,CAAC;EACxD,IAAMM,eAAoB,GAAGH,SAAS,CAACI,YAAY,IAAIJ,SAAS;EAChE,OAAOK,gBAAgB,CAACF,eAAe,CAAC;AAC1C;AAEA,SAASE,gBAAgB,CAACC,MAAW,EAAO;EAC1C,IAAIA,MAAM,IAAI,sBAAOA,MAAM,MAAK,QAAQ,EAAE;IACxC,IAAMC,SAAS,GAAG,CAAC,CAAC;IACpB,mCAA2BC,MAAM,CAACC,OAAO,CAACH,MAAM,CAAC,qCAAE;MAA9C;QAAOI,GAAG;QAAEC,KAAK;MACpBJ,SAAS,CAACK,YAAY,CAACF,GAAG,CAAC,CAAC,GAAGL,gBAAgB,CAACM,KAAK,CAAC;IACxD;IACA,OAAOJ,SAAS;EAClB;EACA,OAAOD,MAAM;AACf;;AAOA,SAASM,YAAY,CAACC,GAAW,EAAU;EACzC,OAAO,OAAOA,GAAG,KAAK,QAAQ,GAAGA,GAAG,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,EAAE,GAAGF,GAAG,CAACG,KAAK,CAAC,CAAC,CAAC,GAAGH,GAAG;AACnF"}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=wmts-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wmts-types.js","names":[],"sources":["../../../../src/lib/wmts/wmts-types.ts"],"sourcesContent":["// loaders.gl, MIT licenses\n\n/** All capabilities of a WMTS service - response to a WMTS `GetCapabilities` data structure extracted from XML */\nexport type WMTSCapabilities = {\n serviceIdentification: {\n title: string;\n serviceTypeVersion: string;\n serviceType: string;\n };\n\n serviceProvider: {\n providerName: string;\n providerSite: string;\n serviceContact: {\n individualName: string;\n positionName: string;\n contactInfo: {\n address: {\n administrativeArea: string;\n city: string;\n country: string;\n deliveryPoint: string;\n electronicMailAddress: string;\n postalCode: string;\n };\n phone: {\n voice: string;\n };\n };\n };\n };\n\n operationsMetadata: {\n GetCapabilities: any;\n GetFeatureInfo: any;\n GetTile: any;\n };\n\n contents: {\n layers: {\n abstract: string;\n identifier: string;\n title: string;\n formats: string[];\n styles: {\n identifier: string;\n isDefault: string;\n title: string;\n abstract?: string;\n }[];\n bounds: {\n left: number;\n right: number;\n bottom: number;\n top: number;\n };\n tileMatrixSetLinks: {\n tileMatrixSet: string;\n }[];\n tileMatrixSets: {\n identifier: string;\n matrixIds: {\n identifier: string;\n matrixHeight: number;\n matrixWidth: number;\n scaleDenominator: number;\n tileWidth: number;\n tileHeight: number;\n topLeftCorner: {\n lon: number;\n lat: number;\n };\n }[];\n };\n }[];\n };\n};\n"],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"gml-loader.js","names":["VERSION","GMLLoader","name","id","module","version","worker","extensions","mimeTypes","testText","testXMLFile","options","gml","parse","arrayBuffer","parseGML","TextDecoder","decode","parseTextSync","text","startsWith","_typecheckGMLLoader"],"sources":["../../../src/wip/gml-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {parseGML} from '../lib/gml/parse-gml';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type GMLLoaderOptions = LoaderOptions & {\n gml?: {};\n};\n\n/**\n * Loader for the response to the GML GetCapability request\n */\nexport const GMLLoader = {\n name: 'GML',\n id: 'gml',\n\n module: 'wms',\n version: VERSION,\n worker: false,\n extensions: ['xml'],\n mimeTypes: ['application/vnd.ogc.gml_xml', 'application/xml', 'text/xml'],\n testText: testXMLFile,\n options: {\n gml: {}\n },\n parse: async (arrayBuffer: ArrayBuffer, options?: GMLLoaderOptions) =>\n parseGML(new TextDecoder().decode(arrayBuffer), options),\n parseTextSync: (text: string, options?: GMLLoaderOptions) => parseGML(text, options)\n};\n\nfunction testXMLFile(text: string): boolean {\n // TODO - There could be space first.\n return text.startsWith('<?xml');\n}\n\nexport const _typecheckGMLLoader: LoaderWithParser = GMLLoader;\n"],"mappings":";;;;;;;;;AAGA;;AAIA,IAAMA,OAAO,GAAG,cAAkB,KAAK,WAAW,aAAiB,QAAQ;AASpE,IAAMC,SAAS,GAAG;EACvBC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EAETC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,KAAK;EACbC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,6BAA6B,EAAE,iBAAiB,EAAE,UAAU,CAAC;EACzEC,QAAQ,EAAEC,WAAW;EACrBC,OAAO,EAAE;IACPC,GAAG,EAAE,CAAC;EACR,CAAC;EACDC,KAAK;IAAA,uEAAE,iBAAOC,WAAwB,EAAEH,OAA0B;MAAA;QAAA;UAAA;YAAA;cAAA,iCAChE,IAAAI,kBAAQ,EAAC,IAAIC,WAAW,EAAE,CAACC,MAAM,CAACH,WAAW,CAAC,EAAEH,OAAO,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA;IAAA;MAAA;IAAA;IAAA;EAAA;EAC1DO,aAAa,EAAE,uBAACC,IAAY,EAAER,OAA0B;IAAA,OAAK,IAAAI,kBAAQ,EAACI,IAAI,EAAER,OAAO,CAAC;EAAA;AACtF,CAAC;AAAC;AAEF,SAASD,WAAW,CAACS,IAAY,EAAW;EAE1C,OAAOA,IAAI,CAACC,UAAU,CAAC,OAAO,CAAC;AACjC;AAEO,IAAMC,mBAAqC,GAAGpB,SAAS;AAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adhoc-image-service.js","names":["ImageLoader","ImageSource","AdHocImageService","constructor","props","templateUrl","getMetadata","Error","getImage","parameters","granularParameters","getGranularParameters","url","getURLFromTemplate","response","fetch","arrayBuffer","parse","east","north","west","south","bbox","key","value","Object","entries","replace","String","toLowerCase","includes"],"sources":["../../../../src/lib/data-sources/adhoc-image-service.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {ImageType} from '@loaders.gl/images';\nimport {ImageLoader} from '@loaders.gl/images';\n\nimport type {ImageSourceMetadata, GetImageParameters} from './image-source';\nimport {ImageSource} from './image-source';\n\nexport type AdHocImageServiceProps = {\n /** Template URL string should contain `${width}` etc which will be substituted. */\n templateUrl: string;\n};\n\n/**\n * Quickly connect to \"ad hoc\" image sources without subclassing ImageSource.\n * ImageSource allows template url strings to be used to ad hoc connect to arbitrary image data sources\n * Accepts a template url string and builds requests URLs\n */\nexport class AdHocImageService extends ImageSource {\n static type: 'template' = 'template';\n static testURL = (url: string): boolean => url.toLowerCase().includes('{');\n\n templateUrl: string;\n\n constructor(props: AdHocImageServiceProps) {\n super();\n this.templateUrl = props.templateUrl;\n }\n\n // IMAGE SOURCE API\n\n async getMetadata(): Promise<ImageSourceMetadata> {\n throw new Error('ImageSource.getMetadata not implemented');\n }\n\n async getImage(parameters: GetImageParameters): Promise<ImageType> {\n const granularParameters = this.getGranularParameters(parameters);\n const url = this.getURLFromTemplate(granularParameters);\n const response = await fetch(url);\n const arrayBuffer = await response.arrayBuffer();\n return await ImageLoader.parse(arrayBuffer);\n }\n\n // HELPERS\n\n /** Break up bounding box in east, north, south, west */\n protected getGranularParameters(parameters: GetImageParameters): Record<string, unknown> {\n const [east, north, west, south] = parameters.bbox;\n return {...parameters, east, north, south, west};\n }\n\n protected getURLFromTemplate(parameters: Record<string, unknown>): string {\n let url = this.templateUrl;\n for (const [key, value] of Object.entries(parameters)) {\n // TODO - parameter could be repeated\n // const regex = new RegExp(`\\${${key}}`, 'g');\n url = url.replace(`\\${${key}}`, String(value));\n }\n return url;\n }\n}\n"],"mappings":";;AAGA,SAAQA,WAAW,QAAO,oBAAoB;AAG9C,SAAQC,WAAW,QAAO,gBAAgB;AAY1C,OAAO,MAAMC,iBAAiB,SAASD,WAAW,CAAC;EAMjDE,WAAW,CAACC,KAA6B,EAAE;IACzC,KAAK,EAAE;IAAC;IACR,IAAI,CAACC,WAAW,GAAGD,KAAK,CAACC,WAAW;EACtC;;EAIA,MAAMC,WAAW,GAAiC;IAChD,MAAM,IAAIC,KAAK,CAAC,yCAAyC,CAAC;EAC5D;EAEA,MAAMC,QAAQ,CAACC,UAA8B,EAAsB;IACjE,MAAMC,kBAAkB,GAAG,IAAI,CAACC,qBAAqB,CAACF,UAAU,CAAC;IACjE,MAAMG,GAAG,GAAG,IAAI,CAACC,kBAAkB,CAACH,kBAAkB,CAAC;IACvD,MAAMI,QAAQ,GAAG,MAAMC,KAAK,CAACH,GAAG,CAAC;IACjC,MAAMI,WAAW,GAAG,MAAMF,QAAQ,CAACE,WAAW,EAAE;IAChD,OAAO,MAAMhB,WAAW,CAACiB,KAAK,CAACD,WAAW,CAAC;EAC7C;;EAKUL,qBAAqB,CAACF,UAA8B,EAA2B;IACvF,MAAM,CAACS,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,KAAK,CAAC,GAAGZ,UAAU,CAACa,IAAI;IAClD,OAAO;MAAC,GAAGb,UAAU;MAAES,IAAI;MAAEC,KAAK;MAAEE,KAAK;MAAED;IAAI,CAAC;EAClD;EAEUP,kBAAkB,CAACJ,UAAmC,EAAU;IACxE,IAAIG,GAAG,GAAG,IAAI,CAACP,WAAW;IAC1B,KAAK,MAAM,CAACkB,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACjB,UAAU,CAAC,EAAE;MAGrDG,GAAG,GAAGA,GAAG,CAACe,OAAO,aAAOJ,GAAG,QAAKK,MAAM,CAACJ,KAAK,CAAC,CAAC;IAChD;IACA,OAAOZ,GAAG;EACZ;AACF;AAAC,gBA1CYV,iBAAiB,UACF,UAAU;AAAA,gBADzBA,iBAAiB,aAEVU,GAAW,IAAcA,GAAG,CAACiB,WAAW,EAAE,CAACC,QAAQ,CAAC,GAAG,CAAC"}
@@ -1,62 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
-
3
- import { ImageSource } from './image-source';
4
- export class ArcGISImageService extends ImageSource {
5
- constructor(props) {
6
- super();
7
- _defineProperty(this, "url", void 0);
8
- _defineProperty(this, "loadOptions", void 0);
9
- _defineProperty(this, "fetch", void 0);
10
- this.url = props.url;
11
- this.loadOptions = props.loadOptions || {};
12
- this.fetch = props.fetch || fetch;
13
- }
14
-
15
- async getMetadata() {
16
- return await this.info();
17
- }
18
-
19
- async getImage(parameters) {
20
- throw new Error('not implemented');
21
- }
22
-
23
- async info() {
24
- throw new Error('not implemented');
25
- }
26
-
27
- exportImage(options) {
28
- throw new Error('not implemented');
29
- }
30
-
31
- infoURL(options) {
32
- return this.url;
33
- }
34
-
35
- exportImageURL(options) {
36
- return this.url;
37
- }
38
-
39
- getUrl(options, extra) {
40
- let url = "".concat(this.url);
41
- let first = true;
42
- for (const [key, value] of Object.entries(options)) {
43
- url += first ? '?' : '&';
44
- first = false;
45
- if (Array.isArray(value)) {
46
- url += "".concat(key.toUpperCase(), "=").concat(value.join(','));
47
- } else {
48
- url += "".concat(key.toUpperCase(), "=").concat(value ? String(value) : '');
49
- }
50
- }
51
- return url;
52
- }
53
-
54
- async checkResponse(response) {
55
- if (!response.ok) {
56
- throw new Error('error');
57
- }
58
- }
59
- }
60
- _defineProperty(ArcGISImageService, "type", 'arcgis-image-server');
61
- _defineProperty(ArcGISImageService, "testURL", url => url.toLowerCase().includes('ImageServer'));
62
- //# sourceMappingURL=arcgis-image-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arcgis-image-service.js","names":["ImageSource","ArcGISImageService","constructor","props","url","loadOptions","fetch","getMetadata","info","getImage","parameters","Error","exportImage","options","infoURL","exportImageURL","getUrl","extra","first","key","value","Object","entries","Array","isArray","toUpperCase","join","String","checkResponse","response","ok","toLowerCase","includes"],"sources":["../../../../src/lib/data-sources/arcgis-image-service.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {/* ImageLoader, */ ImageType} from '@loaders.gl/images';\nimport type {ImageSourceMetadata, GetImageParameters} from './image-source';\nimport {ImageSource} from './image-source';\n\ntype FetchLike = (url: string, options?: RequestInit) => Promise<Response>;\n\nexport type ArcGISImageServiceProps = {\n url: string;\n loadOptions?: LoaderOptions;\n fetch?: typeof fetch | FetchLike;\n};\n\nexport class ArcGISImageService extends ImageSource {\n static type: 'arcgis-image-server' = 'arcgis-image-server';\n static testURL = (url: string): boolean => url.toLowerCase().includes('ImageServer');\n\n url: string;\n loadOptions: LoaderOptions;\n fetch: typeof fetch | FetchLike;\n\n constructor(props: ArcGISImageServiceProps) {\n super();\n this.url = props.url;\n this.loadOptions = props.loadOptions || {};\n this.fetch = props.fetch || fetch;\n }\n\n // ImageSource (normalized endpoints)\n\n async getMetadata(): Promise<ImageSourceMetadata> {\n return (await this.info()) as ImageSourceMetadata;\n // TODO - normalize metadata\n }\n\n async getImage(parameters: GetImageParameters): Promise<ImageType> {\n throw new Error('not implemented');\n // TODO - Map generic parameters to ArcGIS specific parameters\n // return await this.exportImage(parameters);\n }\n\n // ImageServer endpoints\n\n async info(): Promise<unknown> {\n // We just need a JSON parsing...\n // return this.getUrl({path: '', ...options});\n throw new Error('not implemented');\n }\n\n /** \n * Form a URL to an ESRI ImageServer\n // https://sampleserver6.arcgisonline.com/arcgis/rest/services/NLCDLandCover2001/ImageServer/exportImage?bbox=${bounds[0]},${bounds[1]},${bounds[2]},${bounds[3]}&bboxSR=4326&size=${width},${height}&imageSR=102100&time=&format=jpgpng&pixelType=U8&noData=&noDataInterpretation=esriNoDataMatchAny&interpolation=+RSP_NearestNeighbor&compression=&compressionQuality=&bandIds=&mosaicRule=&renderingRule=&f=image`,\n */\n exportImage(options: {\n boundingBox: [number, number, number, number];\n boundingBoxSR?: string;\n width: number;\n height: number;\n imageSR?: string;\n time?: never;\n format?: 'jpgpng';\n pixelType?: 'U8';\n noData?: never;\n noDataInterpretation?: 'esriNoDataMatchAny';\n interpolation?: '+RSP_NearestNeighbor';\n compression?: never;\n compressionQuality?: never;\n bandIds?: never;\n mosaicRule?: never;\n renderingRule?: never;\n f?: 'image';\n }): Promise<ImageType> {\n // See WMSService.getMap()\n throw new Error('not implemented');\n }\n\n // URL creators\n\n infoURL(options: {parameters?: Record<string, unknown>}): string {\n return this.url;\n // return this.getUrl({path: '', ...options});\n }\n\n /** \n * Form a URL to an ESRI ImageServer\n // https://sampleserver6.arcgisonline.com/arcgis/rest/services/NLCDLandCover2001/ImageServer/exportImage?bbox=${bounds[0]},${bounds[1]},${bounds[2]},${bounds[3]}&bboxSR=4326&size=${width},${height}&imageSR=102100&time=&format=jpgpng&pixelType=U8&noData=&noDataInterpretation=esriNoDataMatchAny&interpolation=+RSP_NearestNeighbor&compression=&compressionQuality=&bandIds=&mosaicRule=&renderingRule=&f=image`,\n */\n exportImageURL(options: {\n boundingBox: [number, number, number, number];\n boundingBoxSR?: string;\n width: number;\n height: number;\n imageSR?: string;\n time?: never;\n format?: 'jpgpng';\n pixelType?: 'U8';\n noData?: never;\n noDataInterpretation?: 'esriNoDataMatchAny';\n interpolation?: '+RSP_NearestNeighbor';\n compression?: never;\n compressionQuality?: never;\n bandIds?: never;\n mosaicRule?: never;\n renderingRule?: never;\n f?: 'image';\n }): string {\n // const {boundingBox} = options;\n // const bbox = `bbox=${boundingBox[0]},${boundingBox[1]},${boundingBox[2]},${boundingBox[3]}`;\n // const size = `size=${width},${height}`;\n // return this.getUrl({path: 'exportImage'});\n return this.url;\n }\n\n // INTERNAL METHODS\n\n /**\n * @note protected, since perhaps getWMSUrl may need to be overridden to handle certain backends?\n * @note if override is common, maybe add a callback prop?\n * */\n protected getUrl(options: Record<string, unknown>, extra?: Record<string, unknown>): string {\n let url = `${this.url}`;\n let first = true;\n for (const [key, value] of Object.entries(options)) {\n url += first ? '?' : '&';\n first = false;\n if (Array.isArray(value)) {\n url += `${key.toUpperCase()}=${value.join(',')}`;\n } else {\n url += `${key.toUpperCase()}=${value ? String(value) : ''}`;\n }\n }\n return url;\n }\n\n /** Checks for and parses a WMS XML formatted ServiceError and throws an exception */\n protected async checkResponse(response: Response) {\n if (!response.ok) {\n // } || response.headers['content-type'] === WMSErrorLoader.mimeTypes[0]) {\n // const arrayBuffer = await response.arrayBuffer();\n // const error = await WMSErrorLoader.parse(arrayBuffer, this.loadOptions);\n throw new Error('error');\n }\n }\n}\n"],"mappings":";;AAKA,SAAQA,WAAW,QAAO,gBAAgB;AAU1C,OAAO,MAAMC,kBAAkB,SAASD,WAAW,CAAC;EAQlDE,WAAW,CAACC,KAA8B,EAAE;IAC1C,KAAK,EAAE;IAAC;IAAA;IAAA;IACR,IAAI,CAACC,GAAG,GAAGD,KAAK,CAACC,GAAG;IACpB,IAAI,CAACC,WAAW,GAAGF,KAAK,CAACE,WAAW,IAAI,CAAC,CAAC;IAC1C,IAAI,CAACC,KAAK,GAAGH,KAAK,CAACG,KAAK,IAAIA,KAAK;EACnC;;EAIA,MAAMC,WAAW,GAAiC;IAChD,OAAQ,MAAM,IAAI,CAACC,IAAI,EAAE;EAE3B;;EAEA,MAAMC,QAAQ,CAACC,UAA8B,EAAsB;IACjE,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EAGpC;;EAIA,MAAMH,IAAI,GAAqB;IAG7B,MAAM,IAAIG,KAAK,CAAC,iBAAiB,CAAC;EACpC;;EAMAC,WAAW,CAACC,OAkBX,EAAsB;IAErB,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC;;EAIAG,OAAO,CAACD,OAA+C,EAAU;IAC/D,OAAO,IAAI,CAACT,GAAG;EAEjB;;EAMAW,cAAc,CAACF,OAkBd,EAAU;IAKT,OAAO,IAAI,CAACT,GAAG;EACjB;;EAQUY,MAAM,CAACH,OAAgC,EAAEI,KAA+B,EAAU;IAC1F,IAAIb,GAAG,aAAM,IAAI,CAACA,GAAG,CAAE;IACvB,IAAIc,KAAK,GAAG,IAAI;IAChB,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACT,OAAO,CAAC,EAAE;MAClDT,GAAG,IAAIc,KAAK,GAAG,GAAG,GAAG,GAAG;MACxBA,KAAK,GAAG,KAAK;MACb,IAAIK,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,EAAE;QACxBhB,GAAG,cAAOe,GAAG,CAACM,WAAW,EAAE,cAAIL,KAAK,CAACM,IAAI,CAAC,GAAG,CAAC,CAAE;MAClD,CAAC,MAAM;QACLtB,GAAG,cAAOe,GAAG,CAACM,WAAW,EAAE,cAAIL,KAAK,GAAGO,MAAM,CAACP,KAAK,CAAC,GAAG,EAAE,CAAE;MAC7D;IACF;IACA,OAAOhB,GAAG;EACZ;;EAGA,MAAgBwB,aAAa,CAACC,QAAkB,EAAE;IAChD,IAAI,CAACA,QAAQ,CAACC,EAAE,EAAE;MAIhB,MAAM,IAAInB,KAAK,CAAC,OAAO,CAAC;IAC1B;EACF;AACF;AAAC,gBAlIYV,kBAAkB,UACQ,qBAAqB;AAAA,gBAD/CA,kBAAkB,aAEXG,GAAW,IAAcA,GAAG,CAAC2B,WAAW,EAAE,CAACC,QAAQ,CAAC,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-image-source.js","names":["ImageService","WMSService","ArcGISImageService","SERVICES","createImageSource","props","type","serviceType","guessServiceType","url","Error","Service","testURL"],"sources":["../../../../src/lib/data-sources/create-image-source.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {ImageSource} from './image-source';\nimport {ImageService, ImageServiceProps} from './image-services/image-service';\nimport {WMSService} from './image-services/wms-service';\nimport {ArcGISImageService} from './image-services/arcgis-image-service';\n\nexport type ImageServiceType = 'wms' | 'arcgis-image-server' | 'template';\n\nconst SERVICES = [WMSService, ArcGISImageService, ImageService];\n\ntype Props = ImageServiceProps & {\n type?: ImageServiceType | 'auto';\n};\n\n/**\n * Creates an image source\n * If type is not supplied, will try to automatically detec the the\n * @param url URL to the image source\n * @param type type of source. if not known, set to 'auto'\n * @returns an ImageSource instance\n */\nexport function createImageSource(props: Props): ImageSource {\n const {type = 'auto'} = props;\n const serviceType = type === 'auto' ? guessServiceType(props.url) : type;\n switch (serviceType) {\n case 'template':\n return new ImageService(props);\n case 'wms':\n return new WMSService(props);\n default:\n // currently only wms service supported\n throw new Error('Not a valid image source type');\n }\n}\n\n/** Guess service type from URL */\nfunction guessServiceType(url: string): ImageServiceType {\n for (const Service of SERVICES) {\n if (Service.testURL && Service.testURL(url)) {\n return Service.type;\n }\n }\n // If all else fails, guess that this is MS service\n return 'wms';\n}\n"],"mappings":";;AAGA,SAAQA,YAAY,QAA0B,gCAAgC;AAC9E,SAAQC,UAAU,QAAO,8BAA8B;AACvD,SAAQC,kBAAkB,QAAO,uCAAuC;AAIxE,MAAMC,QAAQ,GAAG,CAACF,UAAU,EAAEC,kBAAkB,EAAEF,YAAY,CAAC;AAa/D,OAAO,SAASI,iBAAiB,CAACC,KAAY,EAAe;EAC3D,MAAM;IAACC,IAAI,GAAG;EAAM,CAAC,GAAGD,KAAK;EAC7B,MAAME,WAAW,GAAGD,IAAI,KAAK,MAAM,GAAGE,gBAAgB,CAACH,KAAK,CAACI,GAAG,CAAC,GAAGH,IAAI;EACxE,QAAQC,WAAW;IACjB,KAAK,UAAU;MACb,OAAO,IAAIP,YAAY,CAACK,KAAK,CAAC;IAChC,KAAK,KAAK;MACR,OAAO,IAAIJ,UAAU,CAACI,KAAK,CAAC;IAC9B;MAEE,MAAM,IAAIK,KAAK,CAAC,+BAA+B,CAAC;EAAC;AAEvD;;AAGA,SAASF,gBAAgB,CAACC,GAAW,EAAoB;EACvD,KAAK,MAAME,OAAO,IAAIR,QAAQ,EAAE;IAC9B,IAAIQ,OAAO,CAACC,OAAO,IAAID,OAAO,CAACC,OAAO,CAACH,GAAG,CAAC,EAAE;MAC3C,OAAOE,OAAO,CAACL,IAAI;IACrB;EACF;EAEA,OAAO,KAAK;AACd"}
@@ -1,61 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
-
3
- import { ImageSource } from '../image-source';
4
- import { mergeImageServiceProps, getFetchFunction } from './image-service';
5
- export class ArcGISImageService extends ImageSource {
6
- constructor(props) {
7
- super();
8
- _defineProperty(this, "props", void 0);
9
- _defineProperty(this, "fetch", void 0);
10
- this.props = mergeImageServiceProps(props);
11
- this.fetch = getFetchFunction(this.props);
12
- }
13
-
14
- async getMetadata() {
15
- return await this.info();
16
- }
17
-
18
- async getImage(parameters) {
19
- throw new Error('not implemented');
20
- }
21
-
22
- async info() {
23
- throw new Error('not implemented');
24
- }
25
-
26
- exportImage(options) {
27
- throw new Error('not implemented');
28
- }
29
-
30
- infoURL(options) {
31
- return this.props.url;
32
- }
33
-
34
- exportImageURL(options) {
35
- return this.props.url;
36
- }
37
-
38
- getUrl(options, extra) {
39
- let url = "".concat(this.props.url);
40
- let first = true;
41
- for (const [key, value] of Object.entries(options)) {
42
- url += first ? '?' : '&';
43
- first = false;
44
- if (Array.isArray(value)) {
45
- url += "".concat(key.toUpperCase(), "=").concat(value.join(','));
46
- } else {
47
- url += "".concat(key.toUpperCase(), "=").concat(value ? String(value) : '');
48
- }
49
- }
50
- return url;
51
- }
52
-
53
- async checkResponse(response) {
54
- if (!response.ok) {
55
- throw new Error('error');
56
- }
57
- }
58
- }
59
- _defineProperty(ArcGISImageService, "type", 'arcgis-image-server');
60
- _defineProperty(ArcGISImageService, "testURL", url => url.toLowerCase().includes('ImageServer'));
61
- //# sourceMappingURL=arcgis-image-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arcgis-image-service.js","names":["ImageSource","mergeImageServiceProps","getFetchFunction","ArcGISImageService","constructor","props","fetch","getMetadata","info","getImage","parameters","Error","exportImage","options","infoURL","url","exportImageURL","getUrl","extra","first","key","value","Object","entries","Array","isArray","toUpperCase","join","String","checkResponse","response","ok","toLowerCase","includes"],"sources":["../../../../../src/lib/data-sources/image-services/arcgis-image-service.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {ImageType} from '@loaders.gl/images';\nimport type {ImageSourceMetadata, GetImageParameters} from '../image-source';\nimport {ImageSource} from '../image-source';\nimport {ImageServiceProps, mergeImageServiceProps, getFetchFunction} from './image-service';\n\nexport class ArcGISImageService extends ImageSource {\n static type: 'arcgis-image-server' = 'arcgis-image-server';\n static testURL = (url: string): boolean => url.toLowerCase().includes('ImageServer');\n\n props: Required<ImageServiceProps>;\n fetch: (url: string, options?: RequestInit) => Promise<Response>;\n\n constructor(props: ImageServiceProps) {\n super();\n this.props = mergeImageServiceProps(props);\n this.fetch = getFetchFunction(this.props);\n }\n\n // ImageSource (normalized endpoints)\n\n async getMetadata(): Promise<ImageSourceMetadata> {\n return (await this.info()) as ImageSourceMetadata;\n // TODO - normalize metadata\n }\n\n async getImage(parameters: GetImageParameters): Promise<ImageType> {\n throw new Error('not implemented');\n // TODO - Map generic parameters to ArcGIS specific parameters\n // return await this.exportImage(parameters);\n }\n\n // ImageServer endpoints\n\n async info(): Promise<unknown> {\n // We just need a JSON parsing...\n // return this.getUrl({path: '', ...options});\n throw new Error('not implemented');\n }\n\n /** \n * Form a URL to an ESRI ImageServer\n // https://sampleserver6.arcgisonline.com/arcgis/rest/services/NLCDLandCover2001/ImageServer/exportImage?bbox=${bounds[0]},${bounds[1]},${bounds[2]},${bounds[3]}&bboxSR=4326&size=${width},${height}&imageSR=102100&time=&format=jpgpng&pixelType=U8&noData=&noDataInterpretation=esriNoDataMatchAny&interpolation=+RSP_NearestNeighbor&compression=&compressionQuality=&bandIds=&mosaicRule=&renderingRule=&f=image`,\n */\n exportImage(options: {\n boundingBox: [number, number, number, number];\n boundingBoxSR?: string;\n width: number;\n height: number;\n imageSR?: string;\n time?: never;\n format?: 'jpgpng';\n pixelType?: 'U8';\n noData?: never;\n noDataInterpretation?: 'esriNoDataMatchAny';\n interpolation?: '+RSP_NearestNeighbor';\n compression?: never;\n compressionQuality?: never;\n bandIds?: never;\n mosaicRule?: never;\n renderingRule?: never;\n f?: 'image';\n }): Promise<ImageType> {\n // See WMSService.getMap()\n throw new Error('not implemented');\n }\n\n // URL creators\n\n infoURL(options: {parameters?: Record<string, unknown>}): string {\n return this.props.url;\n // return this.getUrl({path: '', ...options});\n }\n\n /** \n * Form a URL to an ESRI ImageServer\n // https://sampleserver6.arcgisonline.com/arcgis/rest/services/NLCDLandCover2001/ImageServer/exportImage?bbox=${bounds[0]},${bounds[1]},${bounds[2]},${bounds[3]}&bboxSR=4326&size=${width},${height}&imageSR=102100&time=&format=jpgpng&pixelType=U8&noData=&noDataInterpretation=esriNoDataMatchAny&interpolation=+RSP_NearestNeighbor&compression=&compressionQuality=&bandIds=&mosaicRule=&renderingRule=&f=image`,\n */\n exportImageURL(options: {\n boundingBox: [number, number, number, number];\n boundingBoxSR?: string;\n width: number;\n height: number;\n imageSR?: string;\n time?: never;\n format?: 'jpgpng';\n pixelType?: 'U8';\n noData?: never;\n noDataInterpretation?: 'esriNoDataMatchAny';\n interpolation?: '+RSP_NearestNeighbor';\n compression?: never;\n compressionQuality?: never;\n bandIds?: never;\n mosaicRule?: never;\n renderingRule?: never;\n f?: 'image';\n }): string {\n // const {boundingBox} = options;\n // const bbox = `bbox=${boundingBox[0]},${boundingBox[1]},${boundingBox[2]},${boundingBox[3]}`;\n // const size = `size=${width},${height}`;\n // return this.getUrl({path: 'exportImage'});\n return this.props.url;\n }\n\n // INTERNAL METHODS\n\n /**\n * @note protected, since perhaps getWMSUrl may need to be overridden to handle certain backends?\n * @note if override is common, maybe add a callback prop?\n * */\n protected getUrl(options: Record<string, unknown>, extra?: Record<string, unknown>): string {\n let url = `${this.props.url}`;\n let first = true;\n for (const [key, value] of Object.entries(options)) {\n url += first ? '?' : '&';\n first = false;\n if (Array.isArray(value)) {\n url += `${key.toUpperCase()}=${value.join(',')}`;\n } else {\n url += `${key.toUpperCase()}=${value ? String(value) : ''}`;\n }\n }\n return url;\n }\n\n /** Checks for and parses a WMS XML formatted ServiceError and throws an exception */\n protected async checkResponse(response: Response) {\n if (!response.ok) {\n // } || response.headers['content-type'] === WMSErrorLoader.mimeTypes[0]) {\n // const arrayBuffer = await response.arrayBuffer();\n // const error = await WMSErrorLoader.parse(arrayBuffer, this.loadOptions);\n throw new Error('error');\n }\n }\n}\n"],"mappings":";;AAIA,SAAQA,WAAW,QAAO,iBAAiB;AAC3C,SAA2BC,sBAAsB,EAAEC,gBAAgB,QAAO,iBAAiB;AAE3F,OAAO,MAAMC,kBAAkB,SAASH,WAAW,CAAC;EAOlDI,WAAW,CAACC,KAAwB,EAAE;IACpC,KAAK,EAAE;IAAC;IAAA;IACR,IAAI,CAACA,KAAK,GAAGJ,sBAAsB,CAACI,KAAK,CAAC;IAC1C,IAAI,CAACC,KAAK,GAAGJ,gBAAgB,CAAC,IAAI,CAACG,KAAK,CAAC;EAC3C;;EAIA,MAAME,WAAW,GAAiC;IAChD,OAAQ,MAAM,IAAI,CAACC,IAAI,EAAE;EAE3B;;EAEA,MAAMC,QAAQ,CAACC,UAA8B,EAAsB;IACjE,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EAGpC;;EAIA,MAAMH,IAAI,GAAqB;IAG7B,MAAM,IAAIG,KAAK,CAAC,iBAAiB,CAAC;EACpC;;EAMAC,WAAW,CAACC,OAkBX,EAAsB;IAErB,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC;;EAIAG,OAAO,CAACD,OAA+C,EAAU;IAC/D,OAAO,IAAI,CAACR,KAAK,CAACU,GAAG;EAEvB;;EAMAC,cAAc,CAACH,OAkBd,EAAU;IAKT,OAAO,IAAI,CAACR,KAAK,CAACU,GAAG;EACvB;;EAQUE,MAAM,CAACJ,OAAgC,EAAEK,KAA+B,EAAU;IAC1F,IAAIH,GAAG,aAAM,IAAI,CAACV,KAAK,CAACU,GAAG,CAAE;IAC7B,IAAII,KAAK,GAAG,IAAI;IAChB,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACV,OAAO,CAAC,EAAE;MAClDE,GAAG,IAAII,KAAK,GAAG,GAAG,GAAG,GAAG;MACxBA,KAAK,GAAG,KAAK;MACb,IAAIK,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,EAAE;QACxBN,GAAG,cAAOK,GAAG,CAACM,WAAW,EAAE,cAAIL,KAAK,CAACM,IAAI,CAAC,GAAG,CAAC,CAAE;MAClD,CAAC,MAAM;QACLZ,GAAG,cAAOK,GAAG,CAACM,WAAW,EAAE,cAAIL,KAAK,GAAGO,MAAM,CAACP,KAAK,CAAC,GAAG,EAAE,CAAE;MAC7D;IACF;IACA,OAAON,GAAG;EACZ;;EAGA,MAAgBc,aAAa,CAACC,QAAkB,EAAE;IAChD,IAAI,CAACA,QAAQ,CAACC,EAAE,EAAE;MAIhB,MAAM,IAAIpB,KAAK,CAAC,OAAO,CAAC;IAC1B;EACF;AACF;AAAC,gBAhIYR,kBAAkB,UACQ,qBAAqB;AAAA,gBAD/CA,kBAAkB,aAEXY,GAAW,IAAcA,GAAG,CAACiB,WAAW,EAAE,CAACC,QAAQ,CAAC,aAAa,CAAC"}
@@ -1,72 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
-
3
- import { ImageLoader } from '@loaders.gl/images';
4
- import { ImageSource } from '../image-source';
5
-
6
- export class ImageService extends ImageSource {
7
- constructor(props) {
8
- super();
9
- _defineProperty(this, "props", void 0);
10
- _defineProperty(this, "fetch", void 0);
11
- this.props = mergeImageServiceProps(props);
12
- this.fetch = getFetchFunction(props);
13
- }
14
-
15
- async getMetadata() {
16
- throw new Error('ImageSource.getMetadata not implemented');
17
- }
18
- async getImage(parameters) {
19
- const granularParameters = this.getGranularParameters(parameters);
20
- const url = this.getURLFromTemplate(granularParameters);
21
- const response = await this.fetch(url);
22
- const arrayBuffer = await response.arrayBuffer();
23
- return await ImageLoader.parse(arrayBuffer);
24
- }
25
-
26
- getGranularParameters(parameters) {
27
- const [east, north, west, south] = parameters.bbox;
28
- return {
29
- ...parameters,
30
- east,
31
- north,
32
- south,
33
- west
34
- };
35
- }
36
-
37
- getURLFromTemplate(parameters) {
38
- let url = this.props.url;
39
- for (const [key, value] of Object.entries(parameters)) {
40
- url = url.replace("${".concat(key, "}"), String(value));
41
- url = url.replace("{".concat(key, "}"), String(value));
42
- }
43
- return url;
44
- }
45
- }
46
-
47
- _defineProperty(ImageService, "type", 'template');
48
- _defineProperty(ImageService, "testURL", url => url.toLowerCase().includes('{'));
49
- export function getFetchFunction(options) {
50
- const fetchFunction = options === null || options === void 0 ? void 0 : options.fetch;
51
-
52
- if (fetchFunction && typeof fetchFunction === 'function') {
53
- return (url, fetchOptions) => fetchFunction(url, fetchOptions);
54
- }
55
-
56
- const fetchOptions = options === null || options === void 0 ? void 0 : options.fetch;
57
- if (fetchOptions && typeof fetchOptions !== 'function') {
58
- return url => fetch(url, fetchOptions);
59
- }
60
-
61
- return url => fetch(url);
62
- }
63
- export function mergeImageServiceProps(props) {
64
- return {
65
- ...props,
66
- loadOptions: {
67
- ...props.loadOptions,
68
- fetch: getFetchFunction(props.loadOptions)
69
- }
70
- };
71
- }
72
- //# sourceMappingURL=image-service.js.map