@@ -16,6 +16,7 @@ import (
1616const (
1717 defaultMaxFeatures = 1000
1818 geopackagePath = "/srv/data/gpkg"
19+ defaultExtent = "-25000 250000 280000 860000"
1920)
2021
2122var mapserverDebugLevel = 0
@@ -68,25 +69,21 @@ func MapWFSToMapfileGeneratorInput(wfs *pdoknlv3.WFS, ownerInfo *smoothoperatorv
6869 DebugLevel : mapserverDebugLevel ,
6970 },
7071 MaxFeatures : smoothoperatorutils .PointerVal (wfs .Spec .Service .CountDefault , strconv .Itoa (defaultMaxFeatures )),
71- Layers : getWFSLayers (wfs .Spec .Service . FeatureTypes ),
72+ Layers : getWFSLayers (wfs .Spec .Service ),
7273 }
7374
7475 return input , nil
7576}
7677
77- func getWFSLayers (featureTypes []pdoknlv3.FeatureType ) (layers []WFSLayer ) {
78- for _ , featureType := range featureTypes {
79- bbox := pdoknlv3.FeatureBbox {}
80- if featureType .Bbox != nil {
81- bbox = * featureType .Bbox
82- }
78+ func getWFSLayers (service pdoknlv3.WFSService ) (layers []WFSLayer ) {
79+ for _ , featureType := range service .FeatureTypes {
8380 layer := WFSLayer {
8481 BaseLayer : BaseLayer {
8582 Name : featureType .Name ,
8683 Title : mapperutils .EscapeQuotes (featureType .Title ),
8784 Abstract : mapperutils .EscapeQuotes (featureType .Abstract ),
8885 Keywords : strings .Join (featureType .Keywords , "," ),
89- Extent : bbox . DefaultCRS . ToExtent ( ),
86+ Extent : getWFSExtent ( featureType , service ),
9087 MetadataID : featureType .DatasetMetadataURL .CSW .MetadataIdentifier ,
9188 Columns : getColumns (featureType .Data ),
9289 TableName : featureType .Data .GetTableName (),
@@ -104,6 +101,26 @@ func getWFSLayers(featureTypes []pdoknlv3.FeatureType) (layers []WFSLayer) {
104101 return
105102}
106103
104+ func getWFSExtent (featureType pdoknlv3.FeatureType , service pdoknlv3.WFSService ) string {
105+ if featureType .Bbox != nil {
106+ return featureType .Bbox .DefaultCRS .ToExtent ()
107+ }
108+ if service .Bbox != nil {
109+ return service .Bbox .DefaultCRS .ToExtent ()
110+ }
111+ return defaultExtent
112+ }
113+
114+ func getWMSExtent (serviceLayer pdoknlv3.Layer , serviceExtent string ) string {
115+ if len (serviceLayer .BoundingBoxes ) > 0 {
116+ return serviceLayer .BoundingBoxes [0 ].ToExtent ()
117+ }
118+ if serviceExtent != "" {
119+ return serviceExtent
120+ }
121+ return defaultExtent
122+ }
123+
107124func getColumns (data pdoknlv3.Data ) []Column {
108125 columns := []Column {{Name : "fuuid" }}
109126 if data .GetColumns () != nil {
@@ -222,11 +239,6 @@ func MapWMSToMapfileGeneratorInput(wms *pdoknlv3.WMS, _ *smoothoperatorv1.OwnerI
222239
223240// TODO fix linting (cyclop)
224241func getWMSLayer (serviceLayer pdoknlv3.Layer , serviceExtent string , wms * pdoknlv3.WMS ) WMSLayer {
225- layerExtent := serviceExtent
226- if len (serviceLayer .BoundingBoxes ) > 0 {
227- layerExtent = serviceLayer .BoundingBoxes [0 ].ToExtent ()
228- }
229-
230242 groupName := ""
231243 parent := serviceLayer .GetParent (& wms .Spec .Service .Layer )
232244 // If the layer falls directly under the toplayer, the groupname is omitted
@@ -255,7 +267,7 @@ func getWMSLayer(serviceLayer pdoknlv3.Layer, serviceExtent string, wms *pdoknlv
255267 Title : smoothoperatorutils .PointerVal (serviceLayer .Title , "" ),
256268 Abstract : smoothoperatorutils .PointerVal (serviceLayer .Abstract , "" ),
257269 Keywords : strings .Join (serviceLayer .Keywords , "," ),
258- Extent : layerExtent ,
270+ Extent : getWMSExtent ( serviceLayer , serviceExtent ) ,
259271 MetadataID : metadataID ,
260272 Columns : columns ,
261273 GeometryType : nil ,
0 commit comments