Stacking Profiles
Stacking profiles determine the order images are layered in the Maxar:Imagery
layer. They consist of a stack of layers which are filled with imagery. Each layer in the stack has defined rules to filter images and how to order them. If a given rule does not fill all of the pixels, the next rule is tried until either the image is filled or the list of rules is exhausted.
Using stacking profiles
When making API requests, you can request a given stacking profile be used by adding the parameter profile
to your WMS request.
profile=Most_Aesthetic_Color
Example WMS request
https://api.maxar.com/basemaps/v1/ogc/wms?service=wms&request=GetMap&version=1.3.0&bbox=-13640313.39894550852,4546650.010356360115,-13636538.06416588835,4550119.459330277517&crs=EPSG:3857&layers=Maxar:Imagery&height=1719&width=1580&format=image/vnd.jpeg-png&profile=Most_Aesthetic_All
Standard stacking profiles
These are the standard profiles available:
Most_Aesthetic_All
- For all of the following layers, sort the images by least cloud cover and then most recent capture date.
- For the first layer try to fill the bounds with Vivid Advanced 15 mosaic imagery.
- Next fill any empty areas with Vivid Standard 30 mosaic imagery.
- Next try with Daily Take imagery with low cloud cover (less than 10%).
- Next try with any other imagery with low cloud cover (less than 10%).
- Next try with any other Daily Take imagery.
- Next fill any empty areas with any other imagery available.
- Finally if any pixels are still empty, use Landsat imagery.
Details
Layer Rules
[
{
"custom_name": "VIVID_ADVANCED_15",
"filters": "productName='VIVID_ADVANCED_15'",
"enabled": true,
"order": 0
},
{
"custom_name": "VIVID_STANDARD_30",
"filters": "productName='VIVID_STANDARD_30'",
"enabled": true,
"order": 1
},
{
"custom_name": "DAILY_TAKE with cloud cover < 0.1",
"filters": "productName = 'DAILY_TAKE' AND cloudCover < 0.1",
"enabled": true,
"order": 2
},
{
"custom_name": "Non DAILY_TAKE with cloud cover < 0.1",
"filters": "NOT productName = 'DAILY_TAKE' AND cloudCover < 0.1",
"enabled": true,
"order": 3
},
{
"custom_name": "DAILY_TAKE with cloud cover > 0.1",
"filters": "productName = 'DAILY_TAKE' AND cloudCover >= 0.1",
"enabled": true,
"order": 4
},
{
"custom_name": "Non DAILY_TAKE with cloud cover > 0.1",
"filters": "NOT productName = 'DAILY_TAKE' AND cloudCover >= 0.1",
"enabled": true,
"order": 5
},
{
"custom_name": null,
"filters": "sensorCode='LANDSAT'",
"enabled": true,
"order": 6
}
]
Sort Order
ASC:cloudCover,DESC:acquisitionDate
Most_Aesthetic_Color
- For all layers, sort the images by least cloud cover and then most recent capture date.
- For all layers, only select color imagery.
- First try to fill the bounds with any Maxar Daily Take images that have less than 10% cloud cover.
- Next fill any empty areas with other color images that have less than 10% cloud cover.
- Next try with any remaining Maxar Daily Take images that did not meet the first rule for cloud cover.
- Next try with Vivid Advanced 15 mosaic imagery.
- Next try with Vivid Standard 30 mosaic imagery.
- Finally if any pixels are still empty, use Landsat imagery.
Details
Layer Rules
[
{
"custom_name": "RGB DAILY_TAKE with cloudCover < 0.1",
"filters": "productName = 'DAILY_TAKE' AND (productType = 'Pan Sharpened Natural Color' OR bandDescription IN ('Natural Color','Pan Sharpened Natural Color')) AND cloudCover < 0.1",
"enabled": true,
"order": 0
},
{
"custom_name": "Non DAILY_TAKE RBG",
"filters": "NOT productName = 'DAILY_TAKE' AND (productType = 'Pan Sharpened Natural Color' OR bandDescription IN ('Natural Color','Pan Sharpened Natural Color')) AND cloudCover < 0.1",
"enabled": true,
"order": 1
},
{
"custom_name": "DAILY_TAKE RBG with cloudCover >= 0.1",
"filters": "productName = 'DAILY_TAKE' AND (productType = 'Pan Sharpened Natural Color' OR bandDescription IN ('Natural Color','Pan Sharpened Natural Color')) AND cloudCover >= 0.1",
"enabled": true,
"order": 2
},
{
"custom_name": "VIVID_ADVANCED_15",
"filters": "productName='VIVID_ADVANCED_15'",
"enabled": true,
"order": 3
},
{
"custom_name": "VIVID_STANDARD_30",
"filters": "productName='VIVID_STANDARD_30'",
"enabled": true,
"order": 4
},
{
"custom_name": "Landsat to fill remaining gaps in mosaic coverage.",
"filters": "sensorCode='LANDSAT'",
"enabled": true,
"order": 5
}
]
Sort Order
ASC:cloudCover,DESC:acquisitionDate
Most_Recent
- For all layers, sort the images by most recent capture date.
- First try to fill the bounds with any non-mosaic images.
- Finally use Landsat imagery.
Details
Least_Cloud_Cover
- For all layers, sort the images by lowest cloud cover and then most recent capture date.
- First try to fill the bounds with any non-mosaic images.
- Finally use Landsat imagery.
Details
Layer Rules
[
{
"custom_name": "Non-mosaic",
"filters": "NOT rasterType = 'Mosaic Product'",
"enabled": true,
"order": 0
},
{
"custom_name": "Landsat to fill remaining gaps in mosaic coverage.",
"filters": "sensorCode='LANDSAT'",
"enabled": true,
"order": 1
}
]
Sort Order
ASC:cloudCover,DESC:acquisitionDate
Only_Mosaics
- For all layers, sort the mosaics by most recent creation date.
- First try to fill the bounds with any custom mosaics.
- Next try with Vivid Advanced 15 mosaics.
- Next try with Vivid Standard 30 mosaics.
- Finally use Landsat imagery.
Details
Layer Rules
[
{
"custom_name": null,
"filters": "rasterType='Mosaic Product' AND NOT productName IN ('VIVID_ADVANCED_15', 'VIVID_STANDARD_30')",
"enabled": true,
"order": 0
},
{
"custom_name": null,
"filters": "productName IN ('VIVID_ADVANCED_15')",
"enabled": true,
"order": 1
},
{
"custom_name": null,
"filters": "productName IN ('VIVID_STANDARD_30')",
"enabled": true,
"order": 2
},
{
"custom_name": null,
"filters": "sensorCode='LANDSAT'",
"enabled": true,
"order": 3
}
]
Sort Order
DESC:createdDate
If a profile is not specified in an API request,
Most_Aesthetic_All
is used.
Mixing stacking profiles and request parameters
Stacking profiles apply CQL filters and WMS sortby
parameters to the request. If your request also includes these parameters, they are combined with the stacking profile parameters. CQL filters are appended with AND logic. User sortby
fields are appended to the stacking profile fields, which means the stacking profile sorting has precedence. To sort on other fields requires not using a stacking profile.
If using custom CQL filters causes unexpected results, it is possible that you have created a query that can not return results. For example, combining a stacking profile that only returns color images with a custom CQL filter that only matches Worldview-1 panchromatic images would make for an impossible query.