LuciadFusion coverages offer the best possible performance for data serving, but they also have drawbacks. The approach described in this article offers a middle ground, and involves both a LuciadFusion Coverage, and the native data:
-
The coverage is used when the map is zoomed out.
-
The native data is used when the map is zoomed in, beyond a certain scale tipping point.
This approach is more complex, but offers the following advantages:
-
The coverage needs to consist of the overview levels only, without the fully detailed data. As a result, less disk space is required for the coverage, and a common issue with large data sets is avoided.
-
The fusion process takes less time to create the coverage, because less data is written to disk.
-
When the map is zoomed in at the most detailed level, the native data is displayed without changes, and therefore without the chance of re-sampling artifacts. A coverage defines a single structure for its entire extents. If the native data had varying pixel density, or mixed coordinate references systems, re-sampling artifacts cannot be avoided after it has been fused as a coverage. Native data files may use different UTM zones, for example, or DTED data may use different pixel densities depending on the latitude.
-
For large vector data sets, you can set up fast, pre-computed tiles for zoomed-out maps and fully detailed vector data for zoomed-in maps.
Serving from native data at the most detailed levels instead of from coverages can put extra pressure on the server, depending on the nature of the native data.
To create the coverage, take the steps described in How to create a LuciadFusion coverage in the DCM, but aside from changing the ID, you have to make one additional change:
-
In the Tile Store Manager tab, go to the coverage in the tree view, and select the asset you added as a child element of the coverage. Do so before you commit the asset.
-
In the Metadata Editor tab, change the Compilation scale. Multiply it by about a factor 3 if you are working with imagery without overview levels. For example, if it says 1:3000, change it to 1:9000. This will be the tipping point where we make the switch from coverage to native data and the other way around. If you are using imagery data that contains overview levels, for example ECW, MrSID, JPEG2000 or GeoTIFF in some cases, you can use a larger factor. For vector data, you will have to come up with a scale tipping point yourself. If the factor is 3, the coverage uses about 9 times less disk space (3*3). Processing is noticeably faster, but not 9 times.
Complete the creation of the coverage as described in How to create a LuciadFusion coverage in the DCM, and make the data available in Studio. The creation of the Studio product is different from the one in How to create a LuciadFusion coverage in the DCM though, because you must add both the fused coverage and the native data to the product.
To create the product:
-
Create two
.sld
files, one to show imagery when the map is zoomed out, one when the map is zoomed in.
You can find example files insamples/resources/Data/LuciadFusionSLD/
: the filesrasterOnlyWhenZoomedOut.sld
andrasterOnlyWhenZoomedIn.sld
. Make sure to open them in a text editor, and modify the scale denominator in both files to match the tipping scale you defined,9000
in the example. -
Point Studio to those style files, either by adding a data root, or by uploading them.
-
Select all native data in the Data tab of Studio, and create a Product from it.
-
Associate the
rasterOnlyWhenZoomedIn
style with all native data entries. -
Open up the details page of the product, and use the preview to verify that the native data does not show up when the map is zoomed out, not even the red hatching pattern.
-
Add the coverage to the same product.
-
Associate the rasterOnlyWhenZoomedOut style with the coverage.
-
You have now created a product that shows the coverage when the map is zoomed out above the tipping scale, and that shows the native data when the map zoomed in beyond the tipping scale.
The last step is to publish this product on a WMS or WMTS service, as you would do for any other product.
Pixel-perfect WMS
To achieve pixel-perfect results from a WMS server, make sure to activate non-tiled behavior in the WMS client, and use a 2D view with the same coordinate reference system as the one used for the source data. Otherwise, your data may have to be transformed before it can be displayed in 3D views and with tiled behavior. |