|
63 | 63 | from eoxserver.render.colors import BASE_COLORS, COLOR_SCALES, OFFSITE_COLORS |
64 | 64 | from eoxserver.resources.coverages import crss |
65 | 65 | from eoxserver.resources.coverages.dateline import ( |
66 | | - extent_crosses_dateline, wrap_extent_around_dateline |
| 66 | + extent_crosses_dateline, |
| 67 | + get_extent_wrappings, |
67 | 68 | ) |
68 | 69 | from eoxserver.processing.gdal import reftools |
69 | 70 |
|
70 | 71 | import logging |
| 72 | + |
71 | 73 | logger = logging.getLogger(__name__) |
72 | 74 |
|
73 | 75 |
|
@@ -366,14 +368,16 @@ def make_browse_layer_generator(self, map_obj, browses, map_, |
366 | 368 | creation_info, reset_info = (None, None) |
367 | 369 |
|
368 | 370 | layer_objs = _create_raster_layer_objs( |
369 | | - map_obj, browse.extent, browse.spatial_reference, |
370 | | - creation_info.filename if creation_info else '', |
371 | | - filename_generator, {} |
| 371 | + map_obj, |
| 372 | + browse.extent, |
| 373 | + browse.spatial_reference, |
| 374 | + creation_info.filename if creation_info else "", |
| 375 | + filename_generator, |
| 376 | + browse.env, |
372 | 377 | ) |
373 | 378 |
|
374 | 379 | for layer_obj in layer_objs: |
375 | 380 | if creation_info: |
376 | | - layer_obj.data = creation_info.filename |
377 | 381 | if creation_info.env: |
378 | 382 | ms.set_env(map_obj, creation_info.env, True) |
379 | 383 |
|
@@ -479,8 +483,13 @@ def make_browse_layer_generator(self, map_obj, browses, map_, |
479 | 483 |
|
480 | 484 | elif isinstance(browse, Browse): |
481 | 485 | layer_objs = _create_raster_layer_objs( |
482 | | - map_obj, browse.extent, browse.spatial_reference, |
483 | | - browse.filename, filename_generator, browse.env, browse.mode, |
| 486 | + map_obj, |
| 487 | + browse.extent, |
| 488 | + browse.spatial_reference, |
| 489 | + browse.filename, |
| 490 | + filename_generator, |
| 491 | + browse.env, |
| 492 | + browse.mode, |
484 | 493 | ) |
485 | 494 | ms.set_env(map_obj, browse.env, True) |
486 | 495 | elif browse is None: |
@@ -828,32 +837,31 @@ def _create_raster_layer_objs(map_obj, extent, sr, data, filename_generator, env |
828 | 837 | if resample: |
829 | 838 | layer_obj.setProcessingKey('RESAMPLE', resample) |
830 | 839 |
|
| 840 | + layers = [layer_obj] |
831 | 841 | if extent and sr.srid and extent_crosses_dateline(extent, sr.srid): |
832 | | - wrapped_extent = wrap_extent_around_dateline(extent, sr.srid) |
833 | | - |
834 | | - wrapped_layer_obj = ms.layerObj(map_obj) |
835 | | - wrapped_layer_obj.type = ms.MS_LAYER_RASTER |
836 | | - wrapped_layer_obj.status = ms.MS_ON |
837 | | - |
838 | | - wrapped_data = filename_generator.generate() |
839 | | - with gdal.config_env(env): |
840 | | - vrt.with_extent(data, wrapped_extent, wrapped_data) |
841 | | - wrapped_layer_obj.data = wrapped_data |
842 | | - # assumption that RGBA already has transparency in alpha band |
843 | | - if browse_mode != BROWSE_MODE_RGBA: |
844 | | - wrapped_layer_obj.offsite = ms.colorObj(0, 0, 0) |
845 | | - |
846 | | - wrapped_layer_obj.metadata.set("ows_srs", short_epsg) |
847 | | - wrapped_layer_obj.metadata.set("wms_srs", short_epsg) |
848 | | - wrapped_layer_obj.setProjection(sr.proj) |
849 | | - |
850 | | - wrapped_layer_obj.setExtent(*wrapped_extent) |
851 | | - wrapped_layer_obj.metadata.set( |
852 | | - "wms_extent", "%f %f %f %f" % wrapped_extent |
853 | | - ) |
854 | | - return [layer_obj, wrapped_layer_obj] |
855 | | - else: |
856 | | - return [layer_obj] |
| 842 | + for wrapped_extent in get_extent_wrappings(extent, sr.srid): |
| 843 | + wrapped_layer_obj = ms.layerObj(map_obj) |
| 844 | + wrapped_layer_obj.type = ms.MS_LAYER_RASTER |
| 845 | + wrapped_layer_obj.status = ms.MS_ON |
| 846 | + |
| 847 | + wrapped_data = filename_generator.generate() |
| 848 | + with gdal.config_env(env): |
| 849 | + vrt.with_extent(data, wrapped_extent, wrapped_data) |
| 850 | + wrapped_layer_obj.data = wrapped_data |
| 851 | + |
| 852 | + # assumption that RGBA already has transparency in alpha band |
| 853 | + if browse_mode != BROWSE_MODE_RGBA: |
| 854 | + wrapped_layer_obj.offsite = ms.colorObj(0, 0, 0) |
| 855 | + |
| 856 | + wrapped_layer_obj.metadata.set("ows_srs", short_epsg) |
| 857 | + wrapped_layer_obj.metadata.set("wms_srs", short_epsg) |
| 858 | + wrapped_layer_obj.setProjection(sr.proj) |
| 859 | + |
| 860 | + wrapped_layer_obj.setExtent(*wrapped_extent) |
| 861 | + wrapped_layer_obj.metadata.set("wms_extent", "%f %f %f %f" % wrapped_extent) |
| 862 | + layers.append(wrapped_layer_obj) |
| 863 | + |
| 864 | + return layers |
857 | 865 |
|
858 | 866 |
|
859 | 867 | def _create_polygon_layer(map_obj): |
|
0 commit comments