diff --git a/api/v2beta1/shared_conversion.go b/api/v2beta1/shared_conversion.go index 6b80f35..93922a3 100644 --- a/api/v2beta1/shared_conversion.go +++ b/api/v2beta1/shared_conversion.go @@ -10,10 +10,14 @@ import ( corev1 "k8s.io/api/core/v1" ) -func ConvertOptionsV2ToV3(src WMSWFSOptions) pdoknlv3.Options { +func ConvertOptionsV2ToV3(src *WMSWFSOptions) *pdoknlv3.Options { defaults := pdoknlv3.GetDefaultOptions() - return pdoknlv3.Options{ + if src == nil { + return defaults + } + + return &pdoknlv3.Options{ AutomaticCasing: src.AutomaticCasing, IncludeIngress: src.IncludeIngress, PrefetchData: smoothoperatorutils.PointerVal(src.PrefetchData, defaults.PrefetchData), @@ -24,8 +28,12 @@ func ConvertOptionsV2ToV3(src WMSWFSOptions) pdoknlv3.Options { } } -func ConvertOptionsV3ToV2(src pdoknlv3.Options) WMSWFSOptions { - return WMSWFSOptions{ +func ConvertOptionsV3ToV2(src *pdoknlv3.Options) *WMSWFSOptions { + if src == nil { + src = pdoknlv3.GetDefaultOptions() + } + + return &WMSWFSOptions{ AutomaticCasing: src.AutomaticCasing, IncludeIngress: src.IncludeIngress, PrefetchData: &src.PrefetchData, diff --git a/api/v2beta1/wfs_types.go b/api/v2beta1/wfs_types.go index 91b1c21..5898c2c 100644 --- a/api/v2beta1/wfs_types.go +++ b/api/v2beta1/wfs_types.go @@ -54,10 +54,10 @@ type WFSList struct { // WFSSpec is the struct for all fields defined in the WFS CRD type WFSSpec struct { - General General `json:"general"` - Service WFSService `json:"service"` - Kubernetes Kubernetes `json:"kubernetes"` - Options WMSWFSOptions `json:"options,omitempty"` + General General `json:"general"` + Service WFSService `json:"service"` + Kubernetes Kubernetes `json:"kubernetes"` + Options *WMSWFSOptions `json:"options,omitempty"` } // WFSService is the struct with all service specific options diff --git a/api/v2beta1/wms_types.go b/api/v2beta1/wms_types.go index da0a0c9..aac175e 100644 --- a/api/v2beta1/wms_types.go +++ b/api/v2beta1/wms_types.go @@ -46,10 +46,10 @@ type WMS struct { // WMSSpec is the struct for all fields defined in the WMS CRD type WMSSpec struct { - General General `json:"general"` - Service WMSService `json:"service"` - Options WMSWFSOptions `json:"options"` - Kubernetes Kubernetes `json:"kubernetes"` + General General `json:"general"` + Service WMSService `json:"service"` + Options *WMSWFSOptions `json:"options,omitempty"` + Kubernetes Kubernetes `json:"kubernetes"` } // WMSService is the struct for all service level fields diff --git a/api/v2beta1/zz_generated.deepcopy.go b/api/v2beta1/zz_generated.deepcopy.go index 88cf842..7adf7ea 100644 --- a/api/v2beta1/zz_generated.deepcopy.go +++ b/api/v2beta1/zz_generated.deepcopy.go @@ -663,7 +663,11 @@ func (in *WFSSpec) DeepCopyInto(out *WFSSpec) { in.General.DeepCopyInto(&out.General) in.Service.DeepCopyInto(&out.Service) in.Kubernetes.DeepCopyInto(&out.Kubernetes) - in.Options.DeepCopyInto(&out.Options) + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = new(WMSWFSOptions) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WFSSpec. @@ -884,7 +888,11 @@ func (in *WMSSpec) DeepCopyInto(out *WMSSpec) { *out = *in in.General.DeepCopyInto(&out.General) in.Service.DeepCopyInto(&out.Service) - in.Options.DeepCopyInto(&out.Options) + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = new(WMSWFSOptions) + (*in).DeepCopyInto(*out) + } in.Kubernetes.DeepCopyInto(&out.Kubernetes) } diff --git a/api/v3/wfs_types.go b/api/v3/wfs_types.go index 959bd02..60702e7 100644 --- a/api/v3/wfs_types.go +++ b/api/v3/wfs_types.go @@ -78,7 +78,7 @@ type WFSSpec struct { PodSpecPatch *corev1.PodSpec `json:"podSpecPatch,omitempty"` HorizontalPodAutoscalerPatch *HorizontalPodAutoscalerPatch `json:"horizontalPodAutoscalerPatch,omitempty"` // TODO omitting the options field or setting an empty value results in incorrect defaulting of the options - Options Options `json:"options"` + Options *Options `json:"options,omitempty"` // service configuration Service WFSService `json:"service"` @@ -242,7 +242,11 @@ func (wfs *WFS) HorizontalPodAutoscalerPatch() *HorizontalPodAutoscalerPatch { } func (wfs *WFS) Options() Options { - return wfs.Spec.Options + if wfs.Spec.Options == nil { + return *GetDefaultOptions() + } + + return *wfs.Spec.Options } func (wfs *WFS) ID() string { diff --git a/api/v3/wms_types.go b/api/v3/wms_types.go index d772205..af3c200 100644 --- a/api/v3/wms_types.go +++ b/api/v3/wms_types.go @@ -61,7 +61,7 @@ type WMSSpec struct { // Optional options for the configuration of the service. // TODO omitting the options field or setting an empty value results in incorrect defaulting of the options - Options Options `json:"options"` + Options *Options `json:"options,omitempty"` // Service specification Service WMSService `json:"service"` @@ -569,7 +569,11 @@ func (wms *WMS) HorizontalPodAutoscalerPatch() *HorizontalPodAutoscalerPatch { } func (wms *WMS) Options() Options { - return wms.Spec.Options + if wms.Spec.Options == nil { + return *GetDefaultOptions() + } + + return *wms.Spec.Options } func (wms *WMS) ID() string { diff --git a/api/v3/wms_validation.go b/api/v3/wms_validation.go index e4d80e0..1d0211b 100644 --- a/api/v3/wms_validation.go +++ b/api/v3/wms_validation.go @@ -79,8 +79,8 @@ func ValidateWMS(wms *WMS, warnings *[]string, allErrs *field.ErrorList) { } } - var rewriteGroupToDataLayers = wms.Spec.Options.RewriteGroupToDataLayers - var validateChildStyleNameEqual = wms.Spec.Options.ValidateChildStyleNameEqual + var rewriteGroupToDataLayers = wms.Options().RewriteGroupToDataLayers + var validateChildStyleNameEqual = wms.Options().ValidateChildStyleNameEqual equalChildStyleNames := map[string][]string{} if rewriteGroupToDataLayers && validateChildStyleNameEqual { diff --git a/api/v3/zz_generated.deepcopy.go b/api/v3/zz_generated.deepcopy.go index 7891d3b..f1c16a6 100644 --- a/api/v3/zz_generated.deepcopy.go +++ b/api/v3/zz_generated.deepcopy.go @@ -703,7 +703,11 @@ func (in *WFSSpec) DeepCopyInto(out *WFSSpec) { *out = new(HorizontalPodAutoscalerPatch) (*in).DeepCopyInto(*out) } - out.Options = in.Options + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = new(Options) + **out = **in + } in.Service.DeepCopyInto(&out.Service) } @@ -861,7 +865,11 @@ func (in *WMSSpec) DeepCopyInto(out *WMSSpec) { *out = new(HorizontalPodAutoscalerPatch) (*in).DeepCopyInto(*out) } - out.Options = in.Options + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = new(Options) + **out = **in + } in.Service.DeepCopyInto(&out.Service) } diff --git a/config/crd/bases/pdok.nl_wfs.yaml b/config/crd/bases/pdok.nl_wfs.yaml index dc3816f..d69bcdd 100644 --- a/config/crd/bases/pdok.nl_wfs.yaml +++ b/config/crd/bases/pdok.nl_wfs.yaml @@ -1541,7 +1541,6 @@ spec: - url type: object required: - - options - service type: object status: diff --git a/config/crd/bases/pdok.nl_wms.yaml b/config/crd/bases/pdok.nl_wms.yaml index eb63eef..c4754fc 100644 --- a/config/crd/bases/pdok.nl_wms.yaml +++ b/config/crd/bases/pdok.nl_wms.yaml @@ -397,7 +397,6 @@ spec: required: - general - kubernetes - - options - service type: object status: @@ -2097,7 +2096,6 @@ spec: - url type: object required: - - options - service type: object status: diff --git a/internal/controller/blobdownload/blob_download.go b/internal/controller/blobdownload/blob_download.go index d92f075..e376966 100644 --- a/internal/controller/blobdownload/blob_download.go +++ b/internal/controller/blobdownload/blob_download.go @@ -103,13 +103,13 @@ func GetArgs[W pdoknlv3.WMSWFS](webservice W) (args string, err error) { case *pdoknlv3.WFS: if WFS, ok := any(webservice).(*pdoknlv3.WFS); ok { createConfig(&sb) - downloadGeopackage(&sb, WFS.Spec.Options.PrefetchData) + downloadGeopackage(&sb, WFS.Options().PrefetchData) // In case of WFS no downloads are needed for TIFFs, styling assets and legends } case *pdoknlv3.WMS: if WMS, ok := any(webservice).(*pdoknlv3.WMS); ok { createConfig(&sb) - downloadGeopackage(&sb, WMS.Spec.Options.PrefetchData) + downloadGeopackage(&sb, WMS.Options().PrefetchData) if err = downloadTiffs(&sb, WMS); err != nil { return "", err } @@ -139,7 +139,7 @@ func downloadGeopackage(sb *strings.Builder, prefetchData bool) { } func downloadTiffs(sb *strings.Builder, wms *pdoknlv3.WMS) error { - if !wms.Spec.Options.PrefetchData { + if !wms.Options().PrefetchData { return nil } diff --git a/internal/controller/blobdownload/blob_download_test.go b/internal/controller/blobdownload/blob_download_test.go index 48c70b9..5bdee6d 100644 --- a/internal/controller/blobdownload/blob_download_test.go +++ b/internal/controller/blobdownload/blob_download_test.go @@ -82,7 +82,7 @@ func TestGetArgsForWFS(t *testing.T) { Service: v3.WFSService{ Title: "wfs-prefetch-service-title", }, - Options: v3.Options{ + Options: &v3.Options{ PrefetchData: true, }, }, @@ -99,7 +99,7 @@ func TestGetArgsForWFS(t *testing.T) { Service: v3.WFSService{ Title: "wfs-noprefetch-service-title", }, - Options: v3.Options{ + Options: &v3.Options{ PrefetchData: false, }, }, @@ -205,7 +205,7 @@ func TestGetArgsForWMS(t *testing.T) { }, }, }, - Options: v3.Options{ + Options: &v3.Options{ PrefetchData: true, }, }, @@ -272,7 +272,7 @@ func TestGetArgsForWMS(t *testing.T) { }, }, }, - Options: v3.Options{ + Options: &v3.Options{ PrefetchData: true, }, }, diff --git a/internal/controller/featureinfogenerator/featureinfo_generator_test.go b/internal/controller/featureinfogenerator/featureinfo_generator_test.go index cc1d0e2..4ee726e 100644 --- a/internal/controller/featureinfogenerator/featureinfo_generator_test.go +++ b/internal/controller/featureinfogenerator/featureinfo_generator_test.go @@ -74,7 +74,7 @@ func TestGetInput(t *testing.T) { args: args{ wms: &pdoknlv3.WMS{ Spec: pdoknlv3.WMSSpec{ - Options: pdoknlv3.Options{ + Options: &pdoknlv3.Options{ AutomaticCasing: true, }, Service: pdoknlv3.WMSService{ diff --git a/internal/controller/featureinfogenerator/mapper.go b/internal/controller/featureinfogenerator/mapper.go index f30de28..5ca689b 100644 --- a/internal/controller/featureinfogenerator/mapper.go +++ b/internal/controller/featureinfogenerator/mapper.go @@ -13,7 +13,7 @@ const ( func MapWMSToFeatureinfoGeneratorInput(wms *pdoknlv3.WMS) (*featureinfo.Scheme, error) { input := &featureinfo.Scheme{ - AutomaticCasing: wms.Spec.Options.AutomaticCasing, + AutomaticCasing: wms.Options().AutomaticCasing, Version: featureinfoGeneratorSchemaVersion, Layers: []featureinfo.Layer{}, } diff --git a/internal/controller/legendgenerator/legend_generator.go b/internal/controller/legendgenerator/legend_generator.go index 338068c..81944a8 100644 --- a/internal/controller/legendgenerator/legend_generator.go +++ b/internal/controller/legendgenerator/legend_generator.go @@ -70,7 +70,7 @@ func GetConfigMapData(wms *pdoknlv3.WMS) map[string]string { } addLayerInput(wms, data) - if wms.Spec.Options.RewriteGroupToDataLayers { + if wms.Options().RewriteGroupToDataLayers { addLegendFixerConfig(wms, data) } return data diff --git a/internal/controller/mapfilegenerator/mapfile_generator_test.go b/internal/controller/mapfilegenerator/mapfile_generator_test.go index 0764fd2..4d26ef6 100644 --- a/internal/controller/mapfilegenerator/mapfile_generator_test.go +++ b/internal/controller/mapfilegenerator/mapfile_generator_test.go @@ -2,375 +2,108 @@ package mapfilegenerator import ( "encoding/json" + "os" "testing" + "github.com/google/go-cmp/cmp" + "github.com/pdok/mapserver-operator/api/v2beta1" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" "sigs.k8s.io/yaml" pdoknlv3 "github.com/pdok/mapserver-operator/api/v3" smoothoperatorv1 "github.com/pdok/smooth-operator/api/v1" - shared_model "github.com/pdok/smooth-operator/model" smoothoperatorutils "github.com/pdok/smooth-operator/pkg/util" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -const ( - WFSConfig = `{ - "service_title": "some Service title", - "service_abstract": "some \\\"Service\\\" abstract", - "service_keywords": "service-keyword-1,service-keyword-2,infoFeatureAccessService", - "service_extent": "0.0 2.0 1.0 3.0", - "service_wfs_maxfeatures": "1000", - "service_namespace_prefix": "prefix", - "service_namespace_uri": "http://prefix.geonovum.nl", - "service_onlineresource": "http://localhost", - "service_path": "/datasetOwner/dataset/theme/wfs/v1_0", - "service_metadata_id": "metameta-meta-meta-meta-metametameta", - "automatic_casing": true, - "data_epsg": "EPSG:28992", - "service_debug_level": 0, - "epsg_list": [ - "EPSG:28992", - "EPSG:25831", - "EPSG:25832", - "EPSG:3034", - "EPSG:3035", - "EPSG:3857", - "EPSG:4258", - "EPSG:4326" - ], - "layers": [ - { - "name": "featuretype-1-name", - "title": "featuretype-1-title", - "abstract": "feature \\\"1\\\" abstract", - "keywords": "featuretype-1-keyword-1,featuretype-1-keyword-2", - "layer_extent": "0.0 2.0 1.0 3.0", - "dataset_metadata_id": "datadata-data-data-data-datadatadata", - "columns": [ - { - "name": "fuuid" - }, - { - "name": "featuretype-1-column-1" - }, - { - "name": "featuretype-1-column-2" - } - ], - "geometry_type": "Point", - "gpkg_path": "/srv/data/gpkg/file-1.gpkg", - "tablename": "featuretype-1" - }, - { - "name": "featuretype-2-name", - "title": "featuretype-2-title", - "abstract": "feature \\\"2\\\" abstract", - "keywords": "featuretype-2-keyword-1,featuretype-2-keyword-2", - "layer_extent": "0.0 2.0 1.0 3.0", - "dataset_metadata_id": "datadata-data-data-data-datadatadata", - "columns": [ - { - "name": "fuuid" - }, - { - "name": "featuretype-2-column-1", - "alias": "alias_featuretype-2-column-1" - }, - { - "name": "featuretype-2-column-2" - } - ], - "geometry_type": "MultiLine", - "tablename": "featuretype-2", - "postgis": true - } - ] -}` - //nolint:misspell - WMSGrouplessConfig = `{"service_title": "NWB - Wegen WMS", "service_abstract": "Dit is de web map service van het Nationaal Wegen Bestand (NWB) - wegen. Deze dataset bevat alleen de wegvakken en hectometerpunten. Het Nationaal Wegen Bestand - Wegen is een digitaal geografisch bestand van alle wegen in Nederland. Opgenomen zijn alle wegen die worden beheerd door wegbeheerders als het Rijk, provincies, gemeenten en waterschappen, echter alleen voor zover deze zijn voorzien van een straatnaam of nummer.", "service_keywords": "Vervoersnetwerken,Menselijke gezondheid en veiligheid,Geluidsbelasting hoofdwegen (Richtlijn Omgevingslawaai),Nationaal,Voertuigen,Verkeer,Wegvakken,Hectometerpunten,HVD,Mobiliteit,infoMapAccessService", "service_accessconstraints": "https://creativecommons.org/publicdomain/zero/1.0/deed.nl", "service_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", "maxSize": "4000", "service_namespace_prefix": "nwbwegen", "service_namespace_uri": "http://nwbwegen.geonovum.nl", "service_onlineresource": "https://service.pdok.nl", "service_path": "/rws/nwbwegen/wms/v1_0", "service_metadata_id": "f2437a92-ddd3-4777-a1bc-fdf4b4a7fcb8", "dataset_owner": "rws", "authority_url": "https://www.rijkswaterstaat.nl", "automatic_casing": true, "data_epsg": "EPSG:28992", "epsg_list": ["EPSG:28992", "EPSG:25831", "EPSG:25832", "EPSG:3034", "EPSG:3035", "EPSG:3857", "EPSG:4258", "EPSG:4326", "CRS:84"], "templates": "/srv/data/config/templates", "fonts": "/srv/data/config/fonts", "outputformat_jpg": "jpg", "outputformat_png8": "png", "symbols": ["/styling/nwb_wegen_hectopunten.symbol"], "group_layers": [], "layers": [{"name": "wegvakken", "gpkg_path": "/srv/data/gpkg/nwb_wegen.gpkg", "tablename": "wegvakken", "geometry_type": "MultiLineString", "columns": [{"name": "fuuid"}, {"name": "objectid"}, {"name": "wvk_id"}, {"name": "wvk_begdat"}, {"name": "jte_id_beg"}, {"name": "jte_id_end"}, {"name": "wegbehsrt"}, {"name": "wegnummer"}, {"name": "wegdeelltr"}, {"name": "hecto_lttr"}, {"name": "bst_code"}, {"name": "rpe_code"}, {"name": "admrichtng"}, {"name": "rijrichtng"}, {"name": "stt_naam"}, {"name": "stt_bron"}, {"name": "wpsnaam"}, {"name": "gme_id"}, {"name": "gme_naam"}, {"name": "hnrstrlnks"}, {"name": "hnrstrrhts"}, {"name": "e_hnr_lnks"}, {"name": "e_hnr_rhts"}, {"name": "l_hnr_lnks"}, {"name": "l_hnr_rhts"}, {"name": "begafstand"}, {"name": "endafstand"}, {"name": "beginkm"}, {"name": "eindkm"}, {"name": "pos_tv_wol"}, {"name": "wegbehcode"}, {"name": "wegbehnaam"}, {"name": "distrcode"}, {"name": "distrnaam"}, {"name": "dienstcode"}, {"name": "dienstnaam"}, {"name": "wegtype"}, {"name": "wgtype_oms"}, {"name": "routeltr"}, {"name": "routenr"}, {"name": "routeltr2"}, {"name": "routenr2"}, {"name": "routeltr3"}, {"name": "routenr3"}, {"name": "routeltr4"}, {"name": "routenr4"}, {"name": "wegnr_aw"}, {"name": "wegnr_hmp"}, {"name": "geobron_id"}, {"name": "geobron_nm"}, {"name": "bronjaar"}, {"name": "openlr"}, {"name": "bag_orl"}, {"name": "frc"}, {"name": "fow"}, {"name": "alt_naam"}, {"name": "alt_nr"}, {"name": "rel_hoogte"}, {"name": "st_lengthshape"}], "title": "Wegvakken", "abstract": "Deze laag bevat de wegvakken uit het Nationaal Wegen bestand (NWB) en geeft gedetailleerde informatie per wegvak zoals straatnaam, wegnummer, routenummer, wegbeheerder, huisnummers, enz. weer.", "keywords": "Vervoersnetwerken,Menselijke gezondheid en veiligheid,Geluidsbelasting hoofdwegen (Richtlijn Omgevingslawaai),Nationaal,Voertuigen,Verkeer,Wegvakken", "dataset_metadata_id": "a9b7026e-0a81-4813-93bd-ba49e6f28502", "dataset_source_id": "8f0497f0-dbd7-4bee-b85a-5fdec484a7ff", "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", "minscale": "1", "maxscale": "50000", "styles": [{"title": "NWB - Wegvakken", "path": "/styling/wegvakken.style"}]}, {"name": "hectopunten", "gpkg_path": "/srv/data/gpkg/nwb_wegen.gpkg", "tablename": "hectopunten", "geometry_type": "MultiPoint", "columns": [{"name": "fuuid"}, {"name": "objectid"}, {"name": "hectomtrng"}, {"name": "afstand"}, {"name": "wvk_id"}, {"name": "wvk_begdat"}, {"name": "zijde"}, {"name": "hecto_lttr"}], "title": "Hectopunten", "abstract": "Deze laag bevat de hectopunten uit het Nationaal Wegen Bestand (NWB) en geeft gedetailleerde informatie per hectopunt zoals hectometrering, afstand, zijde en hectoletter weer.", "keywords": "Vervoersnetwerken,Menselijke gezondheid en veiligheid,Geluidsbelasting hoofdwegen (Richtlijn Omgevingslawaai),Nationaal,Voertuigen,Verkeer,Hectometerpunten", "dataset_metadata_id": "a9b7026e-0a81-4813-93bd-ba49e6f28502", "dataset_source_id": "8f0497f0-dbd7-4bee-b85a-5fdec484a7ff", "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", "minscale": "1", "maxscale": "50000", "styles": [{"title": "NWB - Hectopunten", "path": "/styling/hectopunten.style"}]}]}` - //nolint:misspell - WMSGroupConfig = `{"service_title": "Waterschappen Hydrografie (INSPIRE geharmoniseerd) WMS", "service_abstract": "Deze dataset is gebaseerd op (niet geharmoniseerde) data van alle waterschappen in Nederland conform INSPIRE. De dataset bevat de volgende INSPIRE objecten: CrossingLine, CrossingPoint, DamOrWeir, DrainageBasin, Embankment, Lock, Sluice, Watercourse.", "service_keywords": "Aquaduct,Brug,Duikersifonhevel,Stuw,Vastedam,AfvoerAanvoergebied,Waterkering,Sluis,HydroObject,HVD,Aardobservatie en milieu,infoMapAccessService", "service_accessconstraints": "https://creativecommons.org/publicdomain/zero/1.0/deed.nl", "service_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", "maxSize": "4000", "service_namespace_prefix": "hydrografie", "service_namespace_uri": "http://hydrografie.geonovum.nl", "service_onlineresource": "https://service.pdok.nl", "service_path": "/hwh/hydrografie/wms/v2_0", "service_metadata_id": "871a58f8-c9f1-41a4-be37-0f059e0f886f", "dataset_owner": "hwh", "authority_url": "https://www.hetwaterschapshuis.nl/", "automatic_casing": false, "data_epsg": "EPSG:28992", "epsg_list": ["EPSG:28992", "EPSG:25831", "EPSG:25832", "EPSG:3034", "EPSG:3035", "EPSG:3857", "EPSG:4258", "EPSG:4326", "CRS:84"], "templates": "/srv/data/config/templates", "outputformat_jpg": "jpg", "outputformat_png8": "png", "symbols": ["/styling/bridge.symbol", "/styling/x.symbol"], "group_layers": [{"name": "HY.PhysicalWaters.ManMadeObject", "title": "Man-made Object", "abstract": "Crossing line, crossing point, dam or weir, sluice, embankment, lock.", "style_name": "HY.PhysicalWaters.ManMadeObject.Default", "style_title": "Man-made objects default style"}], "layers": [{"name": "HY.PhysicalWaters.Waterbodies", "gpkg_path": "/srv/data/gpkg/Waterbody.gpkg", "tablename": "watercourse", "geometry_type": "MultiLineString", "columns": [{"name": "fuuid"}, {"name": "gml_id"}, {"name": "beginlifespanversion"}, {"name": "condition"}, {"name": "delineationknown"}, {"name": "endlifespanversion"}, {"name": "length"}, {"name": "level"}, {"name": "localid"}, {"name": "localtype"}, {"name": "name"}, {"name": "namespace"}, {"name": "origin"}, {"name": "persistence"}, {"name": "streamorder"}, {"name": "tidal"}, {"name": "widthrange"}], "title": "Waterbody", "abstract": "Watercourse", "keywords": "Hydroobject,Waterbody,Watercourse,River,Stream,Lake,Reservoir", "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", "minscale": "1", "maxscale": "50000", "styles": [{"title": "Water bodies default style", "path": "/styling/watercourse.style"}]}, {"name": "HY.PhysicalWaters.Catchments", "gpkg_path": "/srv/data/gpkg/Catchment.gpkg", "tablename": "drainagebasin", "geometry_type": "MultiPolygon", "columns": [{"name": "fuuid"}, {"name": "gml_id"}, {"name": "area"}, {"name": "beginlifespanversion"}, {"name": "endlifespanversion"}, {"name": "localid"}, {"name": "name"}, {"name": "namespace"}, {"name": "order"}, {"name": "orderscheme"}, {"name": "origin"}, {"name": "outlet"}, {"name": "scope"}], "title": "Catchment", "abstract": "Drainage basin", "keywords": "AfvoergebiedAanvoergebied,Catchment,Basin,Catchment Area,Drainage basin", "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", "minscale": "1", "maxscale": "50000", "styles": [{"title": "Drainage Basin default style", "path": "/styling/drainagebasin.style"}]}, {"name": "HY.PhysicalWaters.ManMadeObject.lock", "group_name": "HY.PhysicalWaters.ManMadeObject", "gpkg_path": "/srv/data/gpkg/Man-madeObject.gpkg", "tablename": "lock", "geometry_type": "Point", "columns": [{"name": "fuuid"}, {"name": "gml_id"}, {"name": "beginlifespanversion"}, {"name": "condition"}, {"name": "endlifespanversion"}, {"name": "localid"}, {"name": "name"}, {"name": "namespace"}], "title": "Man-made Object", "abstract": "Crossing line, crossing point, dam or weir, sluice, embankment, lock.", "keywords": "Man Made,Duikersifonhevel,Aquaduct,Brug,Stuw,Vastedam,Waterkering,Sluis.", "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", "minscale": "1", "maxscale": "50000", "styles": [{"title": "Lock", "path": "/styling/lock.style"}]}, {"name": "HY.PhysicalWaters.ManMadeObject.crossingpoint", "group_name": "HY.PhysicalWaters.ManMadeObject", "gpkg_path": "/srv/data/gpkg/Man-madeObject.gpkg", "tablename": "crossingpoint", "geometry_type": "Point", "columns": [{"name": "fuuid"}, {"name": "gml_id"}, {"name": "beginlifespanversion"}, {"name": "condition"}, {"name": "endlifespanversion"}, {"name": "localid"}, {"name": "name"}, {"name": "namespace"}, {"name": "type"}], "title": "Man-made Object", "abstract": "Crossing line, crossing point, dam or weir, sluice, embankment, lock.", "keywords": "Man Made,Duikersifonhevel,Aquaduct,Brug,Stuw,Vastedam,Waterkering,Sluis.", "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", "minscale": "1", "maxscale": "50000", "styles": [{"title": "Crossing Point", "path": "/styling/crossingpoint.style"}]}, {"name": "HY.PhysicalWaters.ManMadeObject.sluice", "group_name": "HY.PhysicalWaters.ManMadeObject", "gpkg_path": "/srv/data/gpkg/Man-madeObject.gpkg", "tablename": "sluice", "geometry_type": "Point", "columns": [{"name": "fuuid"}, {"name": "gml_id"}, {"name": "beginlifespanversion"}, {"name": "condition"}, {"name": "endlifespanversion"}, {"name": "localid"}, {"name": "name"}, {"name": "namespace"}], "title": "Man-made Object", "abstract": "Crossing line, crossing point, dam or weir, sluice, embankment, lock.", "keywords": "Man Made,Duikersifonhevel,Aquaduct,Brug,Stuw,Vastedam,Waterkering,Sluis.", "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", "minscale": "1", "maxscale": "50000", "styles": [{"title": "Sluice", "path": "/styling/sluice.style"}]}, {"name": "HY.PhysicalWaters.ManMadeObject.embankment", "group_name": "HY.PhysicalWaters.ManMadeObject", "gpkg_path": "/srv/data/gpkg/Man-madeObject.gpkg", "tablename": "embankment", "geometry_type": "MultiLineString", "columns": [{"name": "fuuid"}, {"name": "gml_id"}, {"name": "beginlifespanversion"}, {"name": "condition"}, {"name": "endlifespanversion"}, {"name": "localid"}, {"name": "name"}, {"name": "namespace"}], "title": "Man-made Object", "abstract": "Crossing line, crossing point, dam or weir, sluice, embankment, lock.", "keywords": "Man Made,Duikersifonhevel,Aquaduct,Brug,Stuw,Vastedam,Waterkering,Sluis.", "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", "minscale": "1", "maxscale": "50000", "styles": [{"title": "Embankment", "path": "/styling/embankment.style"}]}, {"name": "HY.PhysicalWaters.ManMadeObject.crossingline", "group_name": "HY.PhysicalWaters.ManMadeObject", "gpkg_path": "/srv/data/gpkg/Man-madeObject.gpkg", "tablename": "crossingline", "geometry_type": "MultiLineString", "columns": [{"name": "fuuid"}, {"name": "gml_id"}, {"name": "beginlifespanversion"}, {"name": "condition"}, {"name": "endlifespanversion"}, {"name": "localid"}, {"name": "name"}, {"name": "namespace"}, {"name": "type"}], "title": "Man-made Object", "abstract": "Crossing line, crossing point, dam or weir, sluice, embankment, lock.", "keywords": "Man Made,Duikersifonhevel,Aquaduct,Brug,Stuw,Vastedam,Waterkering,Sluis.", "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", "minscale": "1", "maxscale": "50000", "styles": [{"title": "Crossing Line", "path": "/styling/crossingline.style"}]}, {"name": "HY.PhysicalWaters.ManMadeObject.damorweir", "group_name": "HY.PhysicalWaters.ManMadeObject", "gpkg_path": "/srv/data/gpkg/Man-madeObject.gpkg", "tablename": "damorweir", "geometry_type": "Point", "columns": [{"name": "fuuid"}, {"name": "gml_id"}, {"name": "beginlifespanversion"}, {"name": "condition"}, {"name": "endlifespanversion"}, {"name": "localid"}, {"name": "name"}, {"name": "namespace"}], "title": "Man-made Object", "abstract": "Crossing line, crossing point, dam or weir, sluice, embankment, lock.", "keywords": "Man Made,Duikersifonhevel,Aquaduct,Brug,Stuw,Vastedam,Waterkering,Sluis.", "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", "minscale": "1", "maxscale": "50000", "styles": [{"title": "Dam or Weir", "path": "/styling/damorweir.style"}]}]}` - //nolint:misspell - WMSGroupAndToplayerConfig = `{"service_title": "Kadastrale Kaart (WMS)", "service_abstract": "Overzicht van de ligging van de kadastrale percelen in Nederland. Fungeert als schakel tussen terrein en registratie, vervult voor externe gebruiker vaak een referentiefunctie, een ondergrond ten opzichte waarvan de gebruiker eigen informatie kan vastleggen en presenteren.", "service_keywords": "Kadaster,Kadastrale percelen,Kadastrale grens,Kadastrale kaart,Bebouwing,Nummeraanduidingreeks,Openbare ruimte naam,Perceel,Grens,Kwaliteit,Kwaliteitslabels,HVD,Geospatiale data", "service_accessconstraints": "https://creativecommons.org/publicdomain/zero/1.0/deed.nl", "service_extent": "-25000 250000 280000 860000", "maxSize": "10000", "service_namespace_prefix": "kadastralekaart", "service_namespace_uri": "http://kadastralekaart.geonovum.nl", "service_onlineresource": "https://service.pdok.nl", "service_path": "/kadaster/kadastralekaart/wms/v5_0", "service_metadata_id": "97cf6a64-9cfc-4ce6-9741-2db44fd27fca", "dataset_owner": "kadaster", "authority_url": "https://www.kadaster.nl", "automatic_casing": true, "data_epsg": "EPSG:28992", "epsg_list": ["EPSG:28992", "EPSG:25831", "EPSG:25832", "EPSG:3034", "EPSG:3035", "EPSG:3857", "EPSG:4258", "EPSG:4326", "CRS:84"], "templates": "/srv/data/config/templates", "fonts": "/srv/data/config/fonts", "top_level_name": "Kadastralekaart", "resolution": "91", "defresolution": "91", "outputformat_jpg": "jpg", "outputformat_png8": "png", "symbols": [], "group_layers": [{"name": "Bebouwing", "title": "Bebouwing", "abstract": "De laag Bebouwing is een selectie op panden van de BGT.", "style_name": "standaard:bebouwing", "style_title": "Standaardvisualisatie Bebouwing"}, {"name": "Perceel", "title": "Perceel", "abstract": "Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal ge\u00efdentificeerd is en met kadastrale grenzen begrensd is.", "style_name": "standaard:perceel", "style_title": "Standaardvisualisatie Perceel"}], "layers": [{"name": "Bebouwingvlak", "group_name": "Bebouwing", "gpkg_path": "/srv/data/gpkg/pand.gpkg", "tablename": "pand", "geometry_type": "Polygon", "columns": [{"name": "fuuid"}, {"name": "object_begin_tijd"}, {"name": "lv_publicatiedatum", "alias": "LV-publicatiedatum"}, {"name": "relatieve_hoogteligging"}, {"name": "in_onderzoek"}, {"name": "tijdstip_registratie"}, {"name": "identificatie_namespace"}, {"name": "identificatie_lokaal_id", "alias": "identificatieLokaalID"}, {"name": "bronhouder"}, {"name": "bgt_status", "alias": "bgt-status"}, {"name": "plus_status", "alias": "plus-status"}, {"name": "identificatie_bag_pnd", "alias": "identificatieBAGPND"}], "title": "Bebouwingvlak", "abstract": "De laag Bebouwing is een selectie op panden van de BGT.", "keywords": "Bebouwing", "dataset_metadata_id": "a29917b9-3426-4041-a11b-69bcb2256904", "dataset_source_id": "06b6c650-cdb1-11dd-ad8b-0800200c9a64", "layer_extent": "-25000 250000 280000 860000", "minscale": "50", "maxscale": "6001", "styles": [{"title": "Standaardvisualisatie", "path": "/styling/bebouwing.style"}, {"title": "Kwaliteitsvisualisatie", "path": "/styling/bebouwing_kwaliteit.style"}, {"title": "Printvisualisatie", "path": "/styling/bebouwing_print.style"}, {"title": "Standaardvisualisatie Bebouwing", "path": "/styling/bebouwing.group.style"}, {"title": "Kwaliteitsvisualisatie Bebouwing", "path": "/styling/bebouwing_kwaliteit.group.style"}, {"title": "Printvisualisatie Bebouwing", "path": "/styling/bebouwing_print.group.style"}]}, {"name": "Nummeraanduidingreeks", "group_name": "Bebouwing", "gpkg_path": "/srv/data/gpkg/pand_nummeraanduiding.gpkg", "tablename": "pand_nummeraanduiding", "geometry_type": "Point", "columns": [{"name": "fuuid"}, {"name": "bebouwing_id", "alias": "bebouwingID"}, {"name": "hoek"}, {"name": "tekst"}, {"name": "bag_vbo_laagste_huisnummer", "alias": "identificatie_BAGVBOLaagsteHuisnummer"}, {"name": "bag_vbo_hoogste_huisnummer", "alias": "identificatie_BAGVBOHoogsteHuisnummer"}, {"name": "hoek"}], "title": "Nummeraanduidingreeks", "abstract": "De laag Bebouwing is een selectie op panden van de BGT.", "keywords": "Nummeraanduidingreeks", "dataset_metadata_id": "a29917b9-3426-4041-a11b-69bcb2256904", "dataset_source_id": "06b6c650-cdb1-11dd-ad8b-0800200c9a64", "layer_extent": "-25000 250000 280000 860000", "minscale": "50", "maxscale": "2001", "styles": [{"title": "Standaardvisualisatie", "path": "/styling/nummeraanduidingreeks.style"}, {"title": "Kwaliteitsvisualisatie", "path": "/styling/nummeraanduidingreeks_kwaliteit.style"}, {"title": "Printvisualisatie", "path": "/styling/nummeraanduidingreeks_print.style"}, {"title": "Standaardvisualisatie Bebouwing", "path": "/styling/nummeraanduidingreeks.group.style"}, {"title": "Kwaliteitsvisualisatie Bebouwing", "path": "/styling/nummeraanduidingreeks_kwaliteit.group.style"}, {"title": "Printvisualisatie Bebouwing", "path": "/styling/nummeraanduidingreeks_print.group.style"}]}, {"name": "OpenbareRuimteNaam", "gpkg_path": "/srv/data/gpkg/openbareruimtelabel.gpkg", "tablename": "openbareruimtelabel", "geometry_type": "Point", "columns": [{"name": "fuuid"}, {"name": "object_begin_tijd"}, {"name": "lv_publicatiedatum", "alias": "LV-publicatiedatum"}, {"name": "relatieve_hoogteligging"}, {"name": "in_onderzoek"}, {"name": "tijdstip_registratie"}, {"name": "identificatie_namespace"}, {"name": "identificatie_lokaal_id", "alias": "identificatieLokaalID"}, {"name": "bronhouder"}, {"name": "bgt_status", "alias": "bgt-status"}, {"name": "plus_status", "alias": "plus-status"}, {"name": "identificatie_bag_opr", "alias": "identificatieBAGOPR"}, {"name": "tekst"}, {"name": "hoek"}, {"name": "openbare_ruimte_type"}], "title": "OpenbareRuimteNaam", "abstract": "De laag Openbareruimtenaam is een selectie op de openbare ruimte labels van de BGT met een bgt-status \"bestaand\" die een classificatie (openbareruimtetype) Weg en Water hebben.", "keywords": "Openbare ruimte naam", "dataset_metadata_id": "a29917b9-3426-4041-a11b-69bcb2256904", "dataset_source_id": "06b6c650-cdb1-11dd-ad8b-0800200c9a64", "layer_extent": "-25000 250000 280000 860000", "minscale": "50", "maxscale": "2001", "styles": [{"title": "Standaardvisualisatie", "path": "/styling/openbareruimtenaam.style"}, {"title": "Kwaliteitsvisualisatie", "path": "/styling/openbareruimtenaam_kwaliteit.style"}, {"title": "Printvisualisatie", "path": "/styling/openbareruimtenaam_print.style"}, {"title": "Standaardvisualisatie OpenbareRuimteNaam", "path": "/styling/openbareruimtenaam.group.style"}, {"title": "Kwaliteitsvisualisatie OpenbareRuimteNaam", "path": "/styling/openbareruimtenaam_kwaliteit.group.style"}, {"title": "Printvisualisatie OpenbareRuimteNaam", "path": "/styling/openbareruimtenaam_print.group.style"}]}, {"name": "Perceelvlak", "group_name": "Perceel", "gpkg_path": "/srv/data/gpkg/perceel.gpkg", "tablename": "perceel", "geometry_type": "Polygon", "columns": [{"name": "fuuid"}, {"name": "identificatie_namespace"}, {"name": "identificatie_lokaal_id", "alias": "identificatieLokaalID"}, {"name": "begin_geldigheid"}, {"name": "tijdstip_registratie"}, {"name": "volgnummer"}, {"name": "status_historie_code"}, {"name": "status_historie_waarde"}, {"name": "kadastrale_gemeente_code"}, {"name": "kadastrale_gemeente_waarde"}, {"name": "sectie"}, {"name": "akr_kadastrale_gemeente_code_code", "alias": "AKRKadastraleGemeenteCodeCode"}, {"name": "akr_kadastrale_gemeente_code_waarde", "alias": "AKRKadastraleGemeenteCodeWaarde"}, {"name": "kadastrale_grootte_waarde"}, {"name": "soort_grootte_code"}, {"name": "soort_grootte_waarde"}, {"name": "perceelnummer"}, {"name": "perceelnummer_rotatie"}, {"name": "perceelnummer_verschuiving_delta_x"}, {"name": "perceelnummer_verschuiving_delta_y"}, {"name": "perceelnummer_plaatscoordinaat_x"}, {"name": "perceelnummer_plaatscoordinaat_y"}], "title": "Perceelvlak", "abstract": "Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal ge\u00efdentificeerd is en met kadastrale grenzen begrensd is.", "keywords": "Kadastrale percelen", "dataset_metadata_id": "a29917b9-3426-4041-a11b-69bcb2256904", "dataset_source_id": "06b6c650-cdb1-11dd-ad8b-0800200c9a64", "layer_extent": "-25000 250000 280000 860000", "minscale": "50", "maxscale": "6001", "styles": [{"title": "Standaardvisualisatie", "path": "/styling/perceelvlak.style"}, {"title": "Kwaliteitsvisualisatie", "path": "/styling/perceelvlak_kwaliteit.style"}, {"title": "Printvisualisatie", "path": "/styling/perceelvlak_print.style"}, {"title": "Standaardvisualisatie Perceel", "path": "/styling/perceelvlak.group.style"}, {"title": "Kwaliteitsvisualisatie Perceel", "path": "/styling/perceelvlak_kwaliteit.group.style"}, {"title": "Printvisualisatie Perceel", "path": "/styling/perceelvlak_print.group.style"}]}, {"name": "Label", "group_name": "Perceel", "gpkg_path": "/srv/data/gpkg/perceel_label.gpkg", "tablename": "perceel_label", "geometry_type": "Point", "columns": [{"name": "fuuid"}, {"name": "perceel_id", "alias": "perceelID"}, {"name": "perceelnummer"}, {"name": "rotatie"}, {"name": "verschuiving_delta_x"}, {"name": "verschuiving_delta_y"}], "title": "Label", "abstract": "Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal ge\u00efdentificeerd is en met kadastrale grenzen begrensd is.", "keywords": "Kadastrale percelen", "dataset_metadata_id": "a29917b9-3426-4041-a11b-69bcb2256904", "dataset_source_id": "06b6c650-cdb1-11dd-ad8b-0800200c9a64", "layer_extent": "-25000 250000 280000 860000", "minscale": "50", "maxscale": "6001", "styles": [{"title": "Standaardvisualisatie", "path": "/styling/label.style"}, {"title": "Standaardvisualisatie Perceel", "path": "/styling/label.group.style"}, {"title": "Kwaliteitsvisualisatie", "path": "/styling/label_kwaliteit.style"}, {"title": "Kwaliteitsvisualisatie Perceel", "path": "/styling/label_kwaliteit.group.style"}, {"title": "Printvisualisatie", "path": "/styling/label_print.style"}, {"title": "Printvisualisatie Perceel", "path": "/styling/label_print.group.style"}]}, {"name": "Bijpijling", "group_name": "Perceel", "gpkg_path": "/srv/data/gpkg/perceel_bijpijling.gpkg", "tablename": "perceel_bijpijling", "geometry_type": "LineString", "columns": [{"name": "fuuid"}, {"name": "perceel_id", "alias": "perceelID"}], "title": "Bijpijling", "abstract": "Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal ge\u00efdentificeerd is en met kadastrale grenzen begrensd is.", "keywords": "Kadastrale percelen", "dataset_metadata_id": "a29917b9-3426-4041-a11b-69bcb2256904", "dataset_source_id": "06b6c650-cdb1-11dd-ad8b-0800200c9a64", "layer_extent": "-25000 250000 280000 860000", "minscale": "50", "maxscale": "6001", "styles": [{"title": "Standaardvisualisatie", "path": "/styling/bijpijling.style"}, {"title": "Kwaliteitsvisualisatie", "path": "/styling/bijpijling_kwaliteit.style"}, {"title": "Printvisualisatie", "path": "/styling/bijpijling_print.style"}, {"title": "Standaardvisualisatie Perceel", "path": "/styling/bijpijling.group.style"}, {"title": "Kwaliteitsvisualisatie Perceel", "path": "/styling/bijpijling_kwaliteit.group.style"}, {"title": "Printvisualisatie Perceel", "path": "/styling/bijpijling_print.group.style"}]}, {"name": "KadastraleGrens", "gpkg_path": "/srv/data/gpkg/kadastrale_grens.gpkg", "tablename": "kadastrale_grens", "geometry_type": "LineString", "columns": [{"name": "fuuid"}, {"name": "begin_geldigheid"}, {"name": "tijdstip_registratie"}, {"name": "volgnummer"}, {"name": "status_historie_code"}, {"name": "status_historie_waarde"}, {"name": "identificatie_namespace"}, {"name": "identificatie_lokaal_id", "alias": "identificatieLokaalID"}, {"name": "type_grens_code"}, {"name": "type_grens_waarde"}, {"name": "classificatie_kwaliteit_code", "alias": "ClassificatieKwaliteitCode"}, {"name": "classificatie_kwaliteit_waarde", "alias": "ClassificatieKwaliteitWaarde"}, {"name": "perceel_links_identificatie_namespace"}, {"name": "perceel_links_identificatie_lokaal_id", "alias": "perceelLinksIdentificatieLokaalID"}, {"name": "perceel_rechts_identificatie_namespace"}, {"name": "perceel_rechts_identificatie_lokaal_id", "alias": "perceelRechtsIdentificatieLokaalID"}], "title": "KadastraleGrens", "abstract": "Een Kadastrale Grens is de weergave van een grens op de kadastrale kaart die door de dienst van het Kadaster tussen percelen (voorlopig) vastgesteld wordt, op basis van inlichtingen van belanghebbenden en met gebruikmaking van de aan de kadastrale kaart ten grondslag liggende bescheiden die in elk geval de landmeetkundige gegevens bevatten van hetgeen op die kaart wordt weergegeven.", "keywords": "Grens,Kadastrale grenzen", "dataset_metadata_id": "a29917b9-3426-4041-a11b-69bcb2256904", "dataset_source_id": "06b6c650-cdb1-11dd-ad8b-0800200c9a64", "layer_extent": "-25000 250000 280000 860000", "minscale": "50", "maxscale": "6001", "styles": [{"title": "Standaardvisualisatie", "path": "/styling/kadastralegrens.style"}, {"title": "Kwaliteitsvisualisatie", "path": "/styling/kadastralegrens_kwaliteit.style"}, {"title": "Printvisualisatie", "path": "/styling/kadastralegrens_print.style"}, {"title": "Standaardvisualisatie KadastraleGrens", "path": "/styling/kadastralegrens.group.style"}, {"title": "Kwaliteitsvisualisatie KadastraleGrens", "path": "/styling/kadastralegrens_kwaliteit.group.style"}, {"title": "Printvisualisatie KadastraleGrens", "path": "/styling/kadastralegrens_print.group.style"}]}]}` - WMSTifConfig = `{"service_title": "Luchtfoto Labels WMS", "service_abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", "service_keywords": "bzk,luchtfotolabels", "service_accessconstraints": "https://creativecommons.org/publicdomain/zero/1.0/deed.nl", "service_extent": "-25000 250000 280000 860000", "maxSize": "4000", "service_namespace_prefix": "luchtfotolabels", "service_namespace_uri": "http://luchtfotolabels.geonovum.nl", "service_onlineresource": "https://service.pdok.nl", "service_path": "/bzk/luchtfotolabels/wms/v1_0", "service_metadata_id": "70562932-e7dc-4ba2-ba4f-05863d02587c", "dataset_owner": "kadaster", "authority_url": "http://www.kadaster.nl", "automatic_casing": false, "data_epsg": "EPSG:28992", "epsg_list": ["EPSG:28992", "EPSG:25831", "EPSG:25832", "EPSG:3034", "EPSG:3035", "EPSG:3857", "EPSG:4258", "EPSG:4326", "CRS:84"], "templates": "/srv/data/config/templates", "outputformat_jpg": "jpg", "outputformat_png8": "png", "symbols": [], "group_layers": [{"name": "lufolabels", "title": "Luchtfoto labels", "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", "style_name": "luchtfotolabels", "style_title": "Luchtfotolabels"}], "layers": [{"name": "luchtfotoroads_100pixkm", "group_name": "lufolabels", "resample": "BILINEAR", "tif_path": "/srv/data/tif/100pixkm_luforoads.vrt", "geometry_type": "Raster", "offsite": "#978E97", "get_feature_info_includes_class": false, "title": "Luchtfoto roads 100pixkm", "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", "keywords": "bzk,luchtfotolabels", "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", "layer_extent": "-25000 250000 280000 860000", "minscale": "24001", "maxscale": "48001", "styles": [{"title": "Luchtfotolabels", "path": "/styling/roads.style"}]}, {"name": "luchtfotoroads_200pixkm", "group_name": "lufolabels", "resample": "BILINEAR", "tif_path": "/srv/data/tif/200pixkm_luforoads.vrt", "geometry_type": "Raster", "offsite": "#978E97", "get_feature_info_includes_class": false, "title": "Luchtfoto roads 200pixkm", "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", "keywords": "bzk,luchtfotolabels", "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", "layer_extent": "-25000 250000 280000 860000", "minscale": "12001", "maxscale": "24001", "styles": [{"title": "Luchtfotolabels", "path": "/styling/roads.style"}]}, {"name": "luchtfotoroads_400pixkm", "group_name": "lufolabels", "resample": "BILINEAR", "tif_path": "/srv/data/tif/400pixkm_luforoads.vrt", "geometry_type": "Raster", "offsite": "#978E97", "get_feature_info_includes_class": false, "title": "Luchtfoto roads 400pixkm", "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", "keywords": "bzk,luchtfotolabels", "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", "layer_extent": "-25000 250000 280000 860000", "minscale": "6001", "maxscale": "12001", "styles": [{"title": "Luchtfotolabels", "path": "/styling/roads.style"}]}, {"name": "luchtfotoroads_800pixkm", "group_name": "lufolabels", "resample": "BILINEAR", "tif_path": "/srv/data/tif/800pixkm_luforoads.vrt", "geometry_type": "Raster", "offsite": "#978E97", "get_feature_info_includes_class": false, "title": "Luchtfoto roads 800pixkm", "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", "keywords": "bzk,luchtfotolabels", "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", "layer_extent": "-25000 250000 280000 860000", "minscale": "3001", "maxscale": "6001", "styles": [{"title": "Luchtfotolabels", "path": "/styling/roads.style"}]}, {"name": "luchtfotoroads_1600pixkm", "group_name": "lufolabels", "resample": "BILINEAR", "tif_path": "/srv/data/tif/1600pixkm_luforoads.vrt", "geometry_type": "Raster", "offsite": "#978E97", "get_feature_info_includes_class": false, "title": "Luchtfoto roads 1600pixkm", "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", "keywords": "bzk,luchtfotolabels", "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", "layer_extent": "-25000 250000 280000 860000", "minscale": "1501", "maxscale": "3001", "styles": [{"title": "Luchtfotolabels", "path": "/styling/roads.style"}]}, {"name": "luchtfotolabels_100pixkm", "group_name": "lufolabels", "resample": "BILINEAR", "tif_path": "/srv/data/tif/100pixkm_lufolabels.vrt", "geometry_type": "Raster", "offsite": "#978E97", "get_feature_info_includes_class": false, "title": "Luchtfoto labels 100pixkm", "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", "keywords": "bzk,luchtfotolabels", "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", "layer_extent": "-25000 250000 280000 860000", "minscale": "24001", "maxscale": "48001", "styles": [{"title": "Luchtfotolabels", "path": "/styling/labels.style"}]}, {"name": "luchtfotolabels_200pixkm", "group_name": "lufolabels", "resample": "BILINEAR", "tif_path": "/srv/data/tif/200pixkm_lufolabels.vrt", "geometry_type": "Raster", "offsite": "#978E97", "get_feature_info_includes_class": false, "title": "Luchtfoto labels 200pixkm", "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", "keywords": "bzk,luchtfotolabels", "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", "layer_extent": "-25000 250000 280000 860000", "minscale": "12001", "maxscale": "24001", "styles": [{"title": "Luchtfotolabels", "path": "/styling/labels.style"}]}, {"name": "luchtfotolabels_400pixkm", "group_name": "lufolabels", "resample": "BILINEAR", "tif_path": "/srv/data/tif/400pixkm_lufolabels.vrt", "geometry_type": "Raster", "offsite": "#978E97", "get_feature_info_includes_class": false, "title": "Luchtfoto labels 400pixkm", "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", "keywords": "bzk,luchtfotolabels", "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", "layer_extent": "-25000 250000 280000 860000", "minscale": "6001", "maxscale": "12001", "styles": [{"title": "Luchtfotolabels", "path": "/styling/labels.style"}]}, {"name": "luchtfotolabels_800pixkm", "group_name": "lufolabels", "resample": "BILINEAR", "tif_path": "/srv/data/tif/800pixkm_lufolabels.vrt", "geometry_type": "Raster", "offsite": "#978E97", "get_feature_info_includes_class": false, "title": "Luchtfoto labels 800pixkm", "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", "keywords": "bzk,luchtfotolabels", "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", "layer_extent": "-25000 250000 280000 860000", "minscale": "3001", "maxscale": "6001", "styles": [{"title": "Luchtfotolabels", "path": "/styling/labels.style"}]}, {"name": "luchtfotolabels_1600pixkm", "group_name": "lufolabels", "resample": "BILINEAR", "tif_path": "/srv/data/tif/1600pixkm_lufolabels.vrt", "geometry_type": "Raster", "offsite": "#978E97", "get_feature_info_includes_class": false, "title": "Luchtfoto labels 1600pixkm", "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", "keywords": "bzk,luchtfotolabels", "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", "layer_extent": "-25000 250000 280000 860000", "minscale": "1501", "maxscale": "3001", "styles": [{"title": "Luchtfotolabels", "path": "/styling/labels.style"}]}, {"name": "luchtfotolabels_3200pixkm", "group_name": "lufolabels", "resample": "BILINEAR", "tif_path": "/srv/data/tif/3200pixkm_lufolabels.vrt", "geometry_type": "Raster", "offsite": "#978E97", "get_feature_info_includes_class": false, "title": "Luchtfoto labels 3200pixkm", "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", "keywords": "bzk,luchtfotolabels", "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", "layer_extent": "-25000 250000 280000 860000", "maxscale": "1501", "styles": [{"title": "Luchtfotolabels", "path": "/styling/labels.style"}]}]}` - WMSPostgisConfig = `{"service_title": "BRT Terugmeldingen WMS", "service_abstract": "De BRT terugmeldingenservice bevat alle recente meldingen op BRT objecten waar twijfel over de juistheid bestaat. Zowel terugmeldingen op de TOP10 als meldingen die gemaakt zijn op de gegeneraliseerde kaartproducten (TOP25, TOP50, TOP100, TOP250) worden hierin geregistreerd. Daarnaast kan je de inhoud en status van de meldingen inzien. Ook een vermoedelijke fout geconstateerd? Doe een melding op https://verbeterdekaart.kadaster.nl", "service_keywords": "Basisregistratie Topografie,BRT,terugmeldingen,TOP10NL,TOP25,TOP50,TOP100,TOP250,in onderzoek register,verbeter de kaart,verbeterdekaart", "service_accessconstraints": "https://creativecommons.org/publicdomain/zero/1.0/deed.nl", "service_extent": "-7000 289000 300000 629000", "maxSize": "4000", "service_namespace_prefix": "terugmeldingen", "service_namespace_uri": "http://terugmeldingen.geonovum.nl", "service_onlineresource": "https://service.pdok.nl", "service_path": "/brt/terugmeldingen/wms/v1_0", "service_metadata_id": "fa069f74-9837-4d63-b2ac-b337b5de86b1", "dataset_owner": "brt", "authority_url": "http://www.brt.nl", "automatic_casing": true, "data_epsg": "EPSG:28992", "epsg_list": ["EPSG:28992", "EPSG:25831", "EPSG:25832", "EPSG:3034", "EPSG:3035", "EPSG:3857", "EPSG:4258", "EPSG:4326", "CRS:84"], "templates": "/srv/data/config/templates", "outputformat_jpg": "jpg", "outputformat_png8": "png", "symbols": ["/styling/terugmeldingen.symbol"], "group_layers": [], "layers": [{"name": "brtterugmeldingen", "tablename": "brtterugmeldingen.brtterugmeldingen_v1", "geometry_type": "Point", "columns": [{"name": "fuuid"}, {"name": "meldingsnummer_volledig"}, {"name": "tijdstip_registratie"}, {"name": "status"}, {"name": "omschrijving"}, {"name": "bronhoudercode"}, {"name": "bronhoudernaam"}, {"name": "tijdstip_statuswijziging"}, {"name": "toelichting"}, {"name": "objectid"}, {"name": "objecttype"}, {"name": "hoogte_vanaf_maaiveld"}], "postgis": true, "title": "BRT Terugmeldingen", "abstract": "Alle recente BRT terugmeldingen gedaan door BRT gebruikers.", "keywords": "brtterugmeldingen", "dataset_metadata_id": "7a84c4de-4ec0-4202-a8d0-792fb7d39d1f", "dataset_source_id": "07c7d650-cdb1-11dd-ad8b-0800200c9a60", "layer_extent": "-7000 289000 300000 629000", "styles": [{"title": "Terugmeldingen", "path": "/styling/terugmeldingen.style"}]}]}` ) func TestGetConfigForWFS(t *testing.T) { - type args struct { - WFS *pdoknlv3.WFS - ownerInfo *smoothoperatorv1.OwnerInfo - } - pdoknlv3.SetHost("http://localhost") - tests := []struct { - name string - args args - wantConfig string - wantErr bool - }{ - { - name: "GetConfig for WFS", - args: args{ - WFS: &pdoknlv3.WFS{ - ObjectMeta: metav1.ObjectMeta{ - Labels: map[string]string{ - "dataset": "dataset", - "dataset-owner": "datasetOwner", - "theme": "theme", - "service-version": "v1_0", - }, - }, - Spec: pdoknlv3.WFSSpec{ - Options: pdoknlv3.Options{ - AutomaticCasing: true, - }, - Service: pdoknlv3.WFSService{ - Title: "some Service title", - Abstract: "some \"Service\" abstract", - Keywords: []string{"service-keyword-1", "service-keyword-2", "infoFeatureAccessService"}, - AccessConstraints: smoothoperatorutils.Pointer("http://creativecommons.org/publicdomain/zero/1.0/deed.nl"), - Bbox: &pdoknlv3.Bbox{ - DefaultCRS: shared_model.BBox{ - MinX: "0.0", - MaxX: "1.0", - MinY: "2.0", - MaxY: "3.0", - }, - }, - Inspire: &pdoknlv3.Inspire{ - ServiceMetadataURL: pdoknlv3.MetadataURL{ - CSW: &pdoknlv3.Metadata{ - MetadataIdentifier: "metameta-meta-meta-meta-metametameta", - }, - }, - }, - DefaultCrs: "EPSG:28992", - OtherCrs: []string{ - "EPSG:28992", - "EPSG:25831", - "EPSG:25832", - "EPSG:3034", - "EPSG:3035", - "EPSG:3857", - "EPSG:4258", - "EPSG:4326", - }, - FeatureTypes: []pdoknlv3.FeatureType{ - { - Name: "featuretype-1-name", - Title: "featuretype-1-title", - Abstract: "feature \"1\" abstract", - Keywords: []string{"featuretype-1-keyword-1", "featuretype-1-keyword-2"}, - DatasetMetadataURL: pdoknlv3.MetadataURL{ - CSW: &pdoknlv3.Metadata{ - MetadataIdentifier: "datadata-data-data-data-datadatadata", - }, - }, - Bbox: &pdoknlv3.FeatureBbox{ - DefaultCRS: shared_model.BBox{ - MinX: "0.0", - MaxX: "1.0", - MinY: "2.0", - MaxY: "3.0", - }, - }, - Data: pdoknlv3.Data{ - Gpkg: &pdoknlv3.Gpkg{ - TableName: "featuretype-1", - GeometryType: "Point", - BlobKey: "public/testme/gpkg/file-1.gpkg", - Columns: []pdoknlv3.Column{ - {Name: "featuretype-1-column-1"}, - {Name: "featuretype-1-column-2"}, - }, - }, - }, - }, - { - Name: "featuretype-2-name", - Title: "featuretype-2-title", - Abstract: "feature \"2\" abstract", - Keywords: []string{"featuretype-2-keyword-1", "featuretype-2-keyword-2"}, - DatasetMetadataURL: pdoknlv3.MetadataURL{ - CSW: &pdoknlv3.Metadata{ - MetadataIdentifier: "datadata-data-data-data-datadatadata", - }, - }, - Bbox: &pdoknlv3.FeatureBbox{ - DefaultCRS: shared_model.BBox{ - MinX: "0.0", - MaxX: "1.0", - MinY: "2.0", - MaxY: "3.0", - }, - }, - Data: pdoknlv3.Data{ - Postgis: &pdoknlv3.Postgis{ - TableName: "featuretype-2", - GeometryType: "MultiLine", - Columns: []pdoknlv3.Column{ - {Name: "featuretype-2-column-1", Alias: smoothoperatorutils.Pointer("alias_featuretype-2-column-1")}, - {Name: "featuretype-2-column-2"}, - }, - }, - }, - }, - }, - Prefix: "prefix", - }, - }, - }, - ownerInfo: &smoothoperatorv1.OwnerInfo{ - Spec: smoothoperatorv1.OwnerInfoSpec{ - NamespaceTemplate: smoothoperatorutils.Pointer("http://{{prefix}}.geonovum.nl"), - }, - }, - }, - wantConfig: WFSConfig, - wantErr: false, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - gotConfig, err := GetConfig(tt.args.WFS, tt.args.ownerInfo) - if (err != nil) != tt.wantErr { - t.Errorf("GetConfig() error = %v, wantErr %v", err, tt.wantErr) - return - } - - require.JSONEqf(t, tt.wantConfig, gotConfig, "GetConfig() got %v, want %v", gotConfig, tt.wantConfig) - }) - } -} - -func TestGetConfigForWMSWithNoGroupLayers(t *testing.T) { + pdoknlv3.SetHost("https://service.pdok.nl") ownerInfo := &smoothoperatorv1.OwnerInfo{ Spec: smoothoperatorv1.OwnerInfoSpec{ NamespaceTemplate: smoothoperatorutils.Pointer("http://{{prefix}}.geonovum.nl"), }, } - //nolint:misspell - v2wmsstring := "apiVersion: pdok.nl/v2beta1\nkind: WMS\nmetadata:\n name: rws-nwbwegen-v1-0\n labels:\n dataset-owner: rws\n dataset: nwbwegen\n service-version: v1_0\n service-type: wms\n annotations:\n lifecycle-phase: prod\n service-bundle-id: b39c152b-393b-52f5-a50c-e1ffe904b6fb\nspec:\n general:\n datasetOwner: rws\n dataset: nwbwegen\n serviceVersion: v1_0\n kubernetes:\n healthCheck:\n boundingbox: 135134.89,457152.55,135416.03,457187.82\n resources:\n limits:\n ephemeralStorage: 1535Mi\n memory: 4G\n requests:\n cpu: 2000m\n ephemeralStorage: 1535Mi\n memory: 4G\n options:\n automaticCasing: true\n disableWebserviceProxy: false\n includeIngress: true\n validateRequests: true\n service:\n title: NWB - Wegen WMS\n abstract:\n Dit is de web map service van het Nationaal Wegen Bestand (NWB) - wegen.\n Deze dataset bevat alleen de wegvakken en hectometerpunten. Het Nationaal Wegen\n Bestand - Wegen is een digitaal geografisch bestand van alle wegen in Nederland.\n Opgenomen zijn alle wegen die worden beheerd door wegbeheerders als het Rijk,\n provincies, gemeenten en waterschappen, echter alleen voor zover deze zijn voorzien\n van een straatnaam of nummer.\n authority:\n name: rws\n url: https://www.rijkswaterstaat.nl\n dataEPSG: EPSG:28992\n extent: -59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961\n inspire: true\n keywords:\n - Vervoersnetwerken\n - Menselijke gezondheid en veiligheid\n - Geluidsbelasting hoofdwegen (Richtlijn Omgevingslawaai)\n - Nationaal\n - Voertuigen\n - Verkeer\n - Wegvakken\n - Hectometerpunten\n - HVD\n - Mobiliteit\n stylingAssets:\n configMapRefs:\n - name: includes\n keys:\n - nwb_wegen_hectopunten.symbol\n - hectopunten.style\n - wegvakken.style\n blobKeys:\n - resources/fonts/liberation-sans.ttf\n layers:\n - abstract:\n Deze laag bevat de wegvakken uit het Nationaal Wegen bestand (NWB)\n en geeft gedetailleerde informatie per wegvak zoals straatnaam, wegnummer,\n routenummer, wegbeheerder, huisnummers, enz. weer.\n data:\n gpkg:\n columns:\n - objectid\n - wvk_id\n - wvk_begdat\n - jte_id_beg\n - jte_id_end\n - wegbehsrt\n - wegnummer\n - wegdeelltr\n - hecto_lttr\n - bst_code\n - rpe_code\n - admrichtng\n - rijrichtng\n - stt_naam\n - stt_bron\n - wpsnaam\n - gme_id\n - gme_naam\n - hnrstrlnks\n - hnrstrrhts\n - e_hnr_lnks\n - e_hnr_rhts\n - l_hnr_lnks\n - l_hnr_rhts\n - begafstand\n - endafstand\n - beginkm\n - eindkm\n - pos_tv_wol\n - wegbehcode\n - wegbehnaam\n - distrcode\n - distrnaam\n - dienstcode\n - dienstnaam\n - wegtype\n - wgtype_oms\n - routeltr\n - routenr\n - routeltr2\n - routenr2\n - routeltr3\n - routenr3\n - routeltr4\n - routenr4\n - wegnr_aw\n - wegnr_hmp\n - geobron_id\n - geobron_nm\n - bronjaar\n - openlr\n - bag_orl\n - frc\n - fow\n - alt_naam\n - alt_nr\n - rel_hoogte\n - st_lengthshape\n geometryType: MultiLineString\n blobKey: geopackages/rws/nwbwegen/410a6d1e-e767-41b4-ba8d-9e1e955dd013/1/nwb_wegen.gpkg\n table: wegvakken\n datasetMetadataIdentifier: a9b7026e-0a81-4813-93bd-ba49e6f28502\n keywords:\n - Vervoersnetwerken\n - Menselijke gezondheid en veiligheid\n - Geluidsbelasting hoofdwegen (Richtlijn Omgevingslawaai)\n - Nationaal\n - Voertuigen\n - Verkeer\n - Wegvakken\n maxScale: 50000.0\n minScale: 1.0\n name: wegvakken\n sourceMetadataIdentifier: 8f0497f0-dbd7-4bee-b85a-5fdec484a7ff\n styles:\n - name: wegvakken\n title: NWB - Wegvakken\n visualization: wegvakken.style\n title: Wegvakken\n visible: true\n - abstract:\n Deze laag bevat de hectopunten uit het Nationaal Wegen Bestand (NWB)\n en geeft gedetailleerde informatie per hectopunt zoals hectometrering, afstand,\n zijde en hectoletter weer.\n data:\n gpkg:\n columns:\n - objectid\n - hectomtrng\n - afstand\n - wvk_id\n - wvk_begdat\n - zijde\n - hecto_lttr\n geometryType: MultiPoint\n blobKey: geopackages/rws/nwbwegen/410a6d1e-e767-41b4-ba8d-9e1e955dd013/1/nwb_wegen.gpkg\n table: hectopunten\n datasetMetadataIdentifier: a9b7026e-0a81-4813-93bd-ba49e6f28502\n keywords:\n - Vervoersnetwerken\n - Menselijke gezondheid en veiligheid\n - Geluidsbelasting hoofdwegen (Richtlijn Omgevingslawaai)\n - Nationaal\n - Voertuigen\n - Verkeer\n - Hectometerpunten\n maxScale: 50000.0\n minScale: 1.0\n name: hectopunten\n sourceMetadataIdentifier: 8f0497f0-dbd7-4bee-b85a-5fdec484a7ff\n styles:\n - name: hectopunten\n title: NWB - Hectopunten\n visualization: hectopunten.style\n title: Hectopunten\n visible: true\n metadataIdentifier: f2437a92-ddd3-4777-a1bc-fdf4b4a7fcb8\n" - v2wms := &v2beta1.WMS{} - err := yaml.Unmarshal([]byte(v2wmsstring), &v2wms) + input, err := os.ReadFile("test_data/input/wfs.yaml") + assert.NoError(t, err) + inputWfs := pdoknlv3.WFS{} + err = yaml.Unmarshal(input, &inputWfs) assert.NoError(t, err) - var wms pdoknlv3.WMS - v2wms.ToV3(&wms) - - pdoknlv3.SetHost("https://service.pdok.nl") - inputStruct, err := MapWMSToMapfileGeneratorInput(&wms, ownerInfo) + inputStruct, err := MapWFSToMapfileGeneratorInput(&inputWfs, ownerInfo) assert.NoError(t, err) - expected := WMSInput{} - err = json.Unmarshal([]byte(WMSGrouplessConfig), &expected) + expected, err := readExpectedWFS("wfs.json") assert.NoError(t, err) - assert.Equal(t, expected, inputStruct) + diff := cmp.Diff(expected, inputStruct) + assert.Equal(t, diff, "", "%s", diff) } -func TestGetConfigForWMSWithGroupLayers(t *testing.T) { - ownerInfo := &smoothoperatorv1.OwnerInfo{ - Spec: smoothoperatorv1.OwnerInfoSpec{ - NamespaceTemplate: smoothoperatorutils.Pointer("http://{{prefix}}.geonovum.nl"), - }, - } +func TestGetConfigForWMSWithNoGroupLayers(t *testing.T) { + testWMS(t, "wms_groupless") +} - //nolint:misspell - v2wmsstring := "apiVersion: pdok.nl/v2beta1\nkind: WMS\nmetadata:\n name: hwh-hydrografie-v2-0\n labels:\n dataset-owner: hwh\n dataset: hydrografie\n service-version: v2_0\n service-type: wms\n annotations:\n lifecycle-phase: prod\n service-bundle-id: d30bdf62-1c12-45a5-a57d-367e642ef118\nspec:\n general:\n datasetOwner: hwh\n dataset: hydrografie\n serviceVersion: v2_0\n kubernetes:\n resources:\n limits:\n ephemeralStorage: 1544Mi\n requests:\n ephemeralStorage: 1544Mi\n service:\n title: Waterschappen Hydrografie (INSPIRE geharmoniseerd) WMS\n abstract:\n \"Deze dataset is gebaseerd op (niet geharmoniseerde) data van alle waterschappen\n in Nederland conform INSPIRE. De dataset bevat de volgende INSPIRE objecten:\n CrossingLine, CrossingPoint, DamOrWeir, DrainageBasin, Embankment, Lock, Sluice,\n Watercourse.\"\n authority:\n name: hwh\n url: https://www.hetwaterschapshuis.nl/\n dataEPSG: EPSG:28992\n extent: -59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961\n inspire: true\n keywords:\n - Aquaduct\n - Brug\n - Duikersifonhevel\n - Stuw\n - Vastedam\n - AfvoerAanvoergebied\n - Waterkering\n - Sluis\n - HydroObject\n - HVD\n - Aardobservatie en milieu\n metadataIdentifier: 871a58f8-c9f1-41a4-be37-0f059e0f886f\n stylingAssets:\n configMapRefs:\n - name: includes\n keys:\n - bridge.symbol\n - x.symbol\n blobKeys:\n - resources/images/hwh/hydrografie/bridge.png\n layers:\n - abstract: Watercourse\n data:\n gpkg:\n blobKey: geopackages/hwh/hydrografie/aaa/1/Waterbody.gpkg\n columns:\n - gml_id\n - beginlifespanversion\n - condition\n - delineationknown\n - endlifespanversion\n - length\n - level\n - localid\n - localtype\n - name\n - namespace\n - origin\n - persistence\n - streamorder\n - tidal\n - widthrange\n geometryType: MultiLineString\n table: watercourse\n datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n keywords:\n - Hydroobject\n - Waterbody\n - Watercourse\n - River\n - Stream\n - Lake\n - Reservoir\n name: HY.PhysicalWaters.Waterbodies\n sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n styles:\n - name: HY.PhysicalWaters.Waterbodies.Default\n title: Water bodies default style\n visualization: watercourse.style\n title: Waterbody\n maxScale: 50000.0\n minScale: 1.0\n visible: true\n - abstract: Drainage basin\n data:\n gpkg:\n blobKey: geopackages/hwh/hydrografie/aaa/1/Catchment.gpkg\n columns:\n - gml_id\n - area\n - beginlifespanversion\n - endlifespanversion\n - localid\n - name\n - namespace\n - order\n - orderscheme\n - origin\n - outlet\n - scope\n geometryType: MultiPolygon\n table: drainagebasin\n datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n keywords:\n - AfvoergebiedAanvoergebied\n - Catchment\n - Basin\n - Catchment Area\n - Drainage basin\n name: HY.PhysicalWaters.Catchments\n sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n styles:\n - name: HY.PhysicalWaters.Catchments.Default\n title: Drainage Basin default style\n visualization: drainagebasin.style\n title: Catchment\n maxScale: 50000.0\n minScale: 1.0\n visible: true\n - abstract: Crossing line, crossing point, dam or weir, sluice, embankment, lock.\n datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n keywords:\n - Man Made\n - Duikersifonhevel\n - Aquaduct\n - Brug\n - Stuw\n - Vastedam\n - Waterkering\n - Sluis\n - Bridge\n - Aquaduct\n - Dam\n - Weir\n - Lock\n - Ford\n - Dyke\n maxScale: 50000.0\n minScale: 1.0\n name: HY.PhysicalWaters.ManMadeObject\n sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n styles:\n - name: HY.PhysicalWaters.ManMadeObject.Default\n title: Man-made objects default style\n title: Man-made Object\n visible: true\n - abstract: Crossing line, crossing point, dam or weir, sluice, embankment, lock.\n data:\n gpkg:\n blobKey: geopackages/hwh/hydrografie/aaa/1/Man-madeObject.gpkg\n columns:\n - gml_id\n - beginlifespanversion\n - condition\n - endlifespanversion\n - localid\n - name\n - namespace\n geometryType: Point\n table: lock\n datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n group: HY.PhysicalWaters.ManMadeObject\n keywords:\n - Man Made\n - Duikersifonhevel\n - Aquaduct\n - Brug\n - Stuw\n - Vastedam\n - Waterkering\n - Sluis.\n name: HY.PhysicalWaters.ManMadeObject.lock\n sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n styles:\n - name: HY.PhysicalWaters.ManMadeObject.Default\n title: Lock\n visualization: lock.style\n title: Man-made Object\n maxScale: 50000.0\n minScale: 1.0\n visible: false\n - abstract: Crossing line, crossing point, dam or weir, sluice, embankment, lock.\n data:\n gpkg:\n blobKey: geopackages/hwh/hydrografie/aaa/1/Man-madeObject.gpkg\n columns:\n - gml_id\n - beginlifespanversion\n - condition\n - endlifespanversion\n - localid\n - name\n - namespace\n - type\n geometryType: Point\n table: crossingpoint\n datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n group: HY.PhysicalWaters.ManMadeObject\n keywords:\n - Man Made\n - Duikersifonhevel\n - Aquaduct\n - Brug\n - Stuw\n - Vastedam\n - Waterkering\n - Sluis.\n name: HY.PhysicalWaters.ManMadeObject.crossingpoint\n sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n styles:\n - name: HY.PhysicalWaters.ManMadeObject.Default\n title: Crossing Point\n visualization: crossingpoint.style\n title: Man-made Object\n maxScale: 50000.0\n minScale: 1.0\n visible: false\n - abstract: Crossing line, crossing point, dam or weir, sluice, embankment, lock.\n data:\n gpkg:\n blobKey: geopackages/hwh/hydrografie/aaa/1/Man-madeObject.gpkg\n columns:\n - gml_id\n - beginlifespanversion\n - condition\n - endlifespanversion\n - localid\n - name\n - namespace\n geometryType: Point\n table: sluice\n datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n group: HY.PhysicalWaters.ManMadeObject\n keywords:\n - Man Made\n - Duikersifonhevel\n - Aquaduct\n - Brug\n - Stuw\n - Vastedam\n - Waterkering\n - Sluis.\n name: HY.PhysicalWaters.ManMadeObject.sluice\n sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n styles:\n - name: HY.PhysicalWaters.ManMadeObject.Default\n title: Sluice\n visualization: sluice.style\n title: Man-made Object\n maxScale: 50000.0\n minScale: 1.0\n visible: false\n - abstract: Crossing line, crossing point, dam or weir, sluice, embankment, lock.\n data:\n gpkg:\n blobKey: geopackages/hwh/hydrografie/aaa/1/Man-madeObject.gpkg\n columns:\n - gml_id\n - beginlifespanversion\n - condition\n - endlifespanversion\n - localid\n - name\n - namespace\n geometryType: MultiLineString\n table: embankment\n datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n group: HY.PhysicalWaters.ManMadeObject\n keywords:\n - Man Made\n - Duikersifonhevel\n - Aquaduct\n - Brug\n - Stuw\n - Vastedam\n - Waterkering\n - Sluis.\n name: HY.PhysicalWaters.ManMadeObject.embankment\n sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n styles:\n - name: HY.PhysicalWaters.ManMadeObject.Default\n title: Embankment\n visualization: embankment.style\n title: Man-made Object\n maxScale: 50000.0\n minScale: 1.0\n visible: false\n - abstract: Crossing line, crossing point, dam or weir, sluice, embankment, lock.\n data:\n gpkg:\n blobKey: geopackages/hwh/hydrografie/aaa/1/Man-madeObject.gpkg\n columns:\n - gml_id\n - beginlifespanversion\n - condition\n - endlifespanversion\n - localid\n - name\n - namespace\n - type\n geometryType: MultiLineString\n table: crossingline\n datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n group: HY.PhysicalWaters.ManMadeObject\n keywords:\n - Man Made\n - Duikersifonhevel\n - Aquaduct\n - Brug\n - Stuw\n - Vastedam\n - Waterkering\n - Sluis.\n name: HY.PhysicalWaters.ManMadeObject.crossingline\n sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n styles:\n - name: HY.PhysicalWaters.ManMadeObject.Default\n title: Crossing Line\n visualization: crossingline.style\n title: Man-made Object\n maxScale: 50000.0\n minScale: 1.0\n visible: false\n - abstract: Crossing line, crossing point, dam or weir, sluice, embankment, lock.\n data:\n gpkg:\n blobKey: geopackages/hwh/hydrografie/aaa/1/Man-madeObject.gpkg\n columns:\n - gml_id\n - beginlifespanversion\n - condition\n - endlifespanversion\n - localid\n - name\n - namespace\n geometryType: Point\n table: damorweir\n datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n group: HY.PhysicalWaters.ManMadeObject\n keywords:\n - Man Made\n - Duikersifonhevel\n - Aquaduct\n - Brug\n - Stuw\n - Vastedam\n - Waterkering\n - Sluis.\n name: HY.PhysicalWaters.ManMadeObject.damorweir\n sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2\n styles:\n - name: HY.PhysicalWaters.ManMadeObject.Default\n title: Dam or Weir\n visualization: damorweir.style\n title: Man-made Object\n maxScale: 50000.0\n minScale: 1.0\n visible: false\n" - v2wms := &v2beta1.WMS{} - err := yaml.Unmarshal([]byte(v2wmsstring), v2wms) - assert.NoError(t, err) - var wms pdoknlv3.WMS - v2wms.ToV3(&wms) +func TestGetConfigForWMSWithGroupLayers(t *testing.T) { + testWMS(t, "wms_group") +} - pdoknlv3.SetHost("https://service.pdok.nl") +func TestGetConfigForWMSWithGroupLayersAndTopGroupLayer(t *testing.T) { + testWMS(t, "wms_group_and_toplayer") +} - inputStruct, err := MapWMSToMapfileGeneratorInput(&wms, ownerInfo) - assert.NoError(t, err) - expected := WMSInput{} - err = json.Unmarshal([]byte(WMSGroupConfig), &expected) - assert.NoError(t, err) +func TestGetConfigForTifWMS(t *testing.T) { + testWMS(t, "wms_tif") +} - assert.Equal(t, expected, inputStruct) +func TestGetConfigForPostgisWMS(t *testing.T) { + testWMS(t, "wms_postgis") } -func TestGetConfigForWMSWithGroupLayersAndTopGroupLayer(t *testing.T) { +func testWMS(t *testing.T, filenameWithoutExt string) { + pdoknlv3.SetHost("https://service.pdok.nl") ownerInfo := &smoothoperatorv1.OwnerInfo{ Spec: smoothoperatorv1.OwnerInfoSpec{ NamespaceTemplate: smoothoperatorutils.Pointer("http://{{prefix}}.geonovum.nl"), }, } - //nolint:misspell - v2wmsstring := "apiVersion: pdok.nl/v2beta1\nkind: WMS\nmetadata:\n name: kadaster-kadastralekaart\n labels:\n dataset-owner: kadaster\n dataset: kadastralekaart\n service-version: v5_0\n service-type: wms\nspec:\n general:\n datasetOwner: kadaster\n dataset: kadastralekaart\n serviceVersion: v5_0\n kubernetes:\n healthCheck:\n querystring: language=dut&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=193882.0336615453998,470528.1693874415942,193922.4213813782844,470564.250484353397&CRS=EPSG:28992&WIDTH=769&HEIGHT=687&LAYERS=OpenbareRuimteNaam,Bebouwing,Perceel,KadastraleGrens&FORMAT=image/png&DPI=96&MAP_RESOLUTION=96&FORMAT_OPTIONS=dpi:96&TRANSPARENT=TRUE\n mimetype: image/png\n resources:\n limits:\n memory: \"103M\"\n ephemeralStorage: \"104M\"\n requests:\n cpu: \"1001\"\n memory: \"101M\"\n ephemeralStorage: \"102M\"\n options:\n automaticCasing: true\n disableWebserviceProxy: false\n includeIngress: true\n validateRequests: true\n rewriteGroupToDataLayers: true\n service:\n inspire: false\n title: Kadastrale Kaart (WMS)\n abstract: Overzicht van de ligging van de kadastrale percelen in Nederland. Fungeert als schakel tussen terrein en registratie, vervult voor externe gebruiker vaak een referentiefunctie, een ondergrond ten opzichte waarvan de gebruiker eigen informatie kan vastleggen en presenteren.\n keywords:\n - Kadaster\n - Kadastrale percelen\n - Kadastrale grens\n - Kadastrale kaart\n - Bebouwing\n - Nummeraanduidingreeks\n - Openbare ruimte naam\n - Perceel\n - Grens\n - Kwaliteit\n - Kwaliteitslabels\n - HVD\n - Geospatiale data\n metadataIdentifier: 97cf6a64-9cfc-4ce6-9741-2db44fd27fca\n authority:\n name: kadaster\n url: https://www.kadaster.nl\n dataEPSG: EPSG:28992\n resolution: 91\n defResolution: 91\n extent: \"-25000 250000 280000 860000\"\n maxSize: 10000\n stylingAssets:\n configMapRefs:\n - name: includes\n blobKeys:\n - resources/fonts/liberation-sans.ttf\n - resources/fonts/liberation-sans-italic.ttf\n layers:\n - name: Kadastralekaart\n title: KadastraleKaartv5\n abstract: Overzicht van de ligging van de kadastrale percelen in Nederland. Fungeert als schakel tussen terrein en registratie, vervult voor externe gebruiker vaak een referentiefunctie, een ondergrond ten opzichte waarvan de gebruiker eigen informatie kan vastleggen en presenteren.\n maxScale: 6001\n keywords:\n - Kadaster\n - Kadastrale percelen\n - Kadastrale grens\n datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904\n sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64\n styles:\n - name: standaard\n title: Standaardvisualisatie\n abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief).\n - name: kwaliteit\n title: Kwaliteitsvisualisatie\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n - name: print\n title: Printvisualisatie\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n - name: Bebouwing\n visible: true\n group: Kadastralekaart\n title: Bebouwing\n abstract: De laag Bebouwing is een selectie op panden van de BGT.\n keywords:\n - Bebouwing\n datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904\n sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64\n minScale: 50\n maxScale: 6001\n styles:\n - name: standaard:bebouwing\n title: Standaardvisualisatie Bebouwing\n abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief).\n - name: kwaliteit:bebouwing\n title: Kwaliteitsvisualisatie Bebouwing\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n - name: print:bebouwing\n title: Printvisualisatie Bebouwing\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n - name: Bebouwingvlak\n visible: true\n group: Bebouwing\n title: Bebouwingvlak\n abstract: De laag Bebouwing is een selectie op panden van de BGT.\n keywords:\n - Bebouwing\n datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904\n sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64\n minScale: 50\n maxScale: 6001\n styles:\n - name: standaard\n title: Standaardvisualisatie\n abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief).\n visualization: bebouwing.style\n - name: kwaliteit\n title: Kwaliteitsvisualisatie\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n visualization: bebouwing_kwaliteit.style\n - name: print\n title: Printvisualisatie\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n visualization: bebouwing_print.style\n - name: standaard:bebouwing\n title: Standaardvisualisatie Bebouwing\n abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief).\n visualization: bebouwing.group.style\n - name: kwaliteit:bebouwing\n title: Kwaliteitsvisualisatie Bebouwing\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n visualization: bebouwing_kwaliteit.group.style\n - name: print:bebouwing\n title: Printvisualisatie Bebouwing\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n visualization: bebouwing_print.group.style\n data:\n gpkg:\n blobKey: geopackages/kadaster/kadastralekaart_brk/aaa/1/pand.gpkg\n table: pand\n geometryType: Polygon\n columns:\n - object_begin_tijd\n - lv_publicatiedatum\n - relatieve_hoogteligging\n - in_onderzoek\n - tijdstip_registratie\n - identificatie_namespace\n - identificatie_lokaal_id\n - bronhouder\n - bgt_status\n - plus_status\n - identificatie_bag_pnd\n aliases:\n lv_publicatiedatum: LV-publicatiedatum\n identificatie_lokaal_id: identificatieLokaalID\n identificatie_bag_pnd: identificatieBAGPND\n bgt_status: bgt-status\n plus_status: plus-status\n - name: Nummeraanduidingreeks\n visible: true\n group: Bebouwing\n title: Nummeraanduidingreeks\n abstract: De laag Bebouwing is een selectie op panden van de BGT.\n keywords:\n - Nummeraanduidingreeks\n datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904\n sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64\n minScale: 50\n maxScale: 2001\n styles:\n - name: standaard\n title: Standaardvisualisatie\n abstract: Standaarvisualisatie van de nummeraanduidingreeks.\n visualization: nummeraanduidingreeks.style\n - name: kwaliteit\n title: Kwaliteitsvisualisatie\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n visualization: nummeraanduidingreeks_kwaliteit.style\n - name: print\n title: Printvisualisatie\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n visualization: nummeraanduidingreeks_print.style\n - name: standaard:bebouwing\n title: Standaardvisualisatie Bebouwing\n abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief).\n visualization: nummeraanduidingreeks.group.style\n - name: kwaliteit:bebouwing\n title: Kwaliteitsvisualisatie Bebouwing\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n visualization: nummeraanduidingreeks_kwaliteit.group.style\n - name: print:bebouwing\n title: Printvisualisatie Bebouwing\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n visualization: nummeraanduidingreeks_print.group.style\n data:\n gpkg:\n blobKey: geopackages/kadaster/kadastralekaart_brk/aaa/1/pand_nummeraanduiding.gpkg\n table: pand_nummeraanduiding\n geometryType: Point\n columns:\n - bebouwing_id\n - hoek\n - tekst\n - bag_vbo_laagste_huisnummer\n - bag_vbo_hoogste_huisnummer\n - hoek\n aliases:\n bebouwing_id: bebouwingID\n bag_vbo_laagste_huisnummer: identificatie_BAGVBOLaagsteHuisnummer\n bag_vbo_hoogste_huisnummer: identificatie_BAGVBOHoogsteHuisnummer\n - name: OpenbareRuimteNaam\n visible: true\n group: Kadastralekaart\n title: OpenbareRuimteNaam\n abstract: De laag Openbareruimtenaam is een selectie op de openbare ruimte labels van de BGT met een bgt-status \"bestaand\" die een classificatie (openbareruimtetype) Weg en Water hebben.\n keywords:\n - Openbare ruimte naam\n datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904\n sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64\n minScale: 50\n maxScale: 2001\n styles:\n - name: standaard\n title: Standaardvisualisatie\n abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief).\n visualization: openbareruimtenaam.style\n - name: kwaliteit\n title: Kwaliteitsvisualisatie\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n visualization: openbareruimtenaam_kwaliteit.style\n - name: print\n title: Printvisualisatie\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n visualization: openbareruimtenaam_print.style\n - name: standaard:openbareruimtenaam\n title: Standaardvisualisatie OpenbareRuimteNaam\n abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief).\n visualization: openbareruimtenaam.group.style\n - name: kwaliteit:openbareruimtenaam\n title: Kwaliteitsvisualisatie OpenbareRuimteNaam\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n visualization: openbareruimtenaam_kwaliteit.group.style\n - name: print:openbareruimtenaam\n title: Printvisualisatie OpenbareRuimteNaam\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n visualization: openbareruimtenaam_print.group.style\n data:\n gpkg:\n blobKey: geopackages/kadaster/kadastralekaart_brk/aaa/1/openbareruimtelabel.gpkg\n table: openbareruimtelabel\n geometryType: Point\n columns:\n - object_begin_tijd\n - lv_publicatiedatum\n - relatieve_hoogteligging\n - in_onderzoek\n - tijdstip_registratie\n - identificatie_namespace\n - identificatie_lokaal_id\n - bronhouder\n - bgt_status\n - plus_status\n - identificatie_bag_opr\n - tekst\n - hoek\n - openbare_ruimte_type\n aliases:\n lv_publicatiedatum: LV-publicatiedatum\n identificatie_lokaal_id: identificatieLokaalID\n identificatie_bag_opr: identificatieBAGOPR\n bgt_status: bgt-status\n plus_status: plus-status\n - name: Perceel\n visible: true\n group: Kadastralekaart\n title: Perceel\n abstract: Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal geïdentificeerd is en met kadastrale grenzen begrensd is.\n keywords:\n - Perceel\n - Kadastrale percelen\n datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904\n sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64\n minScale: 50\n maxScale: 6001\n styles:\n - name: standaard:perceel\n title: Standaardvisualisatie Perceel\n abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief).\n - name: kwaliteit:perceel\n title: Kwaliteitsvisualisatie Perceel\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n - name: print:perceel\n title: Printvisualisatie Perceel\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n - name: Perceelvlak\n visible: true\n group: Perceel\n title: Perceelvlak\n abstract: Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal geïdentificeerd is en met kadastrale grenzen begrensd is.\n keywords:\n - Kadastrale percelen\n datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904\n sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64\n minScale: 50\n maxScale: 6001\n styles:\n - name: standaard\n title: Standaardvisualisatie\n abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief).\n visualization: perceelvlak.style\n - name: kwaliteit\n title: Kwaliteitsvisualisatie\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n visualization: perceelvlak_kwaliteit.style\n - name: print\n title: Printvisualisatie\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n visualization: perceelvlak_print.style\n - name: standaard:perceel\n title: Standaardvisualisatie Perceel\n abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief).\n visualization: perceelvlak.group.style\n - name: kwaliteit:perceel\n title: Kwaliteitsvisualisatie Perceel\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n visualization: perceelvlak_kwaliteit.group.style\n - name: print:perceel\n title: Printvisualisatie Perceel\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n visualization: perceelvlak_print.group.style\n data:\n gpkg:\n blobKey: geopackages/kadaster/kadastralekaart_brk/aaa/1/perceel.gpkg\n table: perceel\n geometryType: Polygon\n columns:\n - identificatie_namespace\n - identificatie_lokaal_id\n - begin_geldigheid\n - tijdstip_registratie\n - volgnummer\n - status_historie_code\n - status_historie_waarde\n - kadastrale_gemeente_code\n - kadastrale_gemeente_waarde\n - sectie\n - akr_kadastrale_gemeente_code_code\n - akr_kadastrale_gemeente_code_waarde\n - kadastrale_grootte_waarde\n - soort_grootte_code\n - soort_grootte_waarde\n - perceelnummer\n - perceelnummer_rotatie\n - perceelnummer_verschuiving_delta_x\n - perceelnummer_verschuiving_delta_y\n - perceelnummer_plaatscoordinaat_x\n - perceelnummer_plaatscoordinaat_y\n aliases:\n identificatie_lokaal_id: identificatieLokaalID\n akr_kadastrale_gemeente_code_code: AKRKadastraleGemeenteCodeCode\n akr_kadastrale_gemeente_code_waarde: AKRKadastraleGemeenteCodeWaarde\n - name: Label\n visible: true\n group: Perceel\n title: Label\n abstract: Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal geïdentificeerd is en met kadastrale grenzen begrensd is.\n keywords:\n - Kadastrale percelen\n datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904\n sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64\n minScale: 50\n maxScale: 6001\n styles:\n - name: standaard\n title: Standaardvisualisatie\n abstract: Standaarvisualisatie van het label.\n visualization: label.style\n - name: standaard:perceel\n title: Standaardvisualisatie Perceel\n abstract: Standaarvisualisatie van het label.\n visualization: label.group.style\n - name: kwaliteit\n title: Kwaliteitsvisualisatie\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n visualization: label_kwaliteit.style\n - name: kwaliteit:perceel\n title: Kwaliteitsvisualisatie Perceel\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n visualization: label_kwaliteit.group.style\n - name: print\n title: Printvisualisatie\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n visualization: label_print.style\n - name: print:perceel\n title: Printvisualisatie Perceel\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n visualization: label_print.group.style\n data:\n gpkg:\n blobKey: geopackages/kadaster/kadastralekaart_brk/aaa/1/perceel_label.gpkg\n table: perceel_label\n geometryType: Point\n columns:\n - perceel_id\n - perceelnummer\n - rotatie\n - verschuiving_delta_x\n - verschuiving_delta_y\n aliases:\n perceel_id: perceelID\n - name: Bijpijling\n visible: true\n group: Perceel\n title: Bijpijling\n abstract: Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal geïdentificeerd is en met kadastrale grenzen begrensd is.\n keywords:\n - Kadastrale percelen\n datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904\n sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64\n minScale: 50\n maxScale: 6001\n styles:\n - name: standaard\n title: Standaardvisualisatie\n abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief).\n visualization: bijpijling.style\n - name: kwaliteit\n title: Kwaliteitsvisualisatie\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n visualization: bijpijling_kwaliteit.style\n - name: print\n title: Printvisualisatie\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n visualization: bijpijling_print.style\n - name: standaard:perceel\n title: Standaardvisualisatie Perceel\n abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief).\n visualization: bijpijling.group.style\n - name: kwaliteit:perceel\n title: Kwaliteitsvisualisatie Perceel\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n visualization: bijpijling_kwaliteit.group.style\n - name: print:perceel\n title: Printvisualisatie Perceel\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n visualization: bijpijling_print.group.style\n data:\n gpkg:\n blobKey: geopackages/kadaster/kadastralekaart_brk/aaa/1/perceel_bijpijling.gpkg\n table: perceel_bijpijling\n geometryType: LineString\n columns:\n - perceel_id\n aliases:\n perceel_id: perceelID\n - name: KadastraleGrens\n visible: true\n group: Kadastralekaart\n title: KadastraleGrens\n abstract: Een Kadastrale Grens is de weergave van een grens op de kadastrale kaart die door de dienst van het Kadaster tussen percelen (voorlopig) vastgesteld wordt, op basis van inlichtingen van belanghebbenden en met gebruikmaking van de aan de kadastrale kaart ten grondslag liggende bescheiden die in elk geval de landmeetkundige gegevens bevatten van hetgeen op die kaart wordt weergegeven.\n keywords:\n - Grens\n - Kadastrale grenzen\n datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904\n sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64\n minScale: 50\n maxScale: 6001\n styles:\n - name: standaard\n title: Standaardvisualisatie\n abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief).\n visualization: kadastralegrens.style\n - name: kwaliteit\n title: Kwaliteitsvisualisatie\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n visualization: kadastralegrens_kwaliteit.style\n - name: print\n title: Printvisualisatie\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n visualization: kadastralegrens_print.style\n - name: standaard:kadastralegrens\n title: Standaardvisualisatie KadastraleGrens\n abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief).\n visualization: kadastralegrens.group.style\n - name: kwaliteit:kadastralegrens\n title: Kwaliteitsvisualisatie KadastraleGrens\n abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E).\n visualization: kadastralegrens_kwaliteit.group.style\n - name: print:kadastralegrens\n title: Printvisualisatie KadastraleGrens\n abstract: Visualisatie ten behoeve van afdrukken op 180 dpi.\n visualization: kadastralegrens_print.group.style\n data:\n gpkg:\n blobKey: geopackages/kadaster/kadastralekaart_brk/aaa/1/kadastrale_grens.gpkg\n table: kadastrale_grens\n geometryType: LineString\n columns:\n - begin_geldigheid\n - tijdstip_registratie\n - volgnummer\n - status_historie_code\n - status_historie_waarde\n - identificatie_namespace\n - identificatie_lokaal_id\n - type_grens_code\n - type_grens_waarde\n - classificatie_kwaliteit_code\n - classificatie_kwaliteit_waarde\n - perceel_links_identificatie_namespace\n - perceel_links_identificatie_lokaal_id\n - perceel_rechts_identificatie_namespace\n - perceel_rechts_identificatie_lokaal_id\n aliases:\n identificatie_lokaal_id: identificatieLokaalID\n perceel_links_identificatie_lokaal_id: perceelLinksIdentificatieLokaalID\n perceel_rechts_identificatie_lokaal_id: perceelRechtsIdentificatieLokaalID\n classificatie_kwaliteit_code: ClassificatieKwaliteitCode\n classificatie_kwaliteit_waarde: ClassificatieKwaliteitWaarde\n" + input, err := os.ReadFile("test_data/input/" + filenameWithoutExt + ".yaml") + assert.NoError(t, err) v2wms := &v2beta1.WMS{} - err := yaml.Unmarshal([]byte(v2wmsstring), v2wms) + err = yaml.Unmarshal(input, v2wms) assert.NoError(t, err) var wms pdoknlv3.WMS v2wms.ToV3(&wms) - pdoknlv3.SetHost("https://service.pdok.nl") - inputStruct, err := MapWMSToMapfileGeneratorInput(&wms, ownerInfo) assert.NoError(t, err) - expected := WMSInput{} - assert.NoError(t, err) - err = json.Unmarshal([]byte(WMSGroupAndToplayerConfig), &expected) + expected, err := readExpectedWMS(filenameWithoutExt + ".json") assert.NoError(t, err) - assert.Equal(t, expected, inputStruct) + diff := cmp.Diff(expected, inputStruct) + assert.Equal(t, diff, "", "%s", diff) } -func TestGetConfigForTifWMS(t *testing.T) { - ownerInfo := &smoothoperatorv1.OwnerInfo{ - Spec: smoothoperatorv1.OwnerInfoSpec{ - NamespaceTemplate: smoothoperatorutils.Pointer("http://{{prefix}}.geonovum.nl"), - }, +func readExpectedWMS(filename string) (WMSInput, error) { + bytes, err := os.ReadFile("test_data/expected/" + filename) + if err != nil { + return WMSInput{}, err } - v2wmsstring := "apiVersion: pdok.nl/v2beta1\nkind: WMS\nmetadata:\n name: bzk-luchtfotolabels-v1-0\n labels:\n dataset-owner: bzk\n dataset: luchtfotolabels\n service-version: v1_0\n service-type: wms\nspec:\n general:\n datasetOwner: bzk\n dataset: luchtfotolabels\n serviceVersion: v1_0\n kubernetes:\n autoscaling:\n minReplicas: 1\n maxReplicas: 2\n healthCheck:\n boundingbox: 135036.1077132325445,456913.9317436855054,135531.2729437439411,457377.1306112145539\n resources:\n limits:\n memory: 4G\n ephemeralStorage: 6G\n requests:\n cpu: \"1\"\n memory: 4G\n ephemeralStorage: 6G\n options:\n automaticCasing: false\n disableWebserviceProxy: false\n includeIngress: false\n validateRequests: false\n validateChildStyleNameEqual: false\n service:\n inspire: false\n title: Luchtfoto Labels WMS\n abstract: \"De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.\"\n keywords:\n - bzk\n - luchtfotolabels\n metadataIdentifier: 70562932-e7dc-4ba2-ba4f-05863d02587c\n authority:\n name: kadaster\n url: http://www.kadaster.nl\n dataEPSG: EPSG:28992\n stylingAssets:\n configMapRefs:\n - name: ${INCLUDES}\n layers:\n - name: lufolabels\n visible: true\n title: Luchtfoto labels\n abstract: \"De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.\"\n keywords:\n - bzk\n - luchtfotolabels\n datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28\n sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611\n styles:\n - name: luchtfotolabels\n title: Luchtfotolabels\n - name: luchtfotoroads_100pixkm\n visible: true\n title: Luchtfoto roads 100pixkm\n group: lufolabels\n abstract: \"De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.\"\n keywords:\n - bzk\n - luchtfotolabels\n datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28\n sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611\n minScale: 24001\n maxScale: 48001\n styles:\n - name: luchtfotolabels\n title: Luchtfotolabels\n visualization: roads.style\n data:\n tif:\n blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/100pixkm_luforoads/100pixkm_luforoads.vrt\n offsite: \"#978E97\"\n resample: BILINEAR\n - name: luchtfotoroads_200pixkm\n visible: true\n title: Luchtfoto roads 200pixkm\n group: lufolabels\n abstract: \"De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.\"\n keywords:\n - bzk\n - luchtfotolabels\n datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28\n sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611\n minScale: 12001\n maxScale: 24001\n styles:\n - name: luchtfotolabels\n title: Luchtfotolabels\n visualization: roads.style\n data:\n tif:\n blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/200pixkm_luforoads/200pixkm_luforoads.vrt\n offsite: \"#978E97\"\n resample: BILINEAR\n - name: luchtfotoroads_400pixkm\n visible: true\n title: Luchtfoto roads 400pixkm\n group: lufolabels\n abstract: \"De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.\"\n keywords:\n - bzk\n - luchtfotolabels\n datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28\n sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611\n minScale: 6001\n maxScale: 12001\n styles:\n - name: luchtfotolabels\n title: Luchtfotolabels\n visualization: roads.style\n data:\n tif:\n blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/400pixkm_luforoads/400pixkm_luforoads.vrt\n offsite: \"#978E97\"\n resample: BILINEAR\n - name: luchtfotoroads_800pixkm\n visible: true\n title: Luchtfoto roads 800pixkm\n group: lufolabels\n abstract: \"De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.\"\n keywords:\n - bzk\n - luchtfotolabels\n datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28\n sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611\n minScale: 3001\n maxScale: 6001\n styles:\n - name: luchtfotolabels\n title: Luchtfotolabels\n visualization: roads.style\n data:\n tif:\n blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/800pixkm_luforoads/800pixkm_luforoads.vrt\n offsite: \"#978E97\"\n resample: BILINEAR\n - name: luchtfotoroads_1600pixkm\n visible: true\n title: Luchtfoto roads 1600pixkm\n group: lufolabels\n abstract: \"De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.\"\n keywords:\n - bzk\n - luchtfotolabels\n datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28\n sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611\n minScale: 1501\n maxScale: 3001\n styles:\n - name: luchtfotolabels\n title: Luchtfotolabels\n visualization: roads.style\n data:\n tif:\n blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/1600pixkm_luforoads/1600pixkm_luforoads.vrt\n offsite: \"#978E97\"\n resample: BILINEAR\n - name: luchtfotolabels_100pixkm\n visible: true\n title: Luchtfoto labels 100pixkm\n group: lufolabels\n abstract: \"De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.\"\n keywords:\n - bzk\n - luchtfotolabels\n datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28\n sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611\n minScale: 24001\n maxScale: 48001\n styles:\n - name: luchtfotolabels\n title: Luchtfotolabels\n visualization: labels.style\n data:\n tif:\n blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/100pixkm_lufolabels/100pixkm_lufolabels.vrt\n offsite: \"#978E97\"\n resample: BILINEAR\n - name: luchtfotolabels_200pixkm\n visible: true\n title: Luchtfoto labels 200pixkm\n group: lufolabels\n abstract: \"De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.\"\n keywords:\n - bzk\n - luchtfotolabels\n datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28\n sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611\n minScale: 12001\n maxScale: 24001\n styles:\n - name: luchtfotolabels\n title: Luchtfotolabels\n visualization: labels.style\n data:\n tif:\n blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/200pixkm_lufolabels/200pixkm_lufolabels.vrt\n offsite: \"#978E97\"\n resample: BILINEAR\n - name: luchtfotolabels_400pixkm\n visible: true\n title: Luchtfoto labels 400pixkm\n group: lufolabels\n abstract: \"De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.\"\n keywords:\n - bzk\n - luchtfotolabels\n datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28\n sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611\n minScale: 6001\n maxScale: 12001\n styles:\n - name: luchtfotolabels\n title: Luchtfotolabels\n visualization: labels.style\n data:\n tif:\n blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/400pixkm_lufolabels/400pixkm_lufolabels.vrt\n offsite: \"#978E97\"\n resample: BILINEAR\n - name: luchtfotolabels_800pixkm\n visible: true\n title: Luchtfoto labels 800pixkm\n group: lufolabels\n abstract: \"De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.\"\n keywords:\n - bzk\n - luchtfotolabels\n datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28\n sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611\n minScale: 3001\n maxScale: 6001\n styles:\n - name: luchtfotolabels\n title: Luchtfotolabels\n visualization: labels.style\n data:\n tif:\n blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/800pixkm_lufolabels/800pixkm_lufolabels.vrt\n offsite: \"#978E97\"\n resample: BILINEAR\n - name: luchtfotolabels_1600pixkm\n visible: true\n title: Luchtfoto labels 1600pixkm\n group: lufolabels\n abstract: \"De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.\"\n keywords:\n - bzk\n - luchtfotolabels\n datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28\n sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611\n minScale: 1501\n maxScale: 3001\n styles:\n - name: luchtfotolabels\n title: Luchtfotolabels\n visualization: labels.style\n data:\n tif:\n blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/1600pixkm_lufolabels/1600pixkm_lufolabels.vrt\n offsite: \"#978E97\"\n resample: BILINEAR\n - name: luchtfotolabels_3200pixkm\n visible: true\n title: Luchtfoto labels 3200pixkm\n group: lufolabels\n abstract: \"De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.\"\n keywords:\n - bzk\n - luchtfotolabels\n datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28\n sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611\n maxScale: 1501\n styles:\n - name: luchtfotolabels\n title: Luchtfotolabels\n visualization: labels.style\n data:\n tif:\n blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/3200pixkm_lufolabels/3200pixkm_lufolabels.vrt\n offsite: \"#978E97\"\n resample: BILINEAR\n" - v2wms := &v2beta1.WMS{} - err := yaml.Unmarshal([]byte(v2wmsstring), v2wms) - assert.NoError(t, err) - var wms pdoknlv3.WMS - v2wms.ToV3(&wms) - - pdoknlv3.SetHost("https://service.pdok.nl") - - inputStruct, err := MapWMSToMapfileGeneratorInput(&wms, ownerInfo) - assert.NoError(t, err) expected := WMSInput{} - err = json.Unmarshal([]byte(WMSTifConfig), &expected) - assert.NoError(t, err) + err = json.Unmarshal(bytes, &expected) - assert.Equal(t, expected, inputStruct) + return expected, err } -func TestGetConfigForPostgisWMS(t *testing.T) { - ownerInfo := &smoothoperatorv1.OwnerInfo{ - Spec: smoothoperatorv1.OwnerInfoSpec{ - NamespaceTemplate: smoothoperatorutils.Pointer("http://{{prefix}}.geonovum.nl"), - }, +func readExpectedWFS(filename string) (WFSInput, error) { + bytes, err := os.ReadFile("test_data/expected/" + filename) + if err != nil { + return WFSInput{}, err } - v2wmsstring := "apiVersion: pdok.nl/v2beta1\nkind: WMS\nmetadata:\n name: v1-0 # name set with namePrefix in base/kustomization.yaml\n labels:\n dataset: terugmeldingen\n dataset-owner: brt\n service-version: v1_0\n service-type: wms\nspec:\n general:\n datasetOwner: brt\n dataset: terugmeldingen\n serviceVersion: v1_0\n kubernetes:\n resources:\n limits:\n ephemeralStorage: 20Mi\n options:\n automaticCasing: true\n disableWebserviceProxy: false\n includeIngress: true\n validateRequests: true\n service:\n inspire: false\n title: BRT Terugmeldingen WMS\n abstract: De BRT terugmeldingenservice bevat alle recente meldingen op BRT objecten waar twijfel over de juistheid bestaat. Zowel terugmeldingen op de TOP10 als meldingen die gemaakt zijn op de gegeneraliseerde kaartproducten (TOP25, TOP50, TOP100, TOP250) worden hierin geregistreerd. Daarnaast kan je de inhoud en status van de meldingen inzien. Ook een vermoedelijke fout geconstateerd? Doe een melding op https://verbeterdekaart.kadaster.nl\n keywords:\n - Basisregistratie Topografie\n - BRT\n - terugmeldingen\n - TOP10NL\n - TOP25\n - TOP50\n - TOP100\n - TOP250\n - in onderzoek register\n - verbeter de kaart\n - verbeterdekaart\n metadataIdentifier: fa069f74-9837-4d63-b2ac-b337b5de86b1\n authority:\n name: brt\n url: http://www.brt.nl\n dataEPSG: EPSG:28992\n extent: -7000 289000 300000 629000\n stylingAssets:\n configMapRefs:\n - name: includes\n keys:\n - terugmeldingen.symbol\n - terugmeldingen.style\n blobKeys:\n - ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/afgerond-blauw.png\n - ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/afgewezen-rood.png\n - ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/doorgestuurd-grijs.png\n - ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/geparkeerd-kobaltblauw.png\n - ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/goedgekeurd-groen.png\n - ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/nieuw-geel.png\n - ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/onderzoek-oranje.png\n layers:\n - name: brtterugmeldingen\n visible: true\n title: BRT Terugmeldingen\n abstract: Alle recente BRT terugmeldingen gedaan door BRT gebruikers.\n keywords:\n - brtterugmeldingen\n datasetMetadataIdentifier: 7a84c4de-4ec0-4202-a8d0-792fb7d39d1f\n sourceMetadataIdentifier: 07c7d650-cdb1-11dd-ad8b-0800200c9a60\n styles:\n - title: Terugmeldingen\n name: brtterugmeldingen:terugmeldingen\n visualization: terugmeldingen.style\n legendFile:\n blobKey: ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/terugmeldingen-legend.png\n data:\n postgis:\n table: brtterugmeldingen.brtterugmeldingen_v1\n geometryType: Point\n columns:\n - meldingsnummer_volledig\n - tijdstip_registratie\n - status\n - omschrijving\n - bronhoudercode\n - bronhoudernaam\n - tijdstip_statuswijziging\n - toelichting\n - objectid\n - objecttype\n - hoogte_vanaf_maaiveld\n" - v2wms := &v2beta1.WMS{} - err := yaml.Unmarshal([]byte(v2wmsstring), v2wms) - assert.NoError(t, err) - var wms pdoknlv3.WMS - v2wms.ToV3(&wms) - - pdoknlv3.SetHost("https://service.pdok.nl") - - inputStruct, err := MapWMSToMapfileGeneratorInput(&wms, ownerInfo) - assert.NoError(t, err) - expected := WMSInput{} - err = json.Unmarshal([]byte(WMSPostgisConfig), &expected) - assert.NoError(t, err) + expected := WFSInput{} + err = json.Unmarshal(bytes, &expected) - assert.Equal(t, expected, inputStruct) + return expected, err } diff --git a/internal/controller/mapfilegenerator/mapper.go b/internal/controller/mapfilegenerator/mapper.go index 739972f..bd1acbd 100644 --- a/internal/controller/mapfilegenerator/mapper.go +++ b/internal/controller/mapfilegenerator/mapper.go @@ -62,7 +62,7 @@ func MapWFSToMapfileGeneratorInput(wfs *pdoknlv3.WFS, ownerInfo *smoothoperatorv Extent: extent, NamespacePrefix: wfs.Spec.Service.Prefix, NamespaceURI: mapperutils.GetNamespaceURI(wfs.Spec.Service.Prefix, ownerInfo), - AutomaticCasing: wfs.Spec.Options.AutomaticCasing, + AutomaticCasing: wfs.Options().AutomaticCasing, DataEPSG: wfs.Spec.Service.DefaultCrs, // TODO Should this be a constant like in v2, or OtherCRS + default EPSGList: defaultEpsgList, // wfs.Spec.Service.OtherCrs, @@ -202,7 +202,7 @@ func MapWMSToMapfileGeneratorInput(wms *pdoknlv3.WMS, _ *smoothoperatorv1.OwnerI MetadataID: metadataID, DatasetOwner: &datasetOwner, AuthorityURL: &authorityURL, - AutomaticCasing: wms.Spec.Options.AutomaticCasing, + AutomaticCasing: wms.Options().AutomaticCasing, DataEPSG: service.DataEPSG, EPSGList: epsgs, }, diff --git a/internal/controller/mapfilegenerator/test_data/expected/wfs.json b/internal/controller/mapfilegenerator/test_data/expected/wfs.json new file mode 100644 index 0000000..65d102e --- /dev/null +++ b/internal/controller/mapfilegenerator/test_data/expected/wfs.json @@ -0,0 +1,72 @@ +{ + "service_title": "some Service title", + "service_abstract": "some \\\"Service\\\" abstract", + "service_keywords": "service-keyword-1,service-keyword-2,infoFeatureAccessService", + "service_extent": "0.0 2.0 1.0 3.0", + "service_wfs_maxfeatures": "1000", + "service_namespace_prefix": "prefix", + "service_namespace_uri": "http://prefix.geonovum.nl", + "service_onlineresource": "https://service.pdok.nl", + "service_path": "/datasetOwner/dataset/theme/wfs/v1_0", + "service_metadata_id": "metameta-meta-meta-meta-metametameta", + "automatic_casing": true, + "data_epsg": "EPSG:28992", + "service_debug_level": 0, + "epsg_list": [ + "EPSG:28992", + "EPSG:25831", + "EPSG:25832", + "EPSG:3034", + "EPSG:3035", + "EPSG:3857", + "EPSG:4258", + "EPSG:4326" + ], + "layers": [ + { + "name": "featuretype-1-name", + "title": "featuretype-1-title", + "abstract": "feature \\\"1\\\" abstract", + "keywords": "featuretype-1-keyword-1,featuretype-1-keyword-2", + "layer_extent": "0.0 2.0 1.0 3.0", + "dataset_metadata_id": "datadata-data-data-data-datadatadata", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "featuretype-1-column-1" + }, + { + "name": "featuretype-1-column-2" + } + ], + "geometry_type": "Point", + "gpkg_path": "/srv/data/gpkg/file-1.gpkg", + "tablename": "featuretype-1" + }, + { + "name": "featuretype-2-name", + "title": "featuretype-2-title", + "abstract": "feature \\\"2\\\" abstract", + "keywords": "featuretype-2-keyword-1,featuretype-2-keyword-2", + "layer_extent": "0.0 2.0 1.0 3.0", + "dataset_metadata_id": "datadata-data-data-data-datadatadata", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "featuretype-2-column-1", + "alias": "alias_featuretype-2-column-1" + }, + { + "name": "featuretype-2-column-2" + } + ], + "geometry_type": "MultiLine", + "tablename": "featuretype-2", + "postgis": true + } + ] +} \ No newline at end of file diff --git a/internal/controller/mapfilegenerator/test_data/expected/wms_group.json b/internal/controller/mapfilegenerator/test_data/expected/wms_group.json new file mode 100644 index 0000000..57a00d4 --- /dev/null +++ b/internal/controller/mapfilegenerator/test_data/expected/wms_group.json @@ -0,0 +1,468 @@ +{ + "authority_url": "https://www.hetwaterschapshuis.nl/", + "automatic_casing": true, + "data_epsg": "EPSG:28992", + "dataset_owner": "hwh", + "epsg_list": [ + "EPSG:28992", + "EPSG:25831", + "EPSG:25832", + "EPSG:3034", + "EPSG:3035", + "EPSG:3857", + "EPSG:4258", + "EPSG:4326", + "CRS:84" + ], + "group_layers": [ + { + "abstract": "Crossing line, crossing point, dam or weir, sluice, embankment, lock.", + "name": "HY.PhysicalWaters.ManMadeObject", + "style_name": "HY.PhysicalWaters.ManMadeObject.Default", + "style_title": "Man-made objects default style", + "title": "Man-made Object" + } + ], + "layers": [ + { + "abstract": "Watercourse", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "gml_id" + }, + { + "name": "beginlifespanversion" + }, + { + "name": "condition" + }, + { + "name": "delineationknown" + }, + { + "name": "endlifespanversion" + }, + { + "name": "length" + }, + { + "name": "level" + }, + { + "name": "localid" + }, + { + "name": "localtype" + }, + { + "name": "name" + }, + { + "name": "namespace" + }, + { + "name": "origin" + }, + { + "name": "persistence" + }, + { + "name": "streamorder" + }, + { + "name": "tidal" + }, + { + "name": "widthrange" + } + ], + "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "geometry_type": "MultiLineString", + "gpkg_path": "/srv/data/gpkg/Waterbody.gpkg", + "keywords": "Hydroobject,Waterbody,Watercourse,River,Stream,Lake,Reservoir", + "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", + "maxscale": "50000", + "minscale": "1", + "name": "HY.PhysicalWaters.Waterbodies", + "styles": [ + { + "path": "/styling/watercourse.style", + "title": "Water bodies default style" + } + ], + "tablename": "watercourse", + "title": "Waterbody" + }, + { + "abstract": "Drainage basin", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "gml_id" + }, + { + "name": "area" + }, + { + "name": "beginlifespanversion" + }, + { + "name": "endlifespanversion" + }, + { + "name": "localid" + }, + { + "name": "name" + }, + { + "name": "namespace" + }, + { + "name": "order" + }, + { + "name": "orderscheme" + }, + { + "name": "origin" + }, + { + "name": "outlet" + }, + { + "name": "scope" + } + ], + "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "geometry_type": "MultiPolygon", + "gpkg_path": "/srv/data/gpkg/Catchment.gpkg", + "keywords": "AfvoergebiedAanvoergebied,Catchment,Basin,Catchment Area,Drainage basin", + "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", + "maxscale": "50000", + "minscale": "1", + "name": "HY.PhysicalWaters.Catchments", + "styles": [ + { + "path": "/styling/drainagebasin.style", + "title": "Drainage Basin default style" + } + ], + "tablename": "drainagebasin", + "title": "Catchment" + }, + { + "abstract": "Crossing line, crossing point, dam or weir, sluice, embankment, lock.", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "gml_id" + }, + { + "name": "beginlifespanversion" + }, + { + "name": "condition" + }, + { + "name": "endlifespanversion" + }, + { + "name": "localid" + }, + { + "name": "name" + }, + { + "name": "namespace" + } + ], + "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "geometry_type": "Point", + "gpkg_path": "/srv/data/gpkg/Man-madeObject.gpkg", + "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", + "minscale": "1", + "name": "HY.PhysicalWaters.ManMadeObject.lock", + "styles": [ + { + "path": "/styling/lock.style", + "title": "Lock" + } + ], + "tablename": "lock", + "title": "Man-made Object" + }, + { + "abstract": "Crossing line, crossing point, dam or weir, sluice, embankment, lock.", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "gml_id" + }, + { + "name": "beginlifespanversion" + }, + { + "name": "condition" + }, + { + "name": "endlifespanversion" + }, + { + "name": "localid" + }, + { + "name": "name" + }, + { + "name": "namespace" + }, + { + "name": "type" + } + ], + "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "geometry_type": "Point", + "gpkg_path": "/srv/data/gpkg/Man-madeObject.gpkg", + "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", + "minscale": "1", + "name": "HY.PhysicalWaters.ManMadeObject.crossingpoint", + "styles": [ + { + "path": "/styling/crossingpoint.style", + "title": "Crossing Point" + } + ], + "tablename": "crossingpoint", + "title": "Man-made Object" + }, + { + "abstract": "Crossing line, crossing point, dam or weir, sluice, embankment, lock.", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "gml_id" + }, + { + "name": "beginlifespanversion" + }, + { + "name": "condition" + }, + { + "name": "endlifespanversion" + }, + { + "name": "localid" + }, + { + "name": "name" + }, + { + "name": "namespace" + } + ], + "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "geometry_type": "Point", + "gpkg_path": "/srv/data/gpkg/Man-madeObject.gpkg", + "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", + "minscale": "1", + "name": "HY.PhysicalWaters.ManMadeObject.sluice", + "styles": [ + { + "path": "/styling/sluice.style", + "title": "Sluice" + } + ], + "tablename": "sluice", + "title": "Man-made Object" + }, + { + "abstract": "Crossing line, crossing point, dam or weir, sluice, embankment, lock.", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "gml_id" + }, + { + "name": "beginlifespanversion" + }, + { + "name": "condition" + }, + { + "name": "endlifespanversion" + }, + { + "name": "localid" + }, + { + "name": "name" + }, + { + "name": "namespace" + } + ], + "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "geometry_type": "MultiLineString", + "gpkg_path": "/srv/data/gpkg/Man-madeObject.gpkg", + "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", + "minscale": "1", + "name": "HY.PhysicalWaters.ManMadeObject.embankment", + "styles": [ + { + "path": "/styling/embankment.style", + "title": "Embankment" + } + ], + "tablename": "embankment", + "title": "Man-made Object" + }, + { + "abstract": "Crossing line, crossing point, dam or weir, sluice, embankment, lock.", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "gml_id" + }, + { + "name": "beginlifespanversion" + }, + { + "name": "condition" + }, + { + "name": "endlifespanversion" + }, + { + "name": "localid" + }, + { + "name": "name" + }, + { + "name": "namespace" + }, + { + "name": "type" + } + ], + "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "geometry_type": "MultiLineString", + "gpkg_path": "/srv/data/gpkg/Man-madeObject.gpkg", + "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", + "minscale": "1", + "name": "HY.PhysicalWaters.ManMadeObject.crossingline", + "styles": [ + { + "path": "/styling/crossingline.style", + "title": "Crossing Line" + } + ], + "tablename": "crossingline", + "title": "Man-made Object" + }, + { + "abstract": "Crossing line, crossing point, dam or weir, sluice, embankment, lock.", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "gml_id" + }, + { + "name": "beginlifespanversion" + }, + { + "name": "condition" + }, + { + "name": "endlifespanversion" + }, + { + "name": "localid" + }, + { + "name": "name" + }, + { + "name": "namespace" + } + ], + "dataset_metadata_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "dataset_source_id": "07575774-57a1-4419-bab4-6c88fdeb02b2", + "geometry_type": "Point", + "gpkg_path": "/srv/data/gpkg/Man-madeObject.gpkg", + "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", + "minscale": "1", + "name": "HY.PhysicalWaters.ManMadeObject.damorweir", + "styles": [ + { + "path": "/styling/damorweir.style", + "title": "Dam or Weir" + } + ], + "tablename": "damorweir", + "title": "Man-made Object" + } + ], + "maxSize": "4000", + "outputformat_jpg": "jpg", + "outputformat_png8": "png", + "service_abstract": "Deze dataset is gebaseerd op (niet geharmoniseerde) data van alle waterschappen in Nederland conform INSPIRE. De dataset bevat de volgende INSPIRE objecten: CrossingLine, CrossingPoint, DamOrWeir, DrainageBasin, Embankment, Lock, Sluice, Watercourse.", + "service_accessconstraints": "https://creativecommons.org/publicdomain/zero/1.0/deed.nl", + "service_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", + "service_keywords": "Aquaduct,Brug,Duikersifonhevel,Stuw,Vastedam,AfvoerAanvoergebied,Waterkering,Sluis,HydroObject,HVD,Aardobservatie en milieu,infoMapAccessService", + "service_metadata_id": "871a58f8-c9f1-41a4-be37-0f059e0f886f", + "service_namespace_prefix": "hydrografie", + "service_namespace_uri": "http://hydrografie.geonovum.nl", + "service_onlineresource": "https://service.pdok.nl", + "service_path": "/hwh/hydrografie/wms/v2_0", + "service_title": "Waterschappen Hydrografie (INSPIRE geharmoniseerd) WMS", + "symbols": [ + "/styling/bridge.symbol", + "/styling/x.symbol" + ], + "templates": "/srv/data/config/templates" +} \ No newline at end of file diff --git a/internal/controller/mapfilegenerator/test_data/expected/wms_group_and_toplayer.json b/internal/controller/mapfilegenerator/test_data/expected/wms_group_and_toplayer.json new file mode 100644 index 0000000..8457e3f --- /dev/null +++ b/internal/controller/mapfilegenerator/test_data/expected/wms_group_and_toplayer.json @@ -0,0 +1,616 @@ +{ + "authority_url": "https://www.kadaster.nl", + "automatic_casing": true, + "data_epsg": "EPSG:28992", + "dataset_owner": "kadaster", + "defresolution": "91", + "epsg_list": [ + "EPSG:28992", + "EPSG:25831", + "EPSG:25832", + "EPSG:3034", + "EPSG:3035", + "EPSG:3857", + "EPSG:4258", + "EPSG:4326", + "CRS:84" + ], + "fonts": "/srv/data/config/fonts", + "group_layers": [ + { + "abstract": "De laag Bebouwing is een selectie op panden van de BGT.", + "name": "Bebouwing", + "style_name": "standaard:bebouwing", + "style_title": "Standaardvisualisatie Bebouwing", + "title": "Bebouwing" + }, + { + "abstract": "Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal geïdentificeerd is en met kadastrale grenzen begrensd is.", + "name": "Perceel", + "style_name": "standaard:perceel", + "style_title": "Standaardvisualisatie Perceel", + "title": "Perceel" + } + ], + "layers": [ + { + "abstract": "De laag Bebouwing is een selectie op panden van de BGT.", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "object_begin_tijd" + }, + { + "alias": "LV-publicatiedatum", + "name": "lv_publicatiedatum" + }, + { + "name": "relatieve_hoogteligging" + }, + { + "name": "in_onderzoek" + }, + { + "name": "tijdstip_registratie" + }, + { + "name": "identificatie_namespace" + }, + { + "alias": "identificatieLokaalID", + "name": "identificatie_lokaal_id" + }, + { + "name": "bronhouder" + }, + { + "alias": "bgt-status", + "name": "bgt_status" + }, + { + "alias": "plus-status", + "name": "plus_status" + }, + { + "alias": "identificatieBAGPND", + "name": "identificatie_bag_pnd" + } + ], + "dataset_metadata_id": "a29917b9-3426-4041-a11b-69bcb2256904", + "dataset_source_id": "06b6c650-cdb1-11dd-ad8b-0800200c9a64", + "geometry_type": "Polygon", + "gpkg_path": "/srv/data/gpkg/pand.gpkg", + "group_name": "Bebouwing", + "keywords": "Bebouwing", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "6001", + "minscale": "50", + "name": "Bebouwingvlak", + "styles": [ + { + "path": "/styling/bebouwing.style", + "title": "Standaardvisualisatie" + }, + { + "path": "/styling/bebouwing_kwaliteit.style", + "title": "Kwaliteitsvisualisatie" + }, + { + "path": "/styling/bebouwing_print.style", + "title": "Printvisualisatie" + }, + { + "path": "/styling/bebouwing.group.style", + "title": "Standaardvisualisatie Bebouwing" + }, + { + "path": "/styling/bebouwing_kwaliteit.group.style", + "title": "Kwaliteitsvisualisatie Bebouwing" + }, + { + "path": "/styling/bebouwing_print.group.style", + "title": "Printvisualisatie Bebouwing" + } + ], + "tablename": "pand", + "title": "Bebouwingvlak" + }, + { + "abstract": "De laag Bebouwing is een selectie op panden van de BGT.", + "columns": [ + { + "name": "fuuid" + }, + { + "alias": "bebouwingID", + "name": "bebouwing_id" + }, + { + "name": "hoek" + }, + { + "name": "tekst" + }, + { + "alias": "identificatie_BAGVBOLaagsteHuisnummer", + "name": "bag_vbo_laagste_huisnummer" + }, + { + "alias": "identificatie_BAGVBOHoogsteHuisnummer", + "name": "bag_vbo_hoogste_huisnummer" + }, + { + "name": "hoek" + } + ], + "dataset_metadata_id": "a29917b9-3426-4041-a11b-69bcb2256904", + "dataset_source_id": "06b6c650-cdb1-11dd-ad8b-0800200c9a64", + "geometry_type": "Point", + "gpkg_path": "/srv/data/gpkg/pand_nummeraanduiding.gpkg", + "group_name": "Bebouwing", + "keywords": "Nummeraanduidingreeks", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "2001", + "minscale": "50", + "name": "Nummeraanduidingreeks", + "styles": [ + { + "path": "/styling/nummeraanduidingreeks.style", + "title": "Standaardvisualisatie" + }, + { + "path": "/styling/nummeraanduidingreeks_kwaliteit.style", + "title": "Kwaliteitsvisualisatie" + }, + { + "path": "/styling/nummeraanduidingreeks_print.style", + "title": "Printvisualisatie" + }, + { + "path": "/styling/nummeraanduidingreeks.group.style", + "title": "Standaardvisualisatie Bebouwing" + }, + { + "path": "/styling/nummeraanduidingreeks_kwaliteit.group.style", + "title": "Kwaliteitsvisualisatie Bebouwing" + }, + { + "path": "/styling/nummeraanduidingreeks_print.group.style", + "title": "Printvisualisatie Bebouwing" + } + ], + "tablename": "pand_nummeraanduiding", + "title": "Nummeraanduidingreeks" + }, + { + "abstract": "De laag Openbareruimtenaam is een selectie op de openbare ruimte labels van de BGT met een bgt-status \"bestaand\" die een classificatie (openbareruimtetype) Weg en Water hebben.", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "object_begin_tijd" + }, + { + "alias": "LV-publicatiedatum", + "name": "lv_publicatiedatum" + }, + { + "name": "relatieve_hoogteligging" + }, + { + "name": "in_onderzoek" + }, + { + "name": "tijdstip_registratie" + }, + { + "name": "identificatie_namespace" + }, + { + "alias": "identificatieLokaalID", + "name": "identificatie_lokaal_id" + }, + { + "name": "bronhouder" + }, + { + "alias": "bgt-status", + "name": "bgt_status" + }, + { + "alias": "plus-status", + "name": "plus_status" + }, + { + "alias": "identificatieBAGOPR", + "name": "identificatie_bag_opr" + }, + { + "name": "tekst" + }, + { + "name": "hoek" + }, + { + "name": "openbare_ruimte_type" + } + ], + "dataset_metadata_id": "a29917b9-3426-4041-a11b-69bcb2256904", + "dataset_source_id": "06b6c650-cdb1-11dd-ad8b-0800200c9a64", + "geometry_type": "Point", + "gpkg_path": "/srv/data/gpkg/openbareruimtelabel.gpkg", + "keywords": "Openbare ruimte naam", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "2001", + "minscale": "50", + "name": "OpenbareRuimteNaam", + "styles": [ + { + "path": "/styling/openbareruimtenaam.style", + "title": "Standaardvisualisatie" + }, + { + "path": "/styling/openbareruimtenaam_kwaliteit.style", + "title": "Kwaliteitsvisualisatie" + }, + { + "path": "/styling/openbareruimtenaam_print.style", + "title": "Printvisualisatie" + }, + { + "path": "/styling/openbareruimtenaam.group.style", + "title": "Standaardvisualisatie OpenbareRuimteNaam" + }, + { + "path": "/styling/openbareruimtenaam_kwaliteit.group.style", + "title": "Kwaliteitsvisualisatie OpenbareRuimteNaam" + }, + { + "path": "/styling/openbareruimtenaam_print.group.style", + "title": "Printvisualisatie OpenbareRuimteNaam" + } + ], + "tablename": "openbareruimtelabel", + "title": "OpenbareRuimteNaam" + }, + { + "abstract": "Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal geïdentificeerd is en met kadastrale grenzen begrensd is.", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "identificatie_namespace" + }, + { + "alias": "identificatieLokaalID", + "name": "identificatie_lokaal_id" + }, + { + "name": "begin_geldigheid" + }, + { + "name": "tijdstip_registratie" + }, + { + "name": "volgnummer" + }, + { + "name": "status_historie_code" + }, + { + "name": "status_historie_waarde" + }, + { + "name": "kadastrale_gemeente_code" + }, + { + "name": "kadastrale_gemeente_waarde" + }, + { + "name": "sectie" + }, + { + "alias": "AKRKadastraleGemeenteCodeCode", + "name": "akr_kadastrale_gemeente_code_code" + }, + { + "alias": "AKRKadastraleGemeenteCodeWaarde", + "name": "akr_kadastrale_gemeente_code_waarde" + }, + { + "name": "kadastrale_grootte_waarde" + }, + { + "name": "soort_grootte_code" + }, + { + "name": "soort_grootte_waarde" + }, + { + "name": "perceelnummer" + }, + { + "name": "perceelnummer_rotatie" + }, + { + "name": "perceelnummer_verschuiving_delta_x" + }, + { + "name": "perceelnummer_verschuiving_delta_y" + }, + { + "name": "perceelnummer_plaatscoordinaat_x" + }, + { + "name": "perceelnummer_plaatscoordinaat_y" + } + ], + "dataset_metadata_id": "a29917b9-3426-4041-a11b-69bcb2256904", + "dataset_source_id": "06b6c650-cdb1-11dd-ad8b-0800200c9a64", + "geometry_type": "Polygon", + "gpkg_path": "/srv/data/gpkg/perceel.gpkg", + "group_name": "Perceel", + "keywords": "Kadastrale percelen", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "6001", + "minscale": "50", + "name": "Perceelvlak", + "styles": [ + { + "path": "/styling/perceelvlak.style", + "title": "Standaardvisualisatie" + }, + { + "path": "/styling/perceelvlak_kwaliteit.style", + "title": "Kwaliteitsvisualisatie" + }, + { + "path": "/styling/perceelvlak_print.style", + "title": "Printvisualisatie" + }, + { + "path": "/styling/perceelvlak.group.style", + "title": "Standaardvisualisatie Perceel" + }, + { + "path": "/styling/perceelvlak_kwaliteit.group.style", + "title": "Kwaliteitsvisualisatie Perceel" + }, + { + "path": "/styling/perceelvlak_print.group.style", + "title": "Printvisualisatie Perceel" + } + ], + "tablename": "perceel", + "title": "Perceelvlak" + }, + { + "abstract": "Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal geïdentificeerd is en met kadastrale grenzen begrensd is.", + "columns": [ + { + "name": "fuuid" + }, + { + "alias": "perceelID", + "name": "perceel_id" + }, + { + "name": "perceelnummer" + }, + { + "name": "rotatie" + }, + { + "name": "verschuiving_delta_x" + }, + { + "name": "verschuiving_delta_y" + } + ], + "dataset_metadata_id": "a29917b9-3426-4041-a11b-69bcb2256904", + "dataset_source_id": "06b6c650-cdb1-11dd-ad8b-0800200c9a64", + "geometry_type": "Point", + "gpkg_path": "/srv/data/gpkg/perceel_label.gpkg", + "group_name": "Perceel", + "keywords": "Kadastrale percelen", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "6001", + "minscale": "50", + "name": "Label", + "styles": [ + { + "path": "/styling/label.style", + "title": "Standaardvisualisatie" + }, + { + "path": "/styling/label.group.style", + "title": "Standaardvisualisatie Perceel" + }, + { + "path": "/styling/label_kwaliteit.style", + "title": "Kwaliteitsvisualisatie" + }, + { + "path": "/styling/label_kwaliteit.group.style", + "title": "Kwaliteitsvisualisatie Perceel" + }, + { + "path": "/styling/label_print.style", + "title": "Printvisualisatie" + }, + { + "path": "/styling/label_print.group.style", + "title": "Printvisualisatie Perceel" + } + ], + "tablename": "perceel_label", + "title": "Label" + }, + { + "abstract": "Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal geïdentificeerd is en met kadastrale grenzen begrensd is.", + "columns": [ + { + "name": "fuuid" + }, + { + "alias": "perceelID", + "name": "perceel_id" + } + ], + "dataset_metadata_id": "a29917b9-3426-4041-a11b-69bcb2256904", + "dataset_source_id": "06b6c650-cdb1-11dd-ad8b-0800200c9a64", + "geometry_type": "LineString", + "gpkg_path": "/srv/data/gpkg/perceel_bijpijling.gpkg", + "group_name": "Perceel", + "keywords": "Kadastrale percelen", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "6001", + "minscale": "50", + "name": "Bijpijling", + "styles": [ + { + "path": "/styling/bijpijling.style", + "title": "Standaardvisualisatie" + }, + { + "path": "/styling/bijpijling_kwaliteit.style", + "title": "Kwaliteitsvisualisatie" + }, + { + "path": "/styling/bijpijling_print.style", + "title": "Printvisualisatie" + }, + { + "path": "/styling/bijpijling.group.style", + "title": "Standaardvisualisatie Perceel" + }, + { + "path": "/styling/bijpijling_kwaliteit.group.style", + "title": "Kwaliteitsvisualisatie Perceel" + }, + { + "path": "/styling/bijpijling_print.group.style", + "title": "Printvisualisatie Perceel" + } + ], + "tablename": "perceel_bijpijling", + "title": "Bijpijling" + }, + { + "abstract": "Een Kadastrale Grens is de weergave van een grens op de kadastrale kaart die door de dienst van het Kadaster tussen percelen (voorlopig) vastgesteld wordt, op basis van inlichtingen van belanghebbenden en met gebruikmaking van de aan de kadastrale kaart ten grondslag liggende bescheiden die in elk geval de landmeetkundige gegevens bevatten van hetgeen op die kaart wordt weergegeven.", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "begin_geldigheid" + }, + { + "name": "tijdstip_registratie" + }, + { + "name": "volgnummer" + }, + { + "name": "status_historie_code" + }, + { + "name": "status_historie_waarde" + }, + { + "name": "identificatie_namespace" + }, + { + "alias": "identificatieLokaalID", + "name": "identificatie_lokaal_id" + }, + { + "name": "type_grens_code" + }, + { + "name": "type_grens_waarde" + }, + { + "alias": "ClassificatieKwaliteitCode", + "name": "classificatie_kwaliteit_code" + }, + { + "alias": "ClassificatieKwaliteitWaarde", + "name": "classificatie_kwaliteit_waarde" + }, + { + "name": "perceel_links_identificatie_namespace" + }, + { + "alias": "perceelLinksIdentificatieLokaalID", + "name": "perceel_links_identificatie_lokaal_id" + }, + { + "name": "perceel_rechts_identificatie_namespace" + }, + { + "alias": "perceelRechtsIdentificatieLokaalID", + "name": "perceel_rechts_identificatie_lokaal_id" + } + ], + "dataset_metadata_id": "a29917b9-3426-4041-a11b-69bcb2256904", + "dataset_source_id": "06b6c650-cdb1-11dd-ad8b-0800200c9a64", + "geometry_type": "LineString", + "gpkg_path": "/srv/data/gpkg/kadastrale_grens.gpkg", + "keywords": "Grens,Kadastrale grenzen", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "6001", + "minscale": "50", + "name": "KadastraleGrens", + "styles": [ + { + "path": "/styling/kadastralegrens.style", + "title": "Standaardvisualisatie" + }, + { + "path": "/styling/kadastralegrens_kwaliteit.style", + "title": "Kwaliteitsvisualisatie" + }, + { + "path": "/styling/kadastralegrens_print.style", + "title": "Printvisualisatie" + }, + { + "path": "/styling/kadastralegrens.group.style", + "title": "Standaardvisualisatie KadastraleGrens" + }, + { + "path": "/styling/kadastralegrens_kwaliteit.group.style", + "title": "Kwaliteitsvisualisatie KadastraleGrens" + }, + { + "path": "/styling/kadastralegrens_print.group.style", + "title": "Printvisualisatie KadastraleGrens" + } + ], + "tablename": "kadastrale_grens", + "title": "KadastraleGrens" + } + ], + "maxSize": "10000", + "outputformat_jpg": "jpg", + "outputformat_png8": "png", + "resolution": "91", + "service_abstract": "Overzicht van de ligging van de kadastrale percelen in Nederland. Fungeert als schakel tussen terrein en registratie, vervult voor externe gebruiker vaak een referentiefunctie, een ondergrond ten opzichte waarvan de gebruiker eigen informatie kan vastleggen en presenteren.", + "service_accessconstraints": "https://creativecommons.org/publicdomain/zero/1.0/deed.nl", + "service_extent": "-25000 250000 280000 860000", + "service_keywords": "Kadaster,Kadastrale percelen,Kadastrale grens,Kadastrale kaart,Bebouwing,Nummeraanduidingreeks,Openbare ruimte naam,Perceel,Grens,Kwaliteit,Kwaliteitslabels,HVD,Geospatiale data", + "service_metadata_id": "97cf6a64-9cfc-4ce6-9741-2db44fd27fca", + "service_namespace_prefix": "kadastralekaart", + "service_namespace_uri": "http://kadastralekaart.geonovum.nl", + "service_onlineresource": "https://service.pdok.nl", + "service_path": "/kadaster/kadastralekaart/wms/v5_0", + "service_title": "Kadastrale Kaart (WMS)", + "symbols": [], + "templates": "/srv/data/config/templates", + "top_level_name": "Kadastralekaart" +} \ No newline at end of file diff --git a/internal/controller/mapfilegenerator/test_data/expected/wms_groupless.json b/internal/controller/mapfilegenerator/test_data/expected/wms_groupless.json new file mode 100644 index 0000000..1e92343 --- /dev/null +++ b/internal/controller/mapfilegenerator/test_data/expected/wms_groupless.json @@ -0,0 +1,283 @@ +{ + "authority_url": "https://www.rijkswaterstaat.nl", + "automatic_casing": true, + "data_epsg": "EPSG:28992", + "dataset_owner": "rws", + "epsg_list": [ + "EPSG:28992", + "EPSG:25831", + "EPSG:25832", + "EPSG:3034", + "EPSG:3035", + "EPSG:3857", + "EPSG:4258", + "EPSG:4326", + "CRS:84" + ], + "fonts": "/srv/data/config/fonts", + "group_layers": [], + "layers": [ + { + "abstract": "Deze laag bevat de wegvakken uit het Nationaal Wegen bestand (NWB) en geeft gedetailleerde informatie per wegvak zoals straatnaam, wegnummer, routenummer, wegbeheerder, huisnummers, enz. weer.", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "objectid" + }, + { + "name": "wvk_id" + }, + { + "name": "wvk_begdat" + }, + { + "name": "jte_id_beg" + }, + { + "name": "jte_id_end" + }, + { + "name": "wegbehsrt" + }, + { + "name": "wegnummer" + }, + { + "name": "wegdeelltr" + }, + { + "name": "hecto_lttr" + }, + { + "name": "bst_code" + }, + { + "name": "rpe_code" + }, + { + "name": "admrichtng" + }, + { + "name": "rijrichtng" + }, + { + "name": "stt_naam" + }, + { + "name": "stt_bron" + }, + { + "name": "wpsnaam" + }, + { + "name": "gme_id" + }, + { + "name": "gme_naam" + }, + { + "name": "hnrstrlnks" + }, + { + "name": "hnrstrrhts" + }, + { + "name": "e_hnr_lnks" + }, + { + "name": "e_hnr_rhts" + }, + { + "name": "l_hnr_lnks" + }, + { + "name": "l_hnr_rhts" + }, + { + "name": "begafstand" + }, + { + "name": "endafstand" + }, + { + "name": "beginkm" + }, + { + "name": "eindkm" + }, + { + "name": "pos_tv_wol" + }, + { + "name": "wegbehcode" + }, + { + "name": "wegbehnaam" + }, + { + "name": "distrcode" + }, + { + "name": "distrnaam" + }, + { + "name": "dienstcode" + }, + { + "name": "dienstnaam" + }, + { + "name": "wegtype" + }, + { + "name": "wgtype_oms" + }, + { + "name": "routeltr" + }, + { + "name": "routenr" + }, + { + "name": "routeltr2" + }, + { + "name": "routenr2" + }, + { + "name": "routeltr3" + }, + { + "name": "routenr3" + }, + { + "name": "routeltr4" + }, + { + "name": "routenr4" + }, + { + "name": "wegnr_aw" + }, + { + "name": "wegnr_hmp" + }, + { + "name": "geobron_id" + }, + { + "name": "geobron_nm" + }, + { + "name": "bronjaar" + }, + { + "name": "openlr" + }, + { + "name": "bag_orl" + }, + { + "name": "frc" + }, + { + "name": "fow" + }, + { + "name": "alt_naam" + }, + { + "name": "alt_nr" + }, + { + "name": "rel_hoogte" + }, + { + "name": "st_lengthshape" + } + ], + "dataset_metadata_id": "a9b7026e-0a81-4813-93bd-ba49e6f28502", + "dataset_source_id": "8f0497f0-dbd7-4bee-b85a-5fdec484a7ff", + "geometry_type": "MultiLineString", + "gpkg_path": "/srv/data/gpkg/nwb_wegen.gpkg", + "keywords": "Vervoersnetwerken,Menselijke gezondheid en veiligheid,Geluidsbelasting hoofdwegen (Richtlijn Omgevingslawaai),Nationaal,Voertuigen,Verkeer,Wegvakken", + "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", + "maxscale": "50000", + "minscale": "1", + "name": "wegvakken", + "styles": [ + { + "path": "/styling/wegvakken.style", + "title": "NWB - Wegvakken" + } + ], + "tablename": "wegvakken", + "title": "Wegvakken" + }, + { + "abstract": "Deze laag bevat de hectopunten uit het Nationaal Wegen Bestand (NWB) en geeft gedetailleerde informatie per hectopunt zoals hectometrering, afstand, zijde en hectoletter weer.", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "objectid" + }, + { + "name": "hectomtrng" + }, + { + "name": "afstand" + }, + { + "name": "wvk_id" + }, + { + "name": "wvk_begdat" + }, + { + "name": "zijde" + }, + { + "name": "hecto_lttr" + } + ], + "dataset_metadata_id": "a9b7026e-0a81-4813-93bd-ba49e6f28502", + "dataset_source_id": "8f0497f0-dbd7-4bee-b85a-5fdec484a7ff", + "geometry_type": "MultiPoint", + "gpkg_path": "/srv/data/gpkg/nwb_wegen.gpkg", + "keywords": "Vervoersnetwerken,Menselijke gezondheid en veiligheid,Geluidsbelasting hoofdwegen (Richtlijn Omgevingslawaai),Nationaal,Voertuigen,Verkeer,Hectometerpunten", + "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", + "maxscale": "50000", + "minscale": "1", + "name": "hectopunten", + "styles": [ + { + "path": "/styling/hectopunten.style", + "title": "NWB - Hectopunten" + } + ], + "tablename": "hectopunten", + "title": "Hectopunten" + } + ], + "maxSize": "4000", + "outputformat_jpg": "jpg", + "outputformat_png8": "png", + "service_abstract": "Dit is de web map service van het Nationaal Wegen Bestand (NWB) - wegen. Deze dataset bevat alleen de wegvakken en hectometerpunten. Het Nationaal Wegen Bestand - Wegen is een digitaal geografisch bestand van alle wegen in Nederland. Opgenomen zijn alle wegen die worden beheerd door wegbeheerders als het Rijk, provincies, gemeenten en waterschappen, echter alleen voor zover deze zijn voorzien van een straatnaam of nummer.", + "service_accessconstraints": "https://creativecommons.org/publicdomain/zero/1.0/deed.nl", + "service_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", + "service_keywords": "Vervoersnetwerken,Menselijke gezondheid en veiligheid,Geluidsbelasting hoofdwegen (Richtlijn Omgevingslawaai),Nationaal,Voertuigen,Verkeer,Wegvakken,Hectometerpunten,HVD,Mobiliteit,infoMapAccessService", + "service_metadata_id": "f2437a92-ddd3-4777-a1bc-fdf4b4a7fcb8", + "service_namespace_prefix": "nwbwegen", + "service_namespace_uri": "http://nwbwegen.geonovum.nl", + "service_onlineresource": "https://service.pdok.nl", + "service_path": "/rws/nwbwegen/wms/v1_0", + "service_title": "NWB - Wegen WMS", + "symbols": [ + "/styling/nwb_wegen_hectopunten.symbol" + ], + "templates": "/srv/data/config/templates" +} \ No newline at end of file diff --git a/internal/controller/mapfilegenerator/test_data/expected/wms_postgis.json b/internal/controller/mapfilegenerator/test_data/expected/wms_postgis.json new file mode 100644 index 0000000..4496e19 --- /dev/null +++ b/internal/controller/mapfilegenerator/test_data/expected/wms_postgis.json @@ -0,0 +1,93 @@ +{ + "authority_url": "http://www.brt.nl", + "automatic_casing": true, + "data_epsg": "EPSG:28992", + "dataset_owner": "brt", + "epsg_list": [ + "EPSG:28992", + "EPSG:25831", + "EPSG:25832", + "EPSG:3034", + "EPSG:3035", + "EPSG:3857", + "EPSG:4258", + "EPSG:4326", + "CRS:84" + ], + "group_layers": [], + "layers": [ + { + "abstract": "Alle recente BRT terugmeldingen gedaan door BRT gebruikers.", + "columns": [ + { + "name": "fuuid" + }, + { + "name": "meldingsnummer_volledig" + }, + { + "name": "tijdstip_registratie" + }, + { + "name": "status" + }, + { + "name": "omschrijving" + }, + { + "name": "bronhoudercode" + }, + { + "name": "bronhoudernaam" + }, + { + "name": "tijdstip_statuswijziging" + }, + { + "name": "toelichting" + }, + { + "name": "objectid" + }, + { + "name": "objecttype" + }, + { + "name": "hoogte_vanaf_maaiveld" + } + ], + "dataset_metadata_id": "7a84c4de-4ec0-4202-a8d0-792fb7d39d1f", + "dataset_source_id": "07c7d650-cdb1-11dd-ad8b-0800200c9a60", + "geometry_type": "Point", + "keywords": "brtterugmeldingen", + "layer_extent": "-7000 289000 300000 629000", + "name": "brtterugmeldingen", + "postgis": true, + "styles": [ + { + "path": "/styling/terugmeldingen.style", + "title": "Terugmeldingen" + } + ], + "tablename": "brtterugmeldingen.brtterugmeldingen_v1", + "title": "BRT Terugmeldingen" + } + ], + "maxSize": "4000", + "outputformat_jpg": "jpg", + "outputformat_png8": "png", + "service_abstract": "De BRT terugmeldingenservice bevat alle recente meldingen op BRT objecten waar twijfel over de juistheid bestaat. Zowel terugmeldingen op de TOP10 als meldingen die gemaakt zijn op de gegeneraliseerde kaartproducten (TOP25, TOP50, TOP100, TOP250) worden hierin geregistreerd. Daarnaast kan je de inhoud en status van de meldingen inzien. Ook een vermoedelijke fout geconstateerd? Doe een melding op https://verbeterdekaart.kadaster.nl", + "service_accessconstraints": "https://creativecommons.org/publicdomain/zero/1.0/deed.nl", + "service_extent": "-7000 289000 300000 629000", + "service_keywords": "Basisregistratie Topografie,BRT,terugmeldingen,TOP10NL,TOP25,TOP50,TOP100,TOP250,in onderzoek register,verbeter de kaart,verbeterdekaart", + "service_metadata_id": "fa069f74-9837-4d63-b2ac-b337b5de86b1", + "service_namespace_prefix": "terugmeldingen", + "service_namespace_uri": "http://terugmeldingen.geonovum.nl", + "service_onlineresource": "https://service.pdok.nl", + "service_path": "/brt/terugmeldingen/wms/v1_0", + "service_title": "BRT Terugmeldingen WMS", + "symbols": [ + "/styling/terugmeldingen.symbol" + ], + "templates": "/srv/data/config/templates" +} \ No newline at end of file diff --git a/internal/controller/mapfilegenerator/test_data/expected/wms_tif.json b/internal/controller/mapfilegenerator/test_data/expected/wms_tif.json new file mode 100644 index 0000000..a1eee55 --- /dev/null +++ b/internal/controller/mapfilegenerator/test_data/expected/wms_tif.json @@ -0,0 +1,295 @@ +{ + "authority_url": "http://www.kadaster.nl", + "automatic_casing": false, + "data_epsg": "EPSG:28992", + "dataset_owner": "kadaster", + "epsg_list": [ + "EPSG:28992", + "EPSG:25831", + "EPSG:25832", + "EPSG:3034", + "EPSG:3035", + "EPSG:3857", + "EPSG:4258", + "EPSG:4326", + "CRS:84" + ], + "group_layers": [ + { + "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", + "name": "lufolabels", + "style_name": "luchtfotolabels", + "style_title": "Luchtfotolabels", + "title": "Luchtfoto labels" + } + ], + "layers": [ + { + "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", + "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", + "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", + "geometry_type": "Raster", + "get_feature_info_includes_class": false, + "group_name": "lufolabels", + "keywords": "bzk,luchtfotolabels", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "48001", + "minscale": "24001", + "name": "luchtfotoroads_100pixkm", + "offsite": "#978E97", + "resample": "BILINEAR", + "styles": [ + { + "path": "/styling/roads.style", + "title": "Luchtfotolabels" + } + ], + "tif_path": "/srv/data/tif/100pixkm_luforoads.vrt", + "title": "Luchtfoto roads 100pixkm" + }, + { + "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", + "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", + "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", + "geometry_type": "Raster", + "get_feature_info_includes_class": false, + "group_name": "lufolabels", + "keywords": "bzk,luchtfotolabels", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "24001", + "minscale": "12001", + "name": "luchtfotoroads_200pixkm", + "offsite": "#978E97", + "resample": "BILINEAR", + "styles": [ + { + "path": "/styling/roads.style", + "title": "Luchtfotolabels" + } + ], + "tif_path": "/srv/data/tif/200pixkm_luforoads.vrt", + "title": "Luchtfoto roads 200pixkm" + }, + { + "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", + "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", + "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", + "geometry_type": "Raster", + "get_feature_info_includes_class": false, + "group_name": "lufolabels", + "keywords": "bzk,luchtfotolabels", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "12001", + "minscale": "6001", + "name": "luchtfotoroads_400pixkm", + "offsite": "#978E97", + "resample": "BILINEAR", + "styles": [ + { + "path": "/styling/roads.style", + "title": "Luchtfotolabels" + } + ], + "tif_path": "/srv/data/tif/400pixkm_luforoads.vrt", + "title": "Luchtfoto roads 400pixkm" + }, + { + "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", + "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", + "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", + "geometry_type": "Raster", + "get_feature_info_includes_class": false, + "group_name": "lufolabels", + "keywords": "bzk,luchtfotolabels", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "6001", + "minscale": "3001", + "name": "luchtfotoroads_800pixkm", + "offsite": "#978E97", + "resample": "BILINEAR", + "styles": [ + { + "path": "/styling/roads.style", + "title": "Luchtfotolabels" + } + ], + "tif_path": "/srv/data/tif/800pixkm_luforoads.vrt", + "title": "Luchtfoto roads 800pixkm" + }, + { + "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", + "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", + "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", + "geometry_type": "Raster", + "get_feature_info_includes_class": false, + "group_name": "lufolabels", + "keywords": "bzk,luchtfotolabels", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "3001", + "minscale": "1501", + "name": "luchtfotoroads_1600pixkm", + "offsite": "#978E97", + "resample": "BILINEAR", + "styles": [ + { + "path": "/styling/roads.style", + "title": "Luchtfotolabels" + } + ], + "tif_path": "/srv/data/tif/1600pixkm_luforoads.vrt", + "title": "Luchtfoto roads 1600pixkm" + }, + { + "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", + "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", + "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", + "geometry_type": "Raster", + "get_feature_info_includes_class": false, + "group_name": "lufolabels", + "keywords": "bzk,luchtfotolabels", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "48001", + "minscale": "24001", + "name": "luchtfotolabels_100pixkm", + "offsite": "#978E97", + "resample": "BILINEAR", + "styles": [ + { + "path": "/styling/labels.style", + "title": "Luchtfotolabels" + } + ], + "tif_path": "/srv/data/tif/100pixkm_lufolabels.vrt", + "title": "Luchtfoto labels 100pixkm" + }, + { + "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", + "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", + "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", + "geometry_type": "Raster", + "get_feature_info_includes_class": false, + "group_name": "lufolabels", + "keywords": "bzk,luchtfotolabels", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "24001", + "minscale": "12001", + "name": "luchtfotolabels_200pixkm", + "offsite": "#978E97", + "resample": "BILINEAR", + "styles": [ + { + "path": "/styling/labels.style", + "title": "Luchtfotolabels" + } + ], + "tif_path": "/srv/data/tif/200pixkm_lufolabels.vrt", + "title": "Luchtfoto labels 200pixkm" + }, + { + "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", + "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", + "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", + "geometry_type": "Raster", + "get_feature_info_includes_class": false, + "group_name": "lufolabels", + "keywords": "bzk,luchtfotolabels", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "12001", + "minscale": "6001", + "name": "luchtfotolabels_400pixkm", + "offsite": "#978E97", + "resample": "BILINEAR", + "styles": [ + { + "path": "/styling/labels.style", + "title": "Luchtfotolabels" + } + ], + "tif_path": "/srv/data/tif/400pixkm_lufolabels.vrt", + "title": "Luchtfoto labels 400pixkm" + }, + { + "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", + "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", + "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", + "geometry_type": "Raster", + "get_feature_info_includes_class": false, + "group_name": "lufolabels", + "keywords": "bzk,luchtfotolabels", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "6001", + "minscale": "3001", + "name": "luchtfotolabels_800pixkm", + "offsite": "#978E97", + "resample": "BILINEAR", + "styles": [ + { + "path": "/styling/labels.style", + "title": "Luchtfotolabels" + } + ], + "tif_path": "/srv/data/tif/800pixkm_lufolabels.vrt", + "title": "Luchtfoto labels 800pixkm" + }, + { + "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", + "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", + "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", + "geometry_type": "Raster", + "get_feature_info_includes_class": false, + "group_name": "lufolabels", + "keywords": "bzk,luchtfotolabels", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "3001", + "minscale": "1501", + "name": "luchtfotolabels_1600pixkm", + "offsite": "#978E97", + "resample": "BILINEAR", + "styles": [ + { + "path": "/styling/labels.style", + "title": "Luchtfotolabels" + } + ], + "tif_path": "/srv/data/tif/1600pixkm_lufolabels.vrt", + "title": "Luchtfoto labels 1600pixkm" + }, + { + "abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", + "dataset_metadata_id": "6ca22f53-b072-42f4-b920-104c7c83cd28", + "dataset_source_id": "901647c2-802d-11e6-ae22-56b6b6499611", + "geometry_type": "Raster", + "get_feature_info_includes_class": false, + "group_name": "lufolabels", + "keywords": "bzk,luchtfotolabels", + "layer_extent": "-25000 250000 280000 860000", + "maxscale": "1501", + "name": "luchtfotolabels_3200pixkm", + "offsite": "#978E97", + "resample": "BILINEAR", + "styles": [ + { + "path": "/styling/labels.style", + "title": "Luchtfotolabels" + } + ], + "tif_path": "/srv/data/tif/3200pixkm_lufolabels.vrt", + "title": "Luchtfoto labels 3200pixkm" + } + ], + "maxSize": "4000", + "outputformat_jpg": "jpg", + "outputformat_png8": "png", + "service_abstract": "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto.", + "service_accessconstraints": "https://creativecommons.org/publicdomain/zero/1.0/deed.nl", + "service_extent": "-25000 250000 280000 860000", + "service_keywords": "bzk,luchtfotolabels", + "service_metadata_id": "70562932-e7dc-4ba2-ba4f-05863d02587c", + "service_namespace_prefix": "luchtfotolabels", + "service_namespace_uri": "http://luchtfotolabels.geonovum.nl", + "service_onlineresource": "https://service.pdok.nl", + "service_path": "/bzk/luchtfotolabels/wms/v1_0", + "service_title": "Luchtfoto Labels WMS", + "symbols": [], + "templates": "/srv/data/config/templates" +} \ No newline at end of file diff --git a/internal/controller/mapfilegenerator/test_data/input/wfs.yaml b/internal/controller/mapfilegenerator/test_data/input/wfs.yaml new file mode 100644 index 0000000..331e185 --- /dev/null +++ b/internal/controller/mapfilegenerator/test_data/input/wfs.yaml @@ -0,0 +1,95 @@ +metadata: + labels: + dataset: dataset + dataset-owner: datasetOwner + service-version: v1_0 + theme: theme +spec: + options: + automaticCasing: true + disableWebserviceProxy: false + includeIngress: false + prefetchData: false + rewriteGroupToDataLayers: false + validateChildStyleNameEqual: false + validateRequests: false + service: + abstract: some "Service" abstract + accessConstraints: http://creativecommons.org/publicdomain/zero/1.0/deed.nl + bbox: + defaultCRS: + maxx: "1.0" + maxy: "3.0" + minx: "0.0" + miny: "2.0" + defaultCrs: EPSG:28992 + featureTypes: + - abstract: feature "1" abstract + bbox: + defaultCRS: + maxx: "1.0" + maxy: "3.0" + minx: "0.0" + miny: "2.0" + data: + gpkg: + blobKey: public/testme/gpkg/file-1.gpkg + columns: + - name: featuretype-1-column-1 + - name: featuretype-1-column-2 + geometryType: Point + tableName: featuretype-1 + datasetMetadataUrl: + csw: + metadataIdentifier: datadata-data-data-data-datadatadata + keywords: + - featuretype-1-keyword-1 + - featuretype-1-keyword-2 + name: featuretype-1-name + title: featuretype-1-title + - abstract: feature "2" abstract + bbox: + defaultCRS: + maxx: "1.0" + maxy: "3.0" + minx: "0.0" + miny: "2.0" + data: + postgis: + columns: + - alias: alias_featuretype-2-column-1 + name: featuretype-2-column-1 + - name: featuretype-2-column-2 + geometryType: MultiLine + tableName: featuretype-2 + datasetMetadataUrl: + csw: + metadataIdentifier: datadata-data-data-data-datadatadata + keywords: + - featuretype-2-keyword-1 + - featuretype-2-keyword-2 + name: featuretype-2-name + title: featuretype-2-title + inspire: + language: "" + serviceMetadataUrl: + csw: + metadataIdentifier: metameta-meta-meta-meta-metametameta + spatialDatasetIdentifier: "" + keywords: + - service-keyword-1 + - service-keyword-2 + - infoFeatureAccessService + otherCrs: + - EPSG:28992 + - EPSG:25831 + - EPSG:25832 + - EPSG:3034 + - EPSG:3035 + - EPSG:3857 + - EPSG:4258 + - EPSG:4326 + ownerInfoRef: "" + prefix: prefix + title: some Service title + url: "" diff --git a/internal/controller/mapfilegenerator/test_data/input/wms_group.yaml b/internal/controller/mapfilegenerator/test_data/input/wms_group.yaml new file mode 100644 index 0000000..3355349 --- /dev/null +++ b/internal/controller/mapfilegenerator/test_data/input/wms_group.yaml @@ -0,0 +1,375 @@ +apiVersion: pdok.nl/v2beta1 +kind: WMS +metadata: + name: hwh-hydrografie-v2-0 + labels: + dataset-owner: hwh + dataset: hydrografie + service-version: v2_0 + service-type: wms + annotations: + lifecycle-phase: prod + service-bundle-id: d30bdf62-1c12-45a5-a57d-367e642ef118 +spec: + general: + datasetOwner: hwh + dataset: hydrografie + serviceVersion: v2_0 + kubernetes: + resources: + limits: + ephemeralStorage: 1544Mi + requests: + ephemeralStorage: 1544Mi + service: + title: Waterschappen Hydrografie (INSPIRE geharmoniseerd) WMS + abstract: + "Deze dataset is gebaseerd op (niet geharmoniseerde) data van alle waterschappen + in Nederland conform INSPIRE. De dataset bevat de volgende INSPIRE objecten: + CrossingLine, CrossingPoint, DamOrWeir, DrainageBasin, Embankment, Lock, Sluice, + Watercourse." + authority: + name: hwh + url: https://www.hetwaterschapshuis.nl/ + dataEPSG: EPSG:28992 + extent: -59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961 + inspire: true + keywords: + - Aquaduct + - Brug + - Duikersifonhevel + - Stuw + - Vastedam + - AfvoerAanvoergebied + - Waterkering + - Sluis + - HydroObject + - HVD + - Aardobservatie en milieu + metadataIdentifier: 871a58f8-c9f1-41a4-be37-0f059e0f886f + stylingAssets: + configMapRefs: + - name: includes + keys: + - bridge.symbol + - x.symbol + blobKeys: + - resources/images/hwh/hydrografie/bridge.png + layers: + - abstract: Watercourse + data: + gpkg: + blobKey: geopackages/hwh/hydrografie/aaa/1/Waterbody.gpkg + columns: + - gml_id + - beginlifespanversion + - condition + - delineationknown + - endlifespanversion + - length + - level + - localid + - localtype + - name + - namespace + - origin + - persistence + - streamorder + - tidal + - widthrange + geometryType: MultiLineString + table: watercourse + datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + keywords: + - Hydroobject + - Waterbody + - Watercourse + - River + - Stream + - Lake + - Reservoir + name: HY.PhysicalWaters.Waterbodies + sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + styles: + - name: HY.PhysicalWaters.Waterbodies.Default + title: Water bodies default style + visualization: watercourse.style + title: Waterbody + maxScale: 50000.0 + minScale: 1.0 + visible: true + - abstract: Drainage basin + data: + gpkg: + blobKey: geopackages/hwh/hydrografie/aaa/1/Catchment.gpkg + columns: + - gml_id + - area + - beginlifespanversion + - endlifespanversion + - localid + - name + - namespace + - order + - orderscheme + - origin + - outlet + - scope + geometryType: MultiPolygon + table: drainagebasin + datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + keywords: + - AfvoergebiedAanvoergebied + - Catchment + - Basin + - Catchment Area + - Drainage basin + name: HY.PhysicalWaters.Catchments + sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + styles: + - name: HY.PhysicalWaters.Catchments.Default + title: Drainage Basin default style + visualization: drainagebasin.style + title: Catchment + maxScale: 50000.0 + minScale: 1.0 + visible: true + - abstract: Crossing line, crossing point, dam or weir, sluice, embankment, lock. + datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + keywords: + - Man Made + - Duikersifonhevel + - Aquaduct + - Brug + - Stuw + - Vastedam + - Waterkering + - Sluis + - Bridge + - Aquaduct + - Dam + - Weir + - Lock + - Ford + - Dyke + maxScale: 50000.0 + minScale: 1.0 + name: HY.PhysicalWaters.ManMadeObject + sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + styles: + - name: HY.PhysicalWaters.ManMadeObject.Default + title: Man-made objects default style + title: Man-made Object + visible: true + - abstract: Crossing line, crossing point, dam or weir, sluice, embankment, lock. + data: + gpkg: + blobKey: geopackages/hwh/hydrografie/aaa/1/Man-madeObject.gpkg + columns: + - gml_id + - beginlifespanversion + - condition + - endlifespanversion + - localid + - name + - namespace + geometryType: Point + table: lock + datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + group: HY.PhysicalWaters.ManMadeObject + keywords: + - Man Made + - Duikersifonhevel + - Aquaduct + - Brug + - Stuw + - Vastedam + - Waterkering + - Sluis. + name: HY.PhysicalWaters.ManMadeObject.lock + sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + styles: + - name: HY.PhysicalWaters.ManMadeObject.Default + title: Lock + visualization: lock.style + title: Man-made Object + maxScale: 50000.0 + minScale: 1.0 + visible: false + - abstract: Crossing line, crossing point, dam or weir, sluice, embankment, lock. + data: + gpkg: + blobKey: geopackages/hwh/hydrografie/aaa/1/Man-madeObject.gpkg + columns: + - gml_id + - beginlifespanversion + - condition + - endlifespanversion + - localid + - name + - namespace + - type + geometryType: Point + table: crossingpoint + datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + group: HY.PhysicalWaters.ManMadeObject + keywords: + - Man Made + - Duikersifonhevel + - Aquaduct + - Brug + - Stuw + - Vastedam + - Waterkering + - Sluis. + name: HY.PhysicalWaters.ManMadeObject.crossingpoint + sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + styles: + - name: HY.PhysicalWaters.ManMadeObject.Default + title: Crossing Point + visualization: crossingpoint.style + title: Man-made Object + maxScale: 50000.0 + minScale: 1.0 + visible: false + - abstract: Crossing line, crossing point, dam or weir, sluice, embankment, lock. + data: + gpkg: + blobKey: geopackages/hwh/hydrografie/aaa/1/Man-madeObject.gpkg + columns: + - gml_id + - beginlifespanversion + - condition + - endlifespanversion + - localid + - name + - namespace + geometryType: Point + table: sluice + datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + group: HY.PhysicalWaters.ManMadeObject + keywords: + - Man Made + - Duikersifonhevel + - Aquaduct + - Brug + - Stuw + - Vastedam + - Waterkering + - Sluis. + name: HY.PhysicalWaters.ManMadeObject.sluice + sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + styles: + - name: HY.PhysicalWaters.ManMadeObject.Default + title: Sluice + visualization: sluice.style + title: Man-made Object + maxScale: 50000.0 + minScale: 1.0 + visible: false + - abstract: Crossing line, crossing point, dam or weir, sluice, embankment, lock. + data: + gpkg: + blobKey: geopackages/hwh/hydrografie/aaa/1/Man-madeObject.gpkg + columns: + - gml_id + - beginlifespanversion + - condition + - endlifespanversion + - localid + - name + - namespace + geometryType: MultiLineString + table: embankment + datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + group: HY.PhysicalWaters.ManMadeObject + keywords: + - Man Made + - Duikersifonhevel + - Aquaduct + - Brug + - Stuw + - Vastedam + - Waterkering + - Sluis. + name: HY.PhysicalWaters.ManMadeObject.embankment + sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + styles: + - name: HY.PhysicalWaters.ManMadeObject.Default + title: Embankment + visualization: embankment.style + title: Man-made Object + maxScale: 50000.0 + minScale: 1.0 + visible: false + - abstract: Crossing line, crossing point, dam or weir, sluice, embankment, lock. + data: + gpkg: + blobKey: geopackages/hwh/hydrografie/aaa/1/Man-madeObject.gpkg + columns: + - gml_id + - beginlifespanversion + - condition + - endlifespanversion + - localid + - name + - namespace + - type + geometryType: MultiLineString + table: crossingline + datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + group: HY.PhysicalWaters.ManMadeObject + keywords: + - Man Made + - Duikersifonhevel + - Aquaduct + - Brug + - Stuw + - Vastedam + - Waterkering + - Sluis. + name: HY.PhysicalWaters.ManMadeObject.crossingline + sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + styles: + - name: HY.PhysicalWaters.ManMadeObject.Default + title: Crossing Line + visualization: crossingline.style + title: Man-made Object + maxScale: 50000.0 + minScale: 1.0 + visible: false + - abstract: Crossing line, crossing point, dam or weir, sluice, embankment, lock. + data: + gpkg: + blobKey: geopackages/hwh/hydrografie/aaa/1/Man-madeObject.gpkg + columns: + - gml_id + - beginlifespanversion + - condition + - endlifespanversion + - localid + - name + - namespace + geometryType: Point + table: damorweir + datasetMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + group: HY.PhysicalWaters.ManMadeObject + keywords: + - Man Made + - Duikersifonhevel + - Aquaduct + - Brug + - Stuw + - Vastedam + - Waterkering + - Sluis. + name: HY.PhysicalWaters.ManMadeObject.damorweir + sourceMetadataIdentifier: 07575774-57a1-4419-bab4-6c88fdeb02b2 + styles: + - name: HY.PhysicalWaters.ManMadeObject.Default + title: Dam or Weir + visualization: damorweir.style + title: Man-made Object + maxScale: 50000.0 + minScale: 1.0 + visible: false 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 new file mode 100644 index 0000000..af71bc0 --- /dev/null +++ b/internal/controller/mapfilegenerator/test_data/input/wms_group_and_toplayer.yaml @@ -0,0 +1,527 @@ +apiVersion: pdok.nl/v2beta1 +kind: WMS +metadata: + name: kadaster-kadastralekaart + labels: + dataset-owner: kadaster + dataset: kadastralekaart + service-version: v5_0 + service-type: wms +spec: + general: + datasetOwner: kadaster + dataset: kadastralekaart + serviceVersion: v5_0 + kubernetes: + healthCheck: + querystring: language=dut&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&BBOX=193882.0336615453998,470528.1693874415942,193922.4213813782844,470564.250484353397&CRS=EPSG:28992&WIDTH=769&HEIGHT=687&LAYERS=OpenbareRuimteNaam,Bebouwing,Perceel,KadastraleGrens&FORMAT=image/png&DPI=96&MAP_RESOLUTION=96&FORMAT_OPTIONS=dpi:96&TRANSPARENT=TRUE + mimetype: image/png + resources: + limits: + memory: "103M" + ephemeralStorage: "104M" + requests: + cpu: "1001" + memory: "101M" + ephemeralStorage: "102M" + options: + automaticCasing: true + disableWebserviceProxy: false + includeIngress: true + validateRequests: true + rewriteGroupToDataLayers: true + service: + inspire: false + title: Kadastrale Kaart (WMS) + abstract: Overzicht van de ligging van de kadastrale percelen in Nederland. Fungeert als schakel tussen terrein en registratie, vervult voor externe gebruiker vaak een referentiefunctie, een ondergrond ten opzichte waarvan de gebruiker eigen informatie kan vastleggen en presenteren. + keywords: + - Kadaster + - Kadastrale percelen + - Kadastrale grens + - Kadastrale kaart + - Bebouwing + - Nummeraanduidingreeks + - Openbare ruimte naam + - Perceel + - Grens + - Kwaliteit + - Kwaliteitslabels + - HVD + - Geospatiale data + metadataIdentifier: 97cf6a64-9cfc-4ce6-9741-2db44fd27fca + authority: + name: kadaster + url: https://www.kadaster.nl + dataEPSG: EPSG:28992 + resolution: 91 + defResolution: 91 + extent: "-25000 250000 280000 860000" + maxSize: 10000 + stylingAssets: + configMapRefs: + - name: includes + blobKeys: + - resources/fonts/liberation-sans.ttf + - resources/fonts/liberation-sans-italic.ttf + layers: + - name: Kadastralekaart + title: KadastraleKaartv5 + abstract: Overzicht van de ligging van de kadastrale percelen in Nederland. Fungeert als schakel tussen terrein en registratie, vervult voor externe gebruiker vaak een referentiefunctie, een ondergrond ten opzichte waarvan de gebruiker eigen informatie kan vastleggen en presenteren. + maxScale: 6001 + keywords: + - Kadaster + - Kadastrale percelen + - Kadastrale grens + datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904 + sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64 + styles: + - name: standaard + title: Standaardvisualisatie + abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief). + - name: kwaliteit + title: Kwaliteitsvisualisatie + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + - name: print + title: Printvisualisatie + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + - name: Bebouwing + visible: true + group: Kadastralekaart + title: Bebouwing + abstract: De laag Bebouwing is een selectie op panden van de BGT. + keywords: + - Bebouwing + datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904 + sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64 + minScale: 50 + maxScale: 6001 + styles: + - name: standaard:bebouwing + title: Standaardvisualisatie Bebouwing + abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief). + - name: kwaliteit:bebouwing + title: Kwaliteitsvisualisatie Bebouwing + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + - name: print:bebouwing + title: Printvisualisatie Bebouwing + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + - name: Bebouwingvlak + visible: true + group: Bebouwing + title: Bebouwingvlak + abstract: De laag Bebouwing is een selectie op panden van de BGT. + keywords: + - Bebouwing + datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904 + sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64 + minScale: 50 + maxScale: 6001 + styles: + - name: standaard + title: Standaardvisualisatie + abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief). + visualization: bebouwing.style + - name: kwaliteit + title: Kwaliteitsvisualisatie + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + visualization: bebouwing_kwaliteit.style + - name: print + title: Printvisualisatie + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + visualization: bebouwing_print.style + - name: standaard:bebouwing + title: Standaardvisualisatie Bebouwing + abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief). + visualization: bebouwing.group.style + - name: kwaliteit:bebouwing + title: Kwaliteitsvisualisatie Bebouwing + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + visualization: bebouwing_kwaliteit.group.style + - name: print:bebouwing + title: Printvisualisatie Bebouwing + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + visualization: bebouwing_print.group.style + data: + gpkg: + blobKey: geopackages/kadaster/kadastralekaart_brk/aaa/1/pand.gpkg + table: pand + geometryType: Polygon + columns: + - object_begin_tijd + - lv_publicatiedatum + - relatieve_hoogteligging + - in_onderzoek + - tijdstip_registratie + - identificatie_namespace + - identificatie_lokaal_id + - bronhouder + - bgt_status + - plus_status + - identificatie_bag_pnd + aliases: + lv_publicatiedatum: LV-publicatiedatum + identificatie_lokaal_id: identificatieLokaalID + identificatie_bag_pnd: identificatieBAGPND + bgt_status: bgt-status + plus_status: plus-status + - name: Nummeraanduidingreeks + visible: true + group: Bebouwing + title: Nummeraanduidingreeks + abstract: De laag Bebouwing is een selectie op panden van de BGT. + keywords: + - Nummeraanduidingreeks + datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904 + sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64 + minScale: 50 + maxScale: 2001 + styles: + - name: standaard + title: Standaardvisualisatie + abstract: Standaarvisualisatie van de nummeraanduidingreeks. + visualization: nummeraanduidingreeks.style + - name: kwaliteit + title: Kwaliteitsvisualisatie + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + visualization: nummeraanduidingreeks_kwaliteit.style + - name: print + title: Printvisualisatie + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + visualization: nummeraanduidingreeks_print.style + - name: standaard:bebouwing + title: Standaardvisualisatie Bebouwing + abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief). + visualization: nummeraanduidingreeks.group.style + - name: kwaliteit:bebouwing + title: Kwaliteitsvisualisatie Bebouwing + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + visualization: nummeraanduidingreeks_kwaliteit.group.style + - name: print:bebouwing + title: Printvisualisatie Bebouwing + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + visualization: nummeraanduidingreeks_print.group.style + data: + gpkg: + blobKey: geopackages/kadaster/kadastralekaart_brk/aaa/1/pand_nummeraanduiding.gpkg + table: pand_nummeraanduiding + geometryType: Point + columns: + - bebouwing_id + - hoek + - tekst + - bag_vbo_laagste_huisnummer + - bag_vbo_hoogste_huisnummer + - hoek + aliases: + bebouwing_id: bebouwingID + bag_vbo_laagste_huisnummer: identificatie_BAGVBOLaagsteHuisnummer + bag_vbo_hoogste_huisnummer: identificatie_BAGVBOHoogsteHuisnummer + - name: OpenbareRuimteNaam + visible: true + group: Kadastralekaart + title: OpenbareRuimteNaam + abstract: De laag Openbareruimtenaam is een selectie op de openbare ruimte labels van de BGT met een bgt-status "bestaand" die een classificatie (openbareruimtetype) Weg en Water hebben. + keywords: + - Openbare ruimte naam + datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904 + sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64 + minScale: 50 + maxScale: 2001 + styles: + - name: standaard + title: Standaardvisualisatie + abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief). + visualization: openbareruimtenaam.style + - name: kwaliteit + title: Kwaliteitsvisualisatie + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + visualization: openbareruimtenaam_kwaliteit.style + - name: print + title: Printvisualisatie + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + visualization: openbareruimtenaam_print.style + - name: standaard:openbareruimtenaam + title: Standaardvisualisatie OpenbareRuimteNaam + abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief). + visualization: openbareruimtenaam.group.style + - name: kwaliteit:openbareruimtenaam + title: Kwaliteitsvisualisatie OpenbareRuimteNaam + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + visualization: openbareruimtenaam_kwaliteit.group.style + - name: print:openbareruimtenaam + title: Printvisualisatie OpenbareRuimteNaam + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + visualization: openbareruimtenaam_print.group.style + data: + gpkg: + blobKey: geopackages/kadaster/kadastralekaart_brk/aaa/1/openbareruimtelabel.gpkg + table: openbareruimtelabel + geometryType: Point + columns: + - object_begin_tijd + - lv_publicatiedatum + - relatieve_hoogteligging + - in_onderzoek + - tijdstip_registratie + - identificatie_namespace + - identificatie_lokaal_id + - bronhouder + - bgt_status + - plus_status + - identificatie_bag_opr + - tekst + - hoek + - openbare_ruimte_type + aliases: + lv_publicatiedatum: LV-publicatiedatum + identificatie_lokaal_id: identificatieLokaalID + identificatie_bag_opr: identificatieBAGOPR + bgt_status: bgt-status + plus_status: plus-status + - name: Perceel + visible: true + group: Kadastralekaart + title: Perceel + abstract: Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal geïdentificeerd is en met kadastrale grenzen begrensd is. + keywords: + - Perceel + - Kadastrale percelen + datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904 + sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64 + minScale: 50 + maxScale: 6001 + styles: + - name: standaard:perceel + title: Standaardvisualisatie Perceel + abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief). + - name: kwaliteit:perceel + title: Kwaliteitsvisualisatie Perceel + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + - name: print:perceel + title: Printvisualisatie Perceel + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + - name: Perceelvlak + visible: true + group: Perceel + title: Perceelvlak + abstract: Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal geïdentificeerd is en met kadastrale grenzen begrensd is. + keywords: + - Kadastrale percelen + datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904 + sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64 + minScale: 50 + maxScale: 6001 + styles: + - name: standaard + title: Standaardvisualisatie + abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief). + visualization: perceelvlak.style + - name: kwaliteit + title: Kwaliteitsvisualisatie + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + visualization: perceelvlak_kwaliteit.style + - name: print + title: Printvisualisatie + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + visualization: perceelvlak_print.style + - name: standaard:perceel + title: Standaardvisualisatie Perceel + abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief). + visualization: perceelvlak.group.style + - name: kwaliteit:perceel + title: Kwaliteitsvisualisatie Perceel + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + visualization: perceelvlak_kwaliteit.group.style + - name: print:perceel + title: Printvisualisatie Perceel + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + visualization: perceelvlak_print.group.style + data: + gpkg: + blobKey: geopackages/kadaster/kadastralekaart_brk/aaa/1/perceel.gpkg + table: perceel + geometryType: Polygon + columns: + - identificatie_namespace + - identificatie_lokaal_id + - begin_geldigheid + - tijdstip_registratie + - volgnummer + - status_historie_code + - status_historie_waarde + - kadastrale_gemeente_code + - kadastrale_gemeente_waarde + - sectie + - akr_kadastrale_gemeente_code_code + - akr_kadastrale_gemeente_code_waarde + - kadastrale_grootte_waarde + - soort_grootte_code + - soort_grootte_waarde + - perceelnummer + - perceelnummer_rotatie + - perceelnummer_verschuiving_delta_x + - perceelnummer_verschuiving_delta_y + - perceelnummer_plaatscoordinaat_x + - perceelnummer_plaatscoordinaat_y + aliases: + identificatie_lokaal_id: identificatieLokaalID + akr_kadastrale_gemeente_code_code: AKRKadastraleGemeenteCodeCode + akr_kadastrale_gemeente_code_waarde: AKRKadastraleGemeenteCodeWaarde + - name: Label + visible: true + group: Perceel + title: Label + abstract: Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal geïdentificeerd is en met kadastrale grenzen begrensd is. + keywords: + - Kadastrale percelen + datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904 + sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64 + minScale: 50 + maxScale: 6001 + styles: + - name: standaard + title: Standaardvisualisatie + abstract: Standaarvisualisatie van het label. + visualization: label.style + - name: standaard:perceel + title: Standaardvisualisatie Perceel + abstract: Standaarvisualisatie van het label. + visualization: label.group.style + - name: kwaliteit + title: Kwaliteitsvisualisatie + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + visualization: label_kwaliteit.style + - name: kwaliteit:perceel + title: Kwaliteitsvisualisatie Perceel + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + visualization: label_kwaliteit.group.style + - name: print + title: Printvisualisatie + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + visualization: label_print.style + - name: print:perceel + title: Printvisualisatie Perceel + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + visualization: label_print.group.style + data: + gpkg: + blobKey: geopackages/kadaster/kadastralekaart_brk/aaa/1/perceel_label.gpkg + table: perceel_label + geometryType: Point + columns: + - perceel_id + - perceelnummer + - rotatie + - verschuiving_delta_x + - verschuiving_delta_y + aliases: + perceel_id: perceelID + - name: Bijpijling + visible: true + group: Perceel + title: Bijpijling + abstract: Een perceel is een stuk grond waarvan het Kadaster de grenzen heeft gemeten of gaat meten en dat bij het Kadaster een eigen nummer heeft. Een perceel is een begrensd deel van het Nederlands grondgebied dat kadastraal geïdentificeerd is en met kadastrale grenzen begrensd is. + keywords: + - Kadastrale percelen + datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904 + sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64 + minScale: 50 + maxScale: 6001 + styles: + - name: standaard + title: Standaardvisualisatie + abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief). + visualization: bijpijling.style + - name: kwaliteit + title: Kwaliteitsvisualisatie + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + visualization: bijpijling_kwaliteit.style + - name: print + title: Printvisualisatie + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + visualization: bijpijling_print.style + - name: standaard:perceel + title: Standaardvisualisatie Perceel + abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief). + visualization: bijpijling.group.style + - name: kwaliteit:perceel + title: Kwaliteitsvisualisatie Perceel + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + visualization: bijpijling_kwaliteit.group.style + - name: print:perceel + title: Printvisualisatie Perceel + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + visualization: bijpijling_print.group.style + data: + gpkg: + blobKey: geopackages/kadaster/kadastralekaart_brk/aaa/1/perceel_bijpijling.gpkg + table: perceel_bijpijling + geometryType: LineString + columns: + - perceel_id + aliases: + perceel_id: perceelID + - name: KadastraleGrens + visible: true + group: Kadastralekaart + title: KadastraleGrens + abstract: Een Kadastrale Grens is de weergave van een grens op de kadastrale kaart die door de dienst van het Kadaster tussen percelen (voorlopig) vastgesteld wordt, op basis van inlichtingen van belanghebbenden en met gebruikmaking van de aan de kadastrale kaart ten grondslag liggende bescheiden die in elk geval de landmeetkundige gegevens bevatten van hetgeen op die kaart wordt weergegeven. + keywords: + - Grens + - Kadastrale grenzen + datasetMetadataIdentifier: a29917b9-3426-4041-a11b-69bcb2256904 + sourceMetadataIdentifier: 06b6c650-cdb1-11dd-ad8b-0800200c9a64 + minScale: 50 + maxScale: 6001 + styles: + - name: standaard + title: Standaardvisualisatie + abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief). + visualization: kadastralegrens.style + - name: kwaliteit + title: Kwaliteitsvisualisatie + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + visualization: kadastralegrens_kwaliteit.style + - name: print + title: Printvisualisatie + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + visualization: kadastralegrens_print.style + - name: standaard:kadastralegrens + title: Standaardvisualisatie KadastraleGrens + abstract: Standaardvisualisatie met grenzen op basis van type (definitief, voorlopig of administratief). + visualization: kadastralegrens.group.style + - name: kwaliteit:kadastralegrens + title: Kwaliteitsvisualisatie KadastraleGrens + abstract: Kwaliteitsvisualisatie met grenzen op basis van kwaliteitsklasse (B, C, D of E). + visualization: kadastralegrens_kwaliteit.group.style + - name: print:kadastralegrens + title: Printvisualisatie KadastraleGrens + abstract: Visualisatie ten behoeve van afdrukken op 180 dpi. + visualization: kadastralegrens_print.group.style + data: + gpkg: + blobKey: geopackages/kadaster/kadastralekaart_brk/aaa/1/kadastrale_grens.gpkg + table: kadastrale_grens + geometryType: LineString + columns: + - begin_geldigheid + - tijdstip_registratie + - volgnummer + - status_historie_code + - status_historie_waarde + - identificatie_namespace + - identificatie_lokaal_id + - type_grens_code + - type_grens_waarde + - classificatie_kwaliteit_code + - classificatie_kwaliteit_waarde + - perceel_links_identificatie_namespace + - perceel_links_identificatie_lokaal_id + - perceel_rechts_identificatie_namespace + - perceel_rechts_identificatie_lokaal_id + aliases: + identificatie_lokaal_id: identificatieLokaalID + perceel_links_identificatie_lokaal_id: perceelLinksIdentificatieLokaalID + perceel_rechts_identificatie_lokaal_id: perceelRechtsIdentificatieLokaalID + classificatie_kwaliteit_code: ClassificatieKwaliteitCode + classificatie_kwaliteit_waarde: ClassificatieKwaliteitWaarde diff --git a/internal/controller/mapfilegenerator/test_data/input/wms_groupless.yaml b/internal/controller/mapfilegenerator/test_data/input/wms_groupless.yaml new file mode 100644 index 0000000..7cacc96 --- /dev/null +++ b/internal/controller/mapfilegenerator/test_data/input/wms_groupless.yaml @@ -0,0 +1,193 @@ +apiVersion: pdok.nl/v2beta1 +kind: WMS +metadata: + name: rws-nwbwegen-v1-0 + labels: + dataset-owner: rws + dataset: nwbwegen + service-version: v1_0 + service-type: wms + annotations: + lifecycle-phase: prod + service-bundle-id: b39c152b-393b-52f5-a50c-e1ffe904b6fb +spec: + general: + datasetOwner: rws + dataset: nwbwegen + serviceVersion: v1_0 + kubernetes: + healthCheck: + boundingbox: 135134.89,457152.55,135416.03,457187.82 + resources: + limits: + ephemeralStorage: 1535Mi + memory: 4G + requests: + cpu: 2000m + ephemeralStorage: 1535Mi + memory: 4G + options: + automaticCasing: true + disableWebserviceProxy: false + includeIngress: true + validateRequests: true + service: + title: NWB - Wegen WMS + abstract: + Dit is de web map service van het Nationaal Wegen Bestand (NWB) - wegen. + Deze dataset bevat alleen de wegvakken en hectometerpunten. Het Nationaal Wegen + Bestand - Wegen is een digitaal geografisch bestand van alle wegen in Nederland. + Opgenomen zijn alle wegen die worden beheerd door wegbeheerders als het Rijk, + provincies, gemeenten en waterschappen, echter alleen voor zover deze zijn voorzien + van een straatnaam of nummer. + authority: + name: rws + url: https://www.rijkswaterstaat.nl + dataEPSG: EPSG:28992 + extent: -59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961 + inspire: true + keywords: + - Vervoersnetwerken + - Menselijke gezondheid en veiligheid + - Geluidsbelasting hoofdwegen (Richtlijn Omgevingslawaai) + - Nationaal + - Voertuigen + - Verkeer + - Wegvakken + - Hectometerpunten + - HVD + - Mobiliteit + stylingAssets: + configMapRefs: + - name: includes + keys: + - nwb_wegen_hectopunten.symbol + - hectopunten.style + - wegvakken.style + blobKeys: + - resources/fonts/liberation-sans.ttf + layers: + - abstract: + Deze laag bevat de wegvakken uit het Nationaal Wegen bestand (NWB) + en geeft gedetailleerde informatie per wegvak zoals straatnaam, wegnummer, + routenummer, wegbeheerder, huisnummers, enz. weer. + data: + gpkg: + columns: + - objectid + - wvk_id + - wvk_begdat + - jte_id_beg + - jte_id_end + - wegbehsrt + - wegnummer + - wegdeelltr + - hecto_lttr + - bst_code + - rpe_code + - admrichtng + - rijrichtng + - stt_naam + - stt_bron + - wpsnaam + - gme_id + - gme_naam + - hnrstrlnks + - hnrstrrhts + - e_hnr_lnks + - e_hnr_rhts + - l_hnr_lnks + - l_hnr_rhts + - begafstand + - endafstand + - beginkm + - eindkm + - pos_tv_wol + - wegbehcode + - wegbehnaam + - distrcode + - distrnaam + - dienstcode + - dienstnaam + - wegtype + - wgtype_oms + - routeltr + - routenr + - routeltr2 + - routenr2 + - routeltr3 + - routenr3 + - routeltr4 + - routenr4 + - wegnr_aw + - wegnr_hmp + - geobron_id + - geobron_nm + - bronjaar + - openlr + - bag_orl + - frc + - fow + - alt_naam + - alt_nr + - rel_hoogte + - st_lengthshape + geometryType: MultiLineString + blobKey: geopackages/rws/nwbwegen/410a6d1e-e767-41b4-ba8d-9e1e955dd013/1/nwb_wegen.gpkg + table: wegvakken + datasetMetadataIdentifier: a9b7026e-0a81-4813-93bd-ba49e6f28502 + keywords: + - Vervoersnetwerken + - Menselijke gezondheid en veiligheid + - Geluidsbelasting hoofdwegen (Richtlijn Omgevingslawaai) + - Nationaal + - Voertuigen + - Verkeer + - Wegvakken + maxScale: 50000.0 + minScale: 1.0 + name: wegvakken + sourceMetadataIdentifier: 8f0497f0-dbd7-4bee-b85a-5fdec484a7ff + styles: + - name: wegvakken + title: NWB - Wegvakken + visualization: wegvakken.style + title: Wegvakken + visible: true + - abstract: + Deze laag bevat de hectopunten uit het Nationaal Wegen Bestand (NWB) + en geeft gedetailleerde informatie per hectopunt zoals hectometrering, afstand, + zijde en hectoletter weer. + data: + gpkg: + columns: + - objectid + - hectomtrng + - afstand + - wvk_id + - wvk_begdat + - zijde + - hecto_lttr + geometryType: MultiPoint + blobKey: geopackages/rws/nwbwegen/410a6d1e-e767-41b4-ba8d-9e1e955dd013/1/nwb_wegen.gpkg + table: hectopunten + datasetMetadataIdentifier: a9b7026e-0a81-4813-93bd-ba49e6f28502 + keywords: + - Vervoersnetwerken + - Menselijke gezondheid en veiligheid + - Geluidsbelasting hoofdwegen (Richtlijn Omgevingslawaai) + - Nationaal + - Voertuigen + - Verkeer + - Hectometerpunten + maxScale: 50000.0 + minScale: 1.0 + name: hectopunten + sourceMetadataIdentifier: 8f0497f0-dbd7-4bee-b85a-5fdec484a7ff + styles: + - name: hectopunten + title: NWB - Hectopunten + visualization: hectopunten.style + title: Hectopunten + visible: true + metadataIdentifier: f2437a92-ddd3-4777-a1bc-fdf4b4a7fcb8 diff --git a/internal/controller/mapfilegenerator/test_data/input/wms_postgis.yaml b/internal/controller/mapfilegenerator/test_data/input/wms_postgis.yaml new file mode 100644 index 0000000..eecb357 --- /dev/null +++ b/internal/controller/mapfilegenerator/test_data/input/wms_postgis.yaml @@ -0,0 +1,90 @@ +apiVersion: pdok.nl/v2beta1 +kind: WMS +metadata: + name: v1-0 # name set with namePrefix in base/kustomization.yaml + labels: + dataset: terugmeldingen + dataset-owner: brt + service-version: v1_0 + service-type: wms +spec: + general: + datasetOwner: brt + dataset: terugmeldingen + serviceVersion: v1_0 + kubernetes: + resources: + limits: + ephemeralStorage: 20Mi + options: + automaticCasing: true + disableWebserviceProxy: false + includeIngress: true + validateRequests: true + service: + inspire: false + title: BRT Terugmeldingen WMS + abstract: De BRT terugmeldingenservice bevat alle recente meldingen op BRT objecten waar twijfel over de juistheid bestaat. Zowel terugmeldingen op de TOP10 als meldingen die gemaakt zijn op de gegeneraliseerde kaartproducten (TOP25, TOP50, TOP100, TOP250) worden hierin geregistreerd. Daarnaast kan je de inhoud en status van de meldingen inzien. Ook een vermoedelijke fout geconstateerd? Doe een melding op https://verbeterdekaart.kadaster.nl + keywords: + - Basisregistratie Topografie + - BRT + - terugmeldingen + - TOP10NL + - TOP25 + - TOP50 + - TOP100 + - TOP250 + - in onderzoek register + - verbeter de kaart + - verbeterdekaart + metadataIdentifier: fa069f74-9837-4d63-b2ac-b337b5de86b1 + authority: + name: brt + url: http://www.brt.nl + dataEPSG: EPSG:28992 + extent: -7000 289000 300000 629000 + stylingAssets: + configMapRefs: + - name: includes + keys: + - terugmeldingen.symbol + - terugmeldingen.style + blobKeys: + - ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/afgerond-blauw.png + - ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/afgewezen-rood.png + - ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/doorgestuurd-grijs.png + - ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/geparkeerd-kobaltblauw.png + - ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/goedgekeurd-groen.png + - ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/nieuw-geel.png + - ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/onderzoek-oranje.png + layers: + - name: brtterugmeldingen + visible: true + title: BRT Terugmeldingen + abstract: Alle recente BRT terugmeldingen gedaan door BRT gebruikers. + keywords: + - brtterugmeldingen + datasetMetadataIdentifier: 7a84c4de-4ec0-4202-a8d0-792fb7d39d1f + sourceMetadataIdentifier: 07c7d650-cdb1-11dd-ad8b-0800200c9a60 + styles: + - title: Terugmeldingen + name: brtterugmeldingen:terugmeldingen + visualization: terugmeldingen.style + legendFile: + blobKey: ${BLOBS_RESOURCES_BUCKET}/images/terugmeldingen/terugmeldingen-legend.png + data: + postgis: + table: brtterugmeldingen.brtterugmeldingen_v1 + geometryType: Point + columns: + - meldingsnummer_volledig + - tijdstip_registratie + - status + - omschrijving + - bronhoudercode + - bronhoudernaam + - tijdstip_statuswijziging + - toelichting + - objectid + - objecttype + - hoogte_vanaf_maaiveld diff --git a/internal/controller/mapfilegenerator/test_data/input/wms_tif.yaml b/internal/controller/mapfilegenerator/test_data/input/wms_tif.yaml new file mode 100644 index 0000000..05dae8f --- /dev/null +++ b/internal/controller/mapfilegenerator/test_data/input/wms_tif.yaml @@ -0,0 +1,292 @@ +apiVersion: pdok.nl/v2beta1 +kind: WMS +metadata: + name: bzk-luchtfotolabels-v1-0 + labels: + dataset-owner: bzk + dataset: luchtfotolabels + service-version: v1_0 + service-type: wms +spec: + general: + datasetOwner: bzk + dataset: luchtfotolabels + serviceVersion: v1_0 + kubernetes: + autoscaling: + minReplicas: 1 + maxReplicas: 2 + healthCheck: + boundingbox: 135036.1077132325445,456913.9317436855054,135531.2729437439411,457377.1306112145539 + resources: + limits: + memory: 4G + ephemeralStorage: 6G + requests: + cpu: "1" + memory: 4G + ephemeralStorage: 6G + options: + automaticCasing: false + disableWebserviceProxy: false + includeIngress: false + validateRequests: false + validateChildStyleNameEqual: false + service: + inspire: false + title: Luchtfoto Labels WMS + abstract: "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto." + keywords: + - bzk + - luchtfotolabels + metadataIdentifier: 70562932-e7dc-4ba2-ba4f-05863d02587c + authority: + name: kadaster + url: http://www.kadaster.nl + dataEPSG: EPSG:28992 + stylingAssets: + configMapRefs: + - name: ${INCLUDES} + layers: + - name: lufolabels + visible: true + title: Luchtfoto labels + abstract: "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto." + keywords: + - bzk + - luchtfotolabels + datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28 + sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611 + styles: + - name: luchtfotolabels + title: Luchtfotolabels + - name: luchtfotoroads_100pixkm + visible: true + title: Luchtfoto roads 100pixkm + group: lufolabels + abstract: "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto." + keywords: + - bzk + - luchtfotolabels + datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28 + sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611 + minScale: 24001 + maxScale: 48001 + styles: + - name: luchtfotolabels + title: Luchtfotolabels + visualization: roads.style + data: + tif: + blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/100pixkm_luforoads/100pixkm_luforoads.vrt + offsite: "#978E97" + resample: BILINEAR + - name: luchtfotoroads_200pixkm + visible: true + title: Luchtfoto roads 200pixkm + group: lufolabels + abstract: "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto." + keywords: + - bzk + - luchtfotolabels + datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28 + sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611 + minScale: 12001 + maxScale: 24001 + styles: + - name: luchtfotolabels + title: Luchtfotolabels + visualization: roads.style + data: + tif: + blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/200pixkm_luforoads/200pixkm_luforoads.vrt + offsite: "#978E97" + resample: BILINEAR + - name: luchtfotoroads_400pixkm + visible: true + title: Luchtfoto roads 400pixkm + group: lufolabels + abstract: "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto." + keywords: + - bzk + - luchtfotolabels + datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28 + sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611 + minScale: 6001 + maxScale: 12001 + styles: + - name: luchtfotolabels + title: Luchtfotolabels + visualization: roads.style + data: + tif: + blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/400pixkm_luforoads/400pixkm_luforoads.vrt + offsite: "#978E97" + resample: BILINEAR + - name: luchtfotoroads_800pixkm + visible: true + title: Luchtfoto roads 800pixkm + group: lufolabels + abstract: "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto." + keywords: + - bzk + - luchtfotolabels + datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28 + sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611 + minScale: 3001 + maxScale: 6001 + styles: + - name: luchtfotolabels + title: Luchtfotolabels + visualization: roads.style + data: + tif: + blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/800pixkm_luforoads/800pixkm_luforoads.vrt + offsite: "#978E97" + resample: BILINEAR + - name: luchtfotoroads_1600pixkm + visible: true + title: Luchtfoto roads 1600pixkm + group: lufolabels + abstract: "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto." + keywords: + - bzk + - luchtfotolabels + datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28 + sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611 + minScale: 1501 + maxScale: 3001 + styles: + - name: luchtfotolabels + title: Luchtfotolabels + visualization: roads.style + data: + tif: + blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/1600pixkm_luforoads/1600pixkm_luforoads.vrt + offsite: "#978E97" + resample: BILINEAR + - name: luchtfotolabels_100pixkm + visible: true + title: Luchtfoto labels 100pixkm + group: lufolabels + abstract: "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto." + keywords: + - bzk + - luchtfotolabels + datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28 + sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611 + minScale: 24001 + maxScale: 48001 + styles: + - name: luchtfotolabels + title: Luchtfotolabels + visualization: labels.style + data: + tif: + blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/100pixkm_lufolabels/100pixkm_lufolabels.vrt + offsite: "#978E97" + resample: BILINEAR + - name: luchtfotolabels_200pixkm + visible: true + title: Luchtfoto labels 200pixkm + group: lufolabels + abstract: "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto." + keywords: + - bzk + - luchtfotolabels + datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28 + sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611 + minScale: 12001 + maxScale: 24001 + styles: + - name: luchtfotolabels + title: Luchtfotolabels + visualization: labels.style + data: + tif: + blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/200pixkm_lufolabels/200pixkm_lufolabels.vrt + offsite: "#978E97" + resample: BILINEAR + - name: luchtfotolabels_400pixkm + visible: true + title: Luchtfoto labels 400pixkm + group: lufolabels + abstract: "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto." + keywords: + - bzk + - luchtfotolabels + datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28 + sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611 + minScale: 6001 + maxScale: 12001 + styles: + - name: luchtfotolabels + title: Luchtfotolabels + visualization: labels.style + data: + tif: + blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/400pixkm_lufolabels/400pixkm_lufolabels.vrt + offsite: "#978E97" + resample: BILINEAR + - name: luchtfotolabels_800pixkm + visible: true + title: Luchtfoto labels 800pixkm + group: lufolabels + abstract: "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto." + keywords: + - bzk + - luchtfotolabels + datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28 + sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611 + minScale: 3001 + maxScale: 6001 + styles: + - name: luchtfotolabels + title: Luchtfotolabels + visualization: labels.style + data: + tif: + blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/800pixkm_lufolabels/800pixkm_lufolabels.vrt + offsite: "#978E97" + resample: BILINEAR + - name: luchtfotolabels_1600pixkm + visible: true + title: Luchtfoto labels 1600pixkm + group: lufolabels + abstract: "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto." + keywords: + - bzk + - luchtfotolabels + datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28 + sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611 + minScale: 1501 + maxScale: 3001 + styles: + - name: luchtfotolabels + title: Luchtfotolabels + visualization: labels.style + data: + tif: + blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/1600pixkm_lufolabels/1600pixkm_lufolabels.vrt + offsite: "#978E97" + resample: BILINEAR + - name: luchtfotolabels_3200pixkm + visible: true + title: Luchtfoto labels 3200pixkm + group: lufolabels + abstract: "De luchtfoto labels bestaan uit weglabels en wegassen en kunnen worden gebruikt als laag (overlay) op onder andere de PDOK luchtfoto." + keywords: + - bzk + - luchtfotolabels + datasetMetadataIdentifier: 6ca22f53-b072-42f4-b920-104c7c83cd28 + sourceMetadataIdentifier: 901647c2-802d-11e6-ae22-56b6b6499611 + maxScale: 1501 + styles: + - name: luchtfotolabels + title: Luchtfotolabels + visualization: labels.style + data: + tif: + blobKey: tifs/bzk/luchtfotolabels/${GPKG_VERSION}/3200pixkm_lufolabels/3200pixkm_lufolabels.vrt + offsite: "#978E97" + resample: BILINEAR diff --git a/internal/controller/ogcwebserviceproxy/ogc_webservice_proxy.go b/internal/controller/ogcwebserviceproxy/ogc_webservice_proxy.go index cb72ace..10512d8 100644 --- a/internal/controller/ogcwebserviceproxy/ogc_webservice_proxy.go +++ b/internal/controller/ogcwebserviceproxy/ogc_webservice_proxy.go @@ -39,10 +39,10 @@ func getCommand(wms *pdoknlv3.WMS) []string { "-s=/input/service-config.yaml", } - if wms.Spec.Options.ValidateRequests { + if wms.Options().ValidateRequests { command = append(command, "-v") } - if wms.Spec.Options.RewriteGroupToDataLayers { + if wms.Options().RewriteGroupToDataLayers { command = append(command, "-r") } diff --git a/internal/controller/shared_controller.go b/internal/controller/shared_controller.go index b93b3e5..3c2f503 100644 --- a/internal/controller/shared_controller.go +++ b/internal/controller/shared_controller.go @@ -278,7 +278,7 @@ func getInitContainerForDeployment[R Reconciler, O pdoknlv3.WMSWFS](r R, obj O) } initContainers = append(initContainers, *featureInfoInitContainer) - if wms.Spec.Options.RewriteGroupToDataLayers { + if wms.Options().RewriteGroupToDataLayers { legendFixerInitContainer := legendgenerator.GetLegendFixerInitContainer(images.MultitoolImage) initContainers = append(initContainers, *legendFixerInitContainer) }