diff --git a/internal/controller/mapfilegenerator/mapper.go b/internal/controller/mapfilegenerator/mapper.go index 9c728fa..739972f 100644 --- a/internal/controller/mapfilegenerator/mapper.go +++ b/internal/controller/mapfilegenerator/mapper.go @@ -16,6 +16,7 @@ import ( const ( defaultMaxFeatures = 1000 geopackagePath = "/srv/data/gpkg" + defaultExtent = "-25000 250000 280000 860000" ) var mapserverDebugLevel = 0 @@ -68,25 +69,21 @@ func MapWFSToMapfileGeneratorInput(wfs *pdoknlv3.WFS, ownerInfo *smoothoperatorv DebugLevel: mapserverDebugLevel, }, MaxFeatures: smoothoperatorutils.PointerVal(wfs.Spec.Service.CountDefault, strconv.Itoa(defaultMaxFeatures)), - Layers: getWFSLayers(wfs.Spec.Service.FeatureTypes), + Layers: getWFSLayers(wfs.Spec.Service), } return input, nil } -func getWFSLayers(featureTypes []pdoknlv3.FeatureType) (layers []WFSLayer) { - for _, featureType := range featureTypes { - bbox := pdoknlv3.FeatureBbox{} - if featureType.Bbox != nil { - bbox = *featureType.Bbox - } +func getWFSLayers(service pdoknlv3.WFSService) (layers []WFSLayer) { + for _, featureType := range service.FeatureTypes { layer := WFSLayer{ BaseLayer: BaseLayer{ Name: featureType.Name, Title: mapperutils.EscapeQuotes(featureType.Title), Abstract: mapperutils.EscapeQuotes(featureType.Abstract), Keywords: strings.Join(featureType.Keywords, ","), - Extent: bbox.DefaultCRS.ToExtent(), + Extent: getWFSExtent(featureType, service), MetadataID: featureType.DatasetMetadataURL.CSW.MetadataIdentifier, Columns: getColumns(featureType.Data), TableName: featureType.Data.GetTableName(), @@ -104,6 +101,26 @@ func getWFSLayers(featureTypes []pdoknlv3.FeatureType) (layers []WFSLayer) { return } +func getWFSExtent(featureType pdoknlv3.FeatureType, service pdoknlv3.WFSService) string { + if featureType.Bbox != nil { + return featureType.Bbox.DefaultCRS.ToExtent() + } + if service.Bbox != nil { + return service.Bbox.DefaultCRS.ToExtent() + } + return defaultExtent +} + +func getWMSExtent(serviceLayer pdoknlv3.Layer, serviceExtent string) string { + if len(serviceLayer.BoundingBoxes) > 0 { + return serviceLayer.BoundingBoxes[0].ToExtent() + } + if serviceExtent != "" { + return serviceExtent + } + return defaultExtent +} + func getColumns(data pdoknlv3.Data) []Column { columns := []Column{{Name: "fuuid"}} if data.GetColumns() != nil { @@ -220,15 +237,7 @@ func MapWMSToMapfileGeneratorInput(wms *pdoknlv3.WMS, _ *smoothoperatorv1.OwnerI return result, nil } -// TODO fix linting (cyclop) -// -//nolint:cyclop func getWMSLayer(serviceLayer pdoknlv3.Layer, serviceExtent string, wms *pdoknlv3.WMS) WMSLayer { - layerExtent := serviceExtent - if len(serviceLayer.BoundingBoxes) > 0 { - layerExtent = serviceLayer.BoundingBoxes[0].ToExtent() - } - groupName := "" parent := serviceLayer.GetParent(&wms.Spec.Service.Layer) // If the layer falls directly under the toplayer, the groupname is omitted @@ -257,7 +266,7 @@ func getWMSLayer(serviceLayer pdoknlv3.Layer, serviceExtent string, wms *pdoknlv Title: smoothoperatorutils.PointerVal(serviceLayer.Title, ""), Abstract: smoothoperatorutils.PointerVal(serviceLayer.Abstract, ""), Keywords: strings.Join(serviceLayer.Keywords, ","), - Extent: layerExtent, + Extent: getWMSExtent(serviceLayer, serviceExtent), MetadataID: metadataID, Columns: columns, GeometryType: nil, diff --git a/internal/controller/shared_controller.go b/internal/controller/shared_controller.go index 0c0065a..b93b3e5 100644 --- a/internal/controller/shared_controller.go +++ b/internal/controller/shared_controller.go @@ -608,7 +608,6 @@ func mutateConfigMapMapfileGenerator[R Reconciler, O pdoknlv3.WMSWFS](r R, obj O if err != nil { return err } - // mapfileGeneratorConfig := "TODO" // TODO Implement mapfilegenerator.GetConfig for WMS configMap.Data = map[string]string{mapfileGeneratorInput: mapfileGeneratorConfig} } configMap.Immutable = smoothoperatorutils.Pointer(true)