diff --git a/internal/controller/mapfilegenerator/mapper.go b/internal/controller/mapfilegenerator/mapper.go index 199cd43..d2df9da 100644 --- a/internal/controller/mapfilegenerator/mapper.go +++ b/internal/controller/mapfilegenerator/mapper.go @@ -257,7 +257,7 @@ func getWMSLayer(serviceLayer pdoknlv3.Layer, serviceExtent string, wms *pdoknlv groupName := "" parent := wms.Spec.Service.GetParentLayer(serviceLayer) // If the layer falls directly under the toplayer, the groupname is omitted - if !parent.IsTopLayer() && parent.IsGroupLayer() && parent.Name != nil && parent.Visible { + if parent != nil && !parent.IsTopLayer() && parent.IsGroupLayer() && parent.Name != nil && parent.Visible { groupName = *parent.Name } @@ -300,6 +300,16 @@ func getWMSLayer(serviceLayer pdoknlv3.Layer, serviceExtent string, wms *pdoknlv Offsite: "", } + // Let child Layers inherit Scale denominators from their parent if not explicitly set. + if parent != nil { + if result.MinScale == nil { + result.MinScale = parent.MinScaleDenominator + } + if result.MaxScale == nil { + result.MaxScale = parent.MaxScaleDenominator + } + } + for _, style := range serviceLayer.Styles { stylePath := "/styling/" + smoothoperatorutils.PointerVal(style.Visualization, "") result.Styles = append(result.Styles, Style{ diff --git a/internal/controller/mapfilegenerator/test_data/expected/wms_group.json b/internal/controller/mapfilegenerator/test_data/expected/wms_group.json index 98aff93..a126897 100644 --- a/internal/controller/mapfilegenerator/test_data/expected/wms_group.json +++ b/internal/controller/mapfilegenerator/test_data/expected/wms_group.json @@ -246,7 +246,7 @@ "keywords": "Man Made,Duikersifonhevel,Aquaduct,Brug,Stuw,Vastedam,Waterkering,Sluis.", "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", "maxscale": "50000", - "minscale": "1", + "minscale": "2", "name": "HY.PhysicalWaters.ManMadeObject.crossingpoint", "styles": [ { @@ -292,7 +292,7 @@ "group_name": "HY.PhysicalWaters.ManMadeObject", "keywords": "Man Made,Duikersifonhevel,Aquaduct,Brug,Stuw,Vastedam,Waterkering,Sluis.", "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", - "maxscale": "50000", + "maxscale": "25000", "minscale": "1", "name": "HY.PhysicalWaters.ManMadeObject.sluice", "styles": [ diff --git a/internal/controller/mapfilegenerator/test_data/input/wms_group.yaml b/internal/controller/mapfilegenerator/test_data/input/wms_group.yaml index df69805..e73a931 100644 --- a/internal/controller/mapfilegenerator/test_data/input/wms_group.yaml +++ b/internal/controller/mapfilegenerator/test_data/input/wms_group.yaml @@ -300,8 +300,6 @@ spec: - Vastedam - Waterkering - Sluis. - maxscaledenominator: "50000" - minscaledenominator: "1" name: HY.PhysicalWaters.ManMadeObject.lock styles: - name: HY.PhysicalWaters.ManMadeObject.Default @@ -348,8 +346,7 @@ spec: - Vastedam - Waterkering - Sluis. - maxscaledenominator: "50000" - minscaledenominator: "1" + minscaledenominator: "2" name: HY.PhysicalWaters.ManMadeObject.crossingpoint styles: - name: HY.PhysicalWaters.ManMadeObject.Default @@ -395,8 +392,7 @@ spec: - Vastedam - Waterkering - Sluis. - maxscaledenominator: "50000" - minscaledenominator: "1" + maxscaledenominator: "25000" name: HY.PhysicalWaters.ManMadeObject.sluice styles: - name: HY.PhysicalWaters.ManMadeObject.Default diff --git a/internal/controller/mapfilegenerator/test_data/input/wms_group_and_toplayer.yaml b/internal/controller/mapfilegenerator/test_data/input/wms_group_and_toplayer.yaml index 8b53f3a..3c767a5 100644 --- a/internal/controller/mapfilegenerator/test_data/input/wms_group_and_toplayer.yaml +++ b/internal/controller/mapfilegenerator/test_data/input/wms_group_and_toplayer.yaml @@ -676,7 +676,6 @@ spec: keywords: - Grens - Kadastrale grenzen - maxscaledenominator: "6001" minscaledenominator: "50" name: KadastraleGrens styles: