Documentation ¶
Index ¶
- Constants
- Variables
- func LowercaseID(fl validator.FieldLevel) bool
- type AdditionalDatasource
- type CollectionEntry3dGeoVolumes
- type CollectionEntryFeatures
- type CollectionEntryTiles
- type CollectionLinks
- type Config
- func (c *Config) AllCollections() GeoSpatialCollections
- func (c *Config) CookieMaxAge() int
- func (in *Config) DeepCopy() *Config
- func (in *Config) DeepCopyInto(out *Config)
- func (c *Config) HasCollections() bool
- func (c *Config) UnmarshalJSON(b []byte) error
- func (c *Config) UnmarshalYAML(unmarshal func(interface{}) error) error
- type DatasetDetail
- type Datasource
- type Datasources
- type DownloadLink
- type Duration
- func (d *Duration) DeepCopy() *Duration
- func (d *Duration) DeepCopyInto(out *Duration)
- func (d Duration) MarshalJSON() ([]byte, error)
- func (d Duration) MarshalYAML() (interface{}, error)
- func (d *Duration) UnmarshalJSON(b []byte) error
- func (d *Duration) UnmarshalYAML(unmarshal func(any) error) error
- type Extent
- type FeatureFilters
- type FeatureProperties
- type FeaturesViewer
- type GeoPackage
- type GeoPackageCloud
- type GeoPackageCloudCache
- type GeoPackageCommon
- type GeoPackageDownload
- type GeoPackageLocal
- type GeoSpatialCollection
- func (in *GeoSpatialCollection) DeepCopy() *GeoSpatialCollection
- func (in *GeoSpatialCollection) DeepCopyInto(out *GeoSpatialCollection)
- func (c *GeoSpatialCollection) HasDateTime() bool
- func (c GeoSpatialCollection) MarshalJSON() ([]byte, error)
- func (c *GeoSpatialCollection) UnmarshalJSON(b []byte) error
- type GeoSpatialCollectionJSON
- type GeoSpatialCollectionMetadata
- type GeoSpatialCollections
- type HealthCheck
- type Language
- type License
- type Limit
- type MapSheetDownloadProperties
- type MapSheetDownloads
- type MediaType
- func (m *MediaType) DeepCopy() *MediaType
- func (m *MediaType) DeepCopyInto(out *MediaType)
- func (m MediaType) MarshalJSON() ([]byte, error)
- func (m MediaType) MarshalYAML() (interface{}, error)
- func (m *MediaType) UnmarshalJSON(b []byte) error
- func (m *MediaType) UnmarshalYAML(unmarshal func(any) error) error
- type MetadataLink
- type OgcAPI
- type OgcAPI3dGeoVolumes
- type OgcAPIFeatures
- type OgcAPIProcesses
- type OgcAPIStyles
- type OgcAPITiles
- type PostGIS
- type PropertyFilter
- type Resources
- type Style
- type StyleFormat
- type Support
- type SupportedSrs
- type TemporalProperties
- type TileCoordinates
- type Tiles
- type TilesType
- type URL
- type WebConfig
- type ZoomLevelRange
Constants ¶
const ( CookieMaxAge = 60 * 60 * 24 DefaultSrs = "EPSG:28992" )
Variables ¶
var AllTileProjections = map[string]string{
"EPSG:28992": "NetherlandsRDNewQuad",
"EPSG:3035": "EuropeanETRS89_LAEAQuad",
"EPSG:3857": "WebMercatorQuad",
}
AllTileProjections projections supported by GoKoala for serving (vector) tiles, regardless of the dataset. When adding a new projection also add corresponding HTML/JSON templates.
var HealthCheckDefaultTiles = map[int]TileCoordinates{ 0: {/* contains filtered or unexported fields */}, 1: {/* contains filtered or unexported fields */}, 2: {/* contains filtered or unexported fields */}, 3: {/* contains filtered or unexported fields */}, 4: {/* contains filtered or unexported fields */}, 5: {/* contains filtered or unexported fields */}, 6: {/* contains filtered or unexported fields */}, 7: {/* contains filtered or unexported fields */}, 8: {/* contains filtered or unexported fields */}, 9: {/* contains filtered or unexported fields */}, 10: {/* contains filtered or unexported fields */}, 11: {/* contains filtered or unexported fields */}, 12: {/* contains filtered or unexported fields */}, 13: {/* contains filtered or unexported fields */}, 14: {/* contains filtered or unexported fields */}, 15: {/* contains filtered or unexported fields */}, 16: {/* contains filtered or unexported fields */}, }
default tiles for EPSG:28992 - location centered just outside a village in the province of Friesland
Functions ¶
func LowercaseID ¶ added in v0.60.0
func LowercaseID(fl validator.FieldLevel) bool
LowercaseID is the validation function for validating if the current field is not empty and contains only lowercase chars, numbers, hyphens or underscores. It's similar to RFC 1035 DNS label but not the same.
Types ¶
type AdditionalDatasource ¶
type AdditionalDatasource struct { // Projection (SRS/CRS) used for the features in this datasource // +kubebuilder:validation:Pattern=`^EPSG:\d+$` Srs string `yaml:"srs" json:"srs" validate:"required,startswith=EPSG:"` // The additional datasource Datasource `yaml:",inline" json:",inline"` }
+kubebuilder:object:generate=true
func (*AdditionalDatasource) DeepCopy ¶
func (in *AdditionalDatasource) DeepCopy() *AdditionalDatasource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdditionalDatasource.
func (*AdditionalDatasource) DeepCopyInto ¶
func (in *AdditionalDatasource) DeepCopyInto(out *AdditionalDatasource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CollectionEntry3dGeoVolumes ¶
type CollectionEntry3dGeoVolumes struct { // Optional basepath to 3D tiles on the tileserver. Defaults to the collection ID. // +optional TileServerPath *string `yaml:"tileServerPath,omitempty" json:"tileServerPath,omitempty"` // URI template for individual 3D tiles. // +optional URITemplate3dTiles *string `yaml:"uriTemplate3dTiles,omitempty" json:"uriTemplate3dTiles,omitempty" validate:"required_without_all=URITemplateDTM"` // Optional URI template for subtrees, only required when "implicit tiling" extension is used. // +optional URITemplateImplicitTilingSubtree *string `yaml:"uriTemplateImplicitTilingSubtree,omitempty" json:"uriTemplateImplicitTilingSubtree,omitempty"` // URI template for digital terrain model (DTM) in Quantized Mesh format, REQUIRED when you want to serve a DTM. // +optional URITemplateDTM *string `yaml:"uriTemplateDTM,omitempty" json:"uriTemplateDTM,omitempty" validate:"required_without_all=URITemplate3dTiles"` //nolint:tagliatelle // grandfathered // Optional URL to 3D viewer to visualize the given collection of 3D Tiles. // +optional URL3DViewer *URL `yaml:"3dViewerUrl,omitempty" json:"3dViewerUrl,omitempty"` }
+kubebuilder:object:generate=true
func (*CollectionEntry3dGeoVolumes) DeepCopy ¶
func (in *CollectionEntry3dGeoVolumes) DeepCopy() *CollectionEntry3dGeoVolumes
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CollectionEntry3dGeoVolumes.
func (*CollectionEntry3dGeoVolumes) DeepCopyInto ¶
func (in *CollectionEntry3dGeoVolumes) DeepCopyInto(out *CollectionEntry3dGeoVolumes)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*CollectionEntry3dGeoVolumes) Has3DTiles ¶
func (gv *CollectionEntry3dGeoVolumes) Has3DTiles() bool
func (*CollectionEntry3dGeoVolumes) HasDTM ¶
func (gv *CollectionEntry3dGeoVolumes) HasDTM() bool
type CollectionEntryFeatures ¶
type CollectionEntryFeatures struct { // Optional way to explicitly map a collection ID to the underlying table in the datasource. // +optional TableName *string `yaml:"tableName,omitempty" json:"tableName,omitempty"` // Optional collection specific datasources. Mutually exclusive with top-level defined datasources. // +optional Datasources *Datasources `yaml:"datasources,omitempty" json:"datasources,omitempty"` // Filters available for this collection // +optional Filters FeatureFilters `yaml:"filters,omitempty" json:"filters,omitempty"` // Optional way to exclude feature properties and/or determine the ordering of properties in the response. // +optional FeatureProperties *FeatureProperties `yaml:",inline" json:",inline"` // Downloads available for this collection through map sheets. Note that 'map sheets' refer to a map // divided in rectangle areas that can be downloaded individually. // +optional MapSheetDownloads *MapSheetDownloads `yaml:"mapSheetDownloads,omitempty" json:"mapSheetDownloads,omitempty"` // Configuration specifically related to HTML/Web representation // +optional Web *WebConfig `yaml:"web,omitempty" json:"web,omitempty"` }
+kubebuilder:object:generate=true
func (*CollectionEntryFeatures) DeepCopy ¶
func (in *CollectionEntryFeatures) DeepCopy() *CollectionEntryFeatures
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CollectionEntryFeatures.
func (*CollectionEntryFeatures) DeepCopyInto ¶
func (in *CollectionEntryFeatures) DeepCopyInto(out *CollectionEntryFeatures)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CollectionEntryTiles ¶
type CollectionEntryTiles struct { // Tiles specific to this collection. Called 'geodata tiles' in OGC spec. GeoDataTiles Tiles `yaml:",inline" json:",inline" validate:"required"` }
+kubebuilder:object:generate=true
func (*CollectionEntryTiles) DeepCopy ¶
func (in *CollectionEntryTiles) DeepCopy() *CollectionEntryTiles
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CollectionEntryTiles.
func (*CollectionEntryTiles) DeepCopyInto ¶
func (in *CollectionEntryTiles) DeepCopyInto(out *CollectionEntryTiles)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CollectionLinks ¶ added in v0.51.0
type CollectionLinks struct { // Links to downloads of entire collection. These will be rendered as rel=enclosure links // +optional Downloads []DownloadLink `yaml:"downloads,omitempty" json:"downloads,omitempty" validate:"dive"` }
+kubebuilder:object:generate=true
func (*CollectionLinks) DeepCopy ¶ added in v0.51.0
func (in *CollectionLinks) DeepCopy() *CollectionLinks
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CollectionLinks.
func (*CollectionLinks) DeepCopyInto ¶ added in v0.51.0
func (in *CollectionLinks) DeepCopyInto(out *CollectionLinks)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Config ¶
type Config struct { // Version of the API. When releasing a new version which contains backwards-incompatible changes, a new major version must be released. Version string `yaml:"version" json:"version" validate:"required,semver"` // Human friendly title of the API. Don't include "OGC API" in the title, this is added automatically. Title string `yaml:"title" json:"title" validate:"required"` // Shorted title / abbreviation describing the API. ServiceIdentifier string `yaml:"serviceIdentifier" json:"serviceIdentifier" validate:"required"` // Human friendly description of the API and dataset. Abstract string `yaml:"abstract" json:"abstract" validate:"required"` // Licensing term that apply to this API and dataset License License `yaml:"license" json:"license" validate:"required"` // The base URL - that's the part until the OGC API landing page - under which this API is served BaseURL URL `yaml:"baseUrl" json:"baseUrl" validate:"required"` // Optional reference to a catalog/portal/registry that lists all datasets, not just this one // +optional DatasetCatalogURL URL `yaml:"datasetCatalogUrl,omitempty" json:"datasetCatalogUrl,omitempty"` // The languages/translations to offer, valid options are Dutch (nl) and English (en). Dutch is the default. // +optional AvailableLanguages []Language `yaml:"availableLanguages,omitempty" json:"availableLanguages,omitempty"` // Define which OGC API building blocks this API supports OgcAPI OgcAPI `yaml:"ogcApi" json:"ogcApi" validate:"required"` // Order in which collections (containing features, tiles, 3d tiles, etc.) should be returned. // When not specified collections are returned in alphabetic order. // +optional OgcAPICollectionOrder []string `yaml:"collectionOrder,omitempty" json:"collectionOrder,omitempty"` // Reference to a PNG image to use a thumbnail on the landing page. // The full path is constructed by appending Resources + Thumbnail. // +optional Thumbnail *string `yaml:"thumbnail,omitempty" json:"thumbnail,omitempty"` // Keywords to make this API beter discoverable // +optional Keywords []string `yaml:"keywords,omitempty" json:"keywords,omitempty"` // Moment in time when the dataset was last updated // +optional // +kubebuilder:validation:Type=string // +kubebuilder:validation:Format="date-time" LastUpdated *string `yaml:"lastUpdated,omitempty" json:"lastUpdated,omitempty" validate:"omitempty,datetime=2006-01-02T15:04:05Z"` // Who updated the dataset // +optional LastUpdatedBy string `yaml:"lastUpdatedBy,omitempty" json:"lastUpdatedBy,omitempty"` // Available support channels // +optional Support *Support `yaml:"support,omitempty" json:"support,omitempty"` // Metadata links // +optional MetadataLinks []MetadataLink `yaml:"metadataLinks,omitempty" json:"metadataLinks,omitempty"` // Key/value pairs to add extra information to the landing page // +optional DatasetDetails []DatasetDetail `yaml:"datasetDetails,omitempty" json:"datasetDetails,omitempty"` // Location where resources (e.g. thumbnails) specific to the given dataset are hosted // +optional Resources *Resources `yaml:"resources,omitempty" json:"resources,omitempty"` }
+kubebuilder:object:generate=true
func (*Config) AllCollections ¶
func (c *Config) AllCollections() GeoSpatialCollections
AllCollections get all collections - with for example features, tiles, 3d tiles - offered through this OGC API. Results are returned in alphabetic or literal order.
func (*Config) CookieMaxAge ¶
func (*Config) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Config.
func (*Config) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Config) HasCollections ¶
HasCollections does this API offer collections with for example features, tiles, 3d tiles, etc
func (*Config) UnmarshalJSON ¶
func (*Config) UnmarshalYAML ¶
UnmarshalYAML hooks into unmarshalling to set defaults and validate config
type DatasetDetail ¶
type DatasetDetail struct { // Arbitrary name to add extra information to the landing page Name string `yaml:"name" json:"name"` // Arbitrary value associated with the given name Value string `yaml:"value" json:"value"` }
+kubebuilder:object:generate=true
func (*DatasetDetail) DeepCopy ¶
func (in *DatasetDetail) DeepCopy() *DatasetDetail
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatasetDetail.
func (*DatasetDetail) DeepCopyInto ¶
func (in *DatasetDetail) DeepCopyInto(out *DatasetDetail)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Datasource ¶
type Datasource struct { // GeoPackage to get the features from. // +optional GeoPackage *GeoPackage `yaml:"geopackage,omitempty" json:"geopackage,omitempty" validate:"required_without_all=PostGIS"` // PostGIS database to get the features from (not implemented yet). // +optional PostGIS *PostGIS `yaml:"postgis,omitempty" json:"postgis,omitempty" validate:"required_without_all=GeoPackage"` }
+kubebuilder:object:generate=true
func (*Datasource) DeepCopy ¶
func (in *Datasource) DeepCopy() *Datasource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Datasource.
func (*Datasource) DeepCopyInto ¶
func (in *Datasource) DeepCopyInto(out *Datasource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Datasources ¶
type Datasources struct { // Features should always be available in WGS84 (according to spec). // This specifies the datasource to be used for features in the WGS84 projection DefaultWGS84 Datasource `yaml:"defaultWGS84" json:"defaultWGS84" validate:"required"` //nolint:tagliatelle // grandfathered // One or more additional datasources for features in other projections. GoKoala doesn't do // any on-the-fly reprojection so additional datasources need to be reprojected ahead of time. // +optional Additional []AdditionalDatasource `yaml:"additional" json:"additional" validate:"dive"` }
+kubebuilder:object:generate=true
func (*Datasources) DeepCopy ¶
func (in *Datasources) DeepCopy() *Datasources
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Datasources.
func (*Datasources) DeepCopyInto ¶
func (in *Datasources) DeepCopyInto(out *Datasources)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type DownloadLink ¶ added in v0.51.0
type DownloadLink struct { // Name of the provided download Name string `yaml:"name" json:"name" validate:"required"` // Full URL to the file to be downloaded AssetURL *URL `yaml:"assetUrl" json:"assetUrl" validate:"required"` // Approximate size of the file to be downloaded // +optional Size string `yaml:"size,omitempty" json:"size,omitempty"` // Media type of the file to be downloaded MediaType MediaType `yaml:"mediaType" json:"mediaType" validate:"required"` }
+kubebuilder:object:generate=true
func (*DownloadLink) DeepCopy ¶ added in v0.51.0
func (in *DownloadLink) DeepCopy() *DownloadLink
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DownloadLink.
func (*DownloadLink) DeepCopyInto ¶ added in v0.51.0
func (in *DownloadLink) DeepCopyInto(out *DownloadLink)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Duration ¶
Duration Custom time.Duration compatible with YAML and JSON (un)marshalling and kubebuilder. (Already supported in yaml/v3 but not encoding/json.)
+kubebuilder:validation:Type=string +kubebuilder:validation:Format=duration
func (*Duration) DeepCopyInto ¶
DeepCopyInto copy the receiver, write into out. in must be non-nil.
func (Duration) MarshalJSON ¶
MarshalJSON turn duration tag into JSON Value instead of pointer receiver because only that way it can be used for both.
func (Duration) MarshalYAML ¶
MarshalYAML turn duration tag into YAML Value instead of pointer receiver because only that way it can be used for both.
func (*Duration) UnmarshalJSON ¶
type Extent ¶
type Extent struct { // Projection (SRS/CRS) to be used. When none is provided WGS84 (http://www.opengis.net/def/crs/OGC/1.3/CRS84) is used. // +optional // +kubebuilder:validation:Pattern=`^EPSG:\d+$` Srs string `yaml:"srs,omitempty" json:"srs,omitempty" validate:"omitempty,startswith=EPSG:"` // Geospatial extent Bbox []string `yaml:"bbox" json:"bbox"` // Temporal extent // +optional // +kubebuilder:validation:MinItems=2 // +kubebuilder:validation:MaxItems=2 Interval []string `yaml:"interval,omitempty" json:"interval,omitempty" validate:"omitempty,len=2"` }
+kubebuilder:object:generate=true
func (*Extent) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Extent.
func (*Extent) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FeatureFilters ¶
type FeatureFilters struct { // OAF Part 1: filter on feature properties // https://docs.ogc.org/is/17-069r4/17-069r4.html#_parameters_for_filtering_on_feature_properties // // +optional Properties []PropertyFilter `yaml:"properties,omitempty" json:"properties,omitempty" validate:"dive"` }
+kubebuilder:object:generate=true
func (*FeatureFilters) DeepCopy ¶
func (in *FeatureFilters) DeepCopy() *FeatureFilters
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FeatureFilters.
func (*FeatureFilters) DeepCopyInto ¶
func (in *FeatureFilters) DeepCopyInto(out *FeatureFilters)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FeatureProperties ¶ added in v0.56.0
type FeatureProperties struct { // Properties/fields of features in this collection. This setting controls two things: // // A) allows one to exclude certain properties, when propertiesExcludeUnknown=true // B) allows one sort the properties in the given order, when propertiesInSpecificOrder=true // // When not set all available properties are returned in API responses, in alphabetical order. // +optional Properties []string `yaml:"properties,omitempty" json:"properties,omitempty"` // When true properties not listed under 'properties' are excluded from API responses. When false // unlisted properties are also included in API responses. // +optional // +kubebuilder:default=false PropertiesExcludeUnknown bool `yaml:"propertiesExcludeUnknown,omitempty" json:"propertiesExcludeUnknown,omitempty" default:"false"` // When true properties are returned according to the ordering specified under 'properties'. When false // properties are returned in alphabetical order. // +optional // +kubebuilder:default=false PropertiesInSpecificOrder bool `yaml:"propertiesInSpecificOrder,omitempty" json:"propertiesInSpecificOrder,omitempty" default:"false"` }
+kubebuilder:object:generate=true
func (*FeatureProperties) DeepCopy ¶ added in v0.56.0
func (in *FeatureProperties) DeepCopy() *FeatureProperties
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FeatureProperties.
func (*FeatureProperties) DeepCopyInto ¶ added in v0.56.0
func (in *FeatureProperties) DeepCopyInto(out *FeatureProperties)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type FeaturesViewer ¶ added in v0.53.4
type FeaturesViewer struct { // Maximum initial zoom level of the viewer when rendering features, specified by scale denominator. // Defaults to 1000 (= scale 1:1000). // +optional MinScale int `yaml:"minScale,omitempty" json:"minScale,omitempty" validate:"gt=0" default:"1000"` // Minimal initial zoom level of the viewer when rendering features, specified by scale denominator // (not set by default). // +optional MaxScale *int `yaml:"maxScale,omitempty" json:"maxScale,omitempty" validate:"omitempty,gt=0,gtefield=MinScale"` }
+kubebuilder:object:generate=true
func (*FeaturesViewer) DeepCopy ¶ added in v0.53.4
func (in *FeaturesViewer) DeepCopy() *FeaturesViewer
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FeaturesViewer.
func (*FeaturesViewer) DeepCopyInto ¶ added in v0.53.4
func (in *FeaturesViewer) DeepCopyInto(out *FeaturesViewer)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GeoPackage ¶
type GeoPackage struct { // Settings to read a GeoPackage from local disk // +optional Local *GeoPackageLocal `yaml:"local,omitempty" json:"local,omitempty" validate:"required_without_all=Cloud"` // Settings to read a GeoPackage as a Cloud-Backed SQLite database // +optional Cloud *GeoPackageCloud `yaml:"cloud,omitempty" json:"cloud,omitempty" validate:"required_without_all=Local"` }
+kubebuilder:object:generate=true
func (*GeoPackage) DeepCopy ¶
func (in *GeoPackage) DeepCopy() *GeoPackage
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoPackage.
func (*GeoPackage) DeepCopyInto ¶
func (in *GeoPackage) DeepCopyInto(out *GeoPackage)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GeoPackageCloud ¶
type GeoPackageCloud struct { // GeoPackageCommon shared config between local and cloud GeoPackage GeoPackageCommon `yaml:",inline" json:",inline"` // Reference to the cloud storage (either azure or google at the moment). // For example 'azure?emulator=127.0.0.1:10000&sas=0' or 'google' Connection string `yaml:"connection" json:"connection" validate:"required"` // Username of the storage account, like devstoreaccount1 when using Azurite User string `yaml:"user" json:"user" validate:"required"` // Some kind of credential like a password or key to authenticate with the storage backend, e.g: // 'Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==' when using Azurite Auth string `yaml:"auth" json:"auth" validate:"required"` // Container/bucket on the storage account Container string `yaml:"container" json:"container" validate:"required"` // Filename of the GeoPackage File string `yaml:"file" json:"file" validate:"required"` // Local cache of fetched blocks from cloud storage // +optional Cache GeoPackageCloudCache `yaml:"cache,omitempty" json:"cache,omitempty"` // ADVANCED SETTING. Only for debug purposes! When true all HTTP requests executed by sqlite to cloud object storage are logged to stdout // +kubebuilder:default=false // +optional LogHTTPRequests bool `yaml:"logHttpRequests,omitempty" json:"logHttpRequests,omitempty" default:"false"` }
+kubebuilder:object:generate=true
func (*GeoPackageCloud) CacheDir ¶
func (gc *GeoPackageCloud) CacheDir() (string, error)
func (*GeoPackageCloud) DeepCopy ¶
func (in *GeoPackageCloud) DeepCopy() *GeoPackageCloud
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoPackageCloud.
func (*GeoPackageCloud) DeepCopyInto ¶
func (in *GeoPackageCloud) DeepCopyInto(out *GeoPackageCloud)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GeoPackageCloudCache ¶
type GeoPackageCloudCache struct { // Optional path to directory for caching cloud-backed GeoPackage blocks, when omitted a temp dir will be used. // +optional Path *string `yaml:"path,omitempty" json:"path,omitempty" validate:"omitempty,dirpath|filepath"` // Max size of the local cache. Accepts human-readable size such as 100Mb, 4Gb, 1Tb, etc. When omitted 1Gb is used. // +kubebuilder:default="1Gb" // +optional MaxSize string `yaml:"maxSize,omitempty" json:"maxSize,omitempty" default:"1Gb"` // When true a warm-up query is executed on startup which aims to fill the local cache. Does increase startup time. // +kubebuilder:default=false // +optional WarmUp bool `yaml:"warmUp,omitempty" json:"warmUp,omitempty" default:"false"` }
+kubebuilder:object:generate=true
func (*GeoPackageCloudCache) DeepCopy ¶
func (in *GeoPackageCloudCache) DeepCopy() *GeoPackageCloudCache
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoPackageCloudCache.
func (*GeoPackageCloudCache) DeepCopyInto ¶
func (in *GeoPackageCloudCache) DeepCopyInto(out *GeoPackageCloudCache)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*GeoPackageCloudCache) MaxSizeAsBytes ¶
func (cache *GeoPackageCloudCache) MaxSizeAsBytes() (int64, error)
type GeoPackageCommon ¶
type GeoPackageCommon struct { // Feature id column name // +kubebuilder:default="fid" // +optional Fid string `yaml:"fid,omitempty" json:"fid,omitempty" validate:"required" default:"fid"` // External feature id column name. When specified this ID column will be exposed to clients instead of the regular FID column. // It allows one to offer a more stable ID to clients instead of an auto-generated FID. External FID column should contain UUIDs. // +optional ExternalFid string `yaml:"externalFid" json:"externalFid"` // Optional timeout after which queries are canceled // +kubebuilder:default="15s" // +optional QueryTimeout Duration `yaml:"queryTimeout,omitempty" json:"queryTimeout,omitempty" validate:"required" default:"15s"` // ADVANCED SETTING. When the number of features in a bbox stay within the given value use an RTree index, otherwise use a BTree index. // +kubebuilder:default=8000 // +optional MaxBBoxSizeToUseWithRTree int `yaml:"maxBBoxSizeToUseWithRTree,omitempty" json:"maxBBoxSizeToUseWithRTree,omitempty" validate:"required" default:"8000"` // ADVANCED SETTING. Sets the SQLite "cache_size" pragma which determines how many pages are cached in-memory. // See https://sqlite.org/pragma.html#pragma_cache_size for details. // Default in SQLite is 2000 pages, which equates to 2000KiB (2048000 bytes). Which is denoted as -2000. // +kubebuilder:default=-2000 // +optional InMemoryCacheSize int `yaml:"inMemoryCacheSize,omitempty" json:"inMemoryCacheSize,omitempty" validate:"required" default:"-2000"` }
+kubebuilder:object:generate=true
func (*GeoPackageCommon) DeepCopy ¶
func (in *GeoPackageCommon) DeepCopy() *GeoPackageCommon
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoPackageCommon.
func (*GeoPackageCommon) DeepCopyInto ¶
func (in *GeoPackageCommon) DeepCopyInto(out *GeoPackageCommon)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GeoPackageDownload ¶ added in v0.50.2
type GeoPackageDownload struct { // Location of GeoPackage on remote HTTP(S) URL. GeoPackage will be downloaded to local disk // during startup and stored at the location specified in "file". From URL `yaml:"from" json:"from" validate:"required"` // ADVANCED SETTING. Determines how many workers (goroutines) in parallel will download the specified GeoPackage. // Setting this to 1 will disable concurrent downloads. // +kubebuilder:default=4 // +kubebuilder:validation:Minimum=1 // +optional Parallelism int `yaml:"parallelism,omitempty" json:"parallelism,omitempty" validate:"required,gte=1" default:"4"` // ADVANCED SETTING. When true TLS certs are NOT validated, false otherwise. Only use true for your own self-signed certificates! // +kubebuilder:default=false // +optional TLSSkipVerify bool `yaml:"tlsSkipVerify,omitempty" json:"tlsSkipVerify,omitempty" default:"false"` // ADVANCED SETTING. HTTP request timeout when downloading (part of) GeoPackage. // +kubebuilder:default="2m" // +optional Timeout Duration `yaml:"timeout,omitempty" json:"timeout,omitempty" validate:"required" default:"2m"` // ADVANCED SETTING. Minimum delay to use when retrying HTTP request to download (part of) GeoPackage. // +kubebuilder:default="1s" // +optional RetryDelay Duration `yaml:"retryDelay,omitempty" json:"retryDelay,omitempty" validate:"required" default:"1s"` // ADVANCED SETTING. Maximum overall delay of the exponential backoff while retrying HTTP requests to download (part of) GeoPackage. // +kubebuilder:default="30s" // +optional RetryMaxDelay Duration `yaml:"retryMaxDelay,omitempty" json:"retryMaxDelay,omitempty" validate:"required" default:"30s"` // ADVANCED SETTING. Maximum number of retries when retrying HTTP requests to download (part of) GeoPackage. // +kubebuilder:default=5 // +kubebuilder:validation:Minimum=1 // +optional MaxRetries int `yaml:"maxRetries,omitempty" json:"maxRetries,omitempty" validate:"required,gte=1" default:"5"` }
+kubebuilder:object:generate=true
func (*GeoPackageDownload) DeepCopy ¶ added in v0.50.2
func (in *GeoPackageDownload) DeepCopy() *GeoPackageDownload
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoPackageDownload.
func (*GeoPackageDownload) DeepCopyInto ¶ added in v0.50.2
func (in *GeoPackageDownload) DeepCopyInto(out *GeoPackageDownload)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GeoPackageLocal ¶
type GeoPackageLocal struct { // GeoPackageCommon shared config between local and cloud GeoPackage GeoPackageCommon `yaml:",inline" json:",inline"` // Location of GeoPackage on disk. // You can place the GeoPackage here manually (out-of-band) or you can specify Download // and let the application download the GeoPackage for you and store it at this location. File string `yaml:"file" json:"file" validate:"required,omitempty,filepath"` // Optional initialization task to download a GeoPackage during startup. GeoPackage will be // downloaded to local disk and stored at the location specified in File. // +optional Download *GeoPackageDownload `yaml:"download,omitempty" json:"download,omitempty"` }
+kubebuilder:object:generate=true
func (*GeoPackageLocal) DeepCopy ¶
func (in *GeoPackageLocal) DeepCopy() *GeoPackageLocal
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoPackageLocal.
func (*GeoPackageLocal) DeepCopyInto ¶
func (in *GeoPackageLocal) DeepCopyInto(out *GeoPackageLocal)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GeoSpatialCollection ¶
type GeoSpatialCollection struct { // Unique ID of the collection // +kubebuilder:validation:Pattern=`^[a-z0-9"]([a-z0-9_-]*[a-z0-9"]+|)$` ID string `yaml:"id" validate:"required,lowercase_id" json:"id"` // Metadata describing the collection contents // +optional Metadata *GeoSpatialCollectionMetadata `yaml:"metadata,omitempty" json:"metadata,omitempty"` // Links pertaining to this collection (e.g., downloads, documentation) // +optional Links *CollectionLinks `yaml:"links,omitempty" json:"links,omitempty"` // 3D GeoVolumes specific to this collection // +optional GeoVolumes *CollectionEntry3dGeoVolumes `yaml:",inline" json:",inline"` // Tiles specific to this collection // +optional Tiles *CollectionEntryTiles `yaml:",inline" json:",inline"` // Features specific to this collection // +optional Features *CollectionEntryFeatures `yaml:",inline" json:",inline"` }
+kubebuilder:object:generate=true
func (*GeoSpatialCollection) DeepCopy ¶
func (in *GeoSpatialCollection) DeepCopy() *GeoSpatialCollection
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoSpatialCollection.
func (*GeoSpatialCollection) DeepCopyInto ¶
func (in *GeoSpatialCollection) DeepCopyInto(out *GeoSpatialCollection)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*GeoSpatialCollection) HasDateTime ¶ added in v0.57.3
func (c *GeoSpatialCollection) HasDateTime() bool
HasDateTime true when collection has temporal support, false otherwise
func (GeoSpatialCollection) MarshalJSON ¶ added in v0.43.7
func (c GeoSpatialCollection) MarshalJSON() ([]byte, error)
MarshalJSON custom because inlining only works on embedded structs. Value instead of pointer receiver because only that way it can be used for both.
func (*GeoSpatialCollection) UnmarshalJSON ¶ added in v0.43.7
func (c *GeoSpatialCollection) UnmarshalJSON(b []byte) error
UnmarshalJSON parses a string to GeoSpatialCollection
type GeoSpatialCollectionJSON ¶ added in v0.43.7
type GeoSpatialCollectionJSON struct { // Keep this in sync with the GeoSpatialCollection struct! ID string `json:"id"` Metadata *GeoSpatialCollectionMetadata `json:"metadata,omitempty"` Links *CollectionLinks `json:"links,omitempty"` *CollectionEntry3dGeoVolumes `json:",inline"` *CollectionEntryTiles `json:",inline"` *CollectionEntryFeatures `json:",inline"` }
type GeoSpatialCollectionMetadata ¶
type GeoSpatialCollectionMetadata struct { // Human friendly title of this collection. When no title is specified the collection ID is used. // +optional Title *string `yaml:"title,omitempty" json:"title,omitempty"` // Describes the content of this collection Description *string `yaml:"description" json:"description" validate:"required"` // Reference to a PNG image to use a thumbnail on the collections. // The full path is constructed by appending Resources + Thumbnail. // +optional Thumbnail *string `yaml:"thumbnail,omitempty" json:"thumbnail,omitempty"` // Keywords to make this collection beter discoverable // +optional Keywords []string `yaml:"keywords,omitempty" json:"keywords,omitempty"` // Moment in time when the collection was last updated // // +optional // +kubebuilder:validation:Type=string // +kubebuilder:validation:Format="date-time" LastUpdated *string `yaml:"lastUpdated,omitempty" json:"lastUpdated,omitempty" validate:"omitempty,datetime=2006-01-02T15:04:05Z"` // Who updated this collection // +optional LastUpdatedBy string `yaml:"lastUpdatedBy,omitempty" json:"lastUpdatedBy,omitempty"` // Fields in the datasource to be used in temporal queries // +optional TemporalProperties *TemporalProperties `yaml:"temporalProperties,omitempty" json:"temporalProperties,omitempty" validate:"omitempty,required_with=Extent.Interval"` // Extent of the collection, both geospatial and/or temporal // +optional Extent *Extent `yaml:"extent,omitempty" json:"extent,omitempty"` // The CRS identifier which the features are originally stored, meaning no CRS transformations are applied when features are retrieved in this CRS. // WGS84 is the default storage CRS. // // +kubebuilder:default="http://www.opengis.net/def/crs/OGC/1.3/CRS84" // +kubebuilder:validation:Pattern=`^http:\/\/www\.opengis\.net\/def\/crs\/.*$` // +optional StorageCrs *string `` /* 163-byte string literal not displayed */ }
+kubebuilder:object:generate=true
func (*GeoSpatialCollectionMetadata) DeepCopy ¶
func (in *GeoSpatialCollectionMetadata) DeepCopy() *GeoSpatialCollectionMetadata
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoSpatialCollectionMetadata.
func (*GeoSpatialCollectionMetadata) DeepCopyInto ¶
func (in *GeoSpatialCollectionMetadata) DeepCopyInto(out *GeoSpatialCollectionMetadata)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GeoSpatialCollections ¶
type GeoSpatialCollections []GeoSpatialCollection
func (GeoSpatialCollections) ContainsID ¶
func (g GeoSpatialCollections) ContainsID(id string) bool
ContainsID check if given collection - by ID - exists. Don't use in hot path (creates a map on every invocation).
func (GeoSpatialCollections) Unique ¶
func (g GeoSpatialCollections) Unique() []GeoSpatialCollection
Unique lists all unique GeoSpatialCollections (no duplicate IDs). Don't use in hot path (creates a map on every invocation).
type HealthCheck ¶ added in v0.59.0
type HealthCheck struct { // Projection (SRS/CRS) used for tile healthcheck // +kubebuilder:default="EPSG:28992" // +kubebuilder:validation:Pattern=`^EPSG:\d+$` // +optional Srs string `yaml:"srs" json:"srs" default:"EPSG:28992" validate:"required,startswith=EPSG:"` // Path to specific tile used for healthcheck // +optional TilePath *string `yaml:"tilePath,omitempty" json:"tilePath,omitempty" validate:"required_unless=Srs EPSG:28992"` }
+kubebuilder:object:generate=true
func (*HealthCheck) DeepCopy ¶ added in v0.59.0
func (in *HealthCheck) DeepCopy() *HealthCheck
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthCheck.
func (*HealthCheck) DeepCopyInto ¶ added in v0.59.0
func (in *HealthCheck) DeepCopyInto(out *HealthCheck)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Language ¶
Language represents a BCP 47 language tag. +kubebuilder:validation:Type=string
func (*Language) DeepCopyInto ¶
DeepCopyInto copy the receiver, write into out. in must be non-nil.
func (Language) MarshalJSON ¶
MarshalJSON turn language tag into JSON Value instead of pointer receiver because only that way it can be used for both.
func (*Language) UnmarshalJSON ¶
UnmarshalJSON turn JSON into Language
type License ¶
type License struct { // Name of the license, e.g. MIT, CC0, etc Name string `yaml:"name" json:"name" validate:"required"` // URL to license text on the web URL URL `yaml:"url" json:"url" validate:"required"` }
+kubebuilder:object:generate=true
func (*License) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new License.
func (*License) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Limit ¶
type Limit struct { // Number of features to return by default. // +kubebuilder:default=10 // +kubebuilder:validation:Minimum=2 // +optional Default int `yaml:"default,omitempty" json:"default,omitempty" validate:"gt=1" default:"10"` // Max number of features to return. Should be larger than 100 since the HTML interface always offers a 100 limit option. // +kubebuilder:default=1000 // +kubebuilder:validation:Minimum=100 // +optional Max int `yaml:"max,omitempty" json:"max,omitempty" validate:"gte=100" default:"1000"` }
+kubebuilder:object:generate=true
func (*Limit) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Limit.
func (*Limit) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MapSheetDownloadProperties ¶ added in v0.51.0
type MapSheetDownloadProperties struct { // Property/column containing file download URL AssetURL string `yaml:"assetUrl" json:"assetUrl" validate:"required"` // Property/column containing file size Size string `yaml:"size" json:"size" validate:"required"` // The actual media type (not a property/column) of the download, like application/zip. MediaType MediaType `yaml:"mediaType" json:"mediaType" validate:"required"` // Property/column containing the map sheet identifier MapSheetID string `yaml:"mapSheetId" json:"mapSheetId" validate:"required"` }
+kubebuilder:object:generate=true
func (*MapSheetDownloadProperties) DeepCopy ¶ added in v0.51.0
func (in *MapSheetDownloadProperties) DeepCopy() *MapSheetDownloadProperties
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MapSheetDownloadProperties.
func (*MapSheetDownloadProperties) DeepCopyInto ¶ added in v0.51.0
func (in *MapSheetDownloadProperties) DeepCopyInto(out *MapSheetDownloadProperties)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MapSheetDownloads ¶ added in v0.51.0
type MapSheetDownloads struct { // Properties that provide the download details per map sheet. Note that 'map sheets' refer to a map // divided in rectangle areas that can be downloaded individually. Properties MapSheetDownloadProperties `yaml:"properties" json:"properties" validate:"required"` }
+kubebuilder:object:generate=true
func (*MapSheetDownloads) DeepCopy ¶ added in v0.51.0
func (in *MapSheetDownloads) DeepCopy() *MapSheetDownloads
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MapSheetDownloads.
func (*MapSheetDownloads) DeepCopyInto ¶ added in v0.51.0
func (in *MapSheetDownloads) DeepCopyInto(out *MapSheetDownloads)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MediaType ¶ added in v0.51.0
type MediaType struct {
contenttype.MediaType
}
MediaType represents a IANA media type as described in RFC 6838. Media types were formerly known as MIME types. +kubebuilder:validation:Type=string
func (*MediaType) DeepCopyInto ¶ added in v0.51.0
DeepCopyInto copy the receiver, write into out. in must be non-nil.
func (MediaType) MarshalJSON ¶ added in v0.51.0
MarshalJSON turn MediaType into JSON Value instead of pointer receiver because only that way it can be used for both.
func (MediaType) MarshalYAML ¶ added in v0.51.0
MarshalYAML turns MediaType into YAML. Value instead of pointer receiver because only that way it can be used for both.
func (*MediaType) UnmarshalJSON ¶ added in v0.51.0
UnmarshalJSON turn JSON into MediaType
type MetadataLink ¶ added in v0.59.1
type MetadataLink struct { // Name of the metadata collection/site/organization Name string `yaml:"name" json:"name" validate:"required"` // Which category of the API this metadata concerns. E.g. dataset (in general), tiles or features // +kubebuilder:default="dataset" Category string `yaml:"category" json:"category" validate:"required" default:"dataset"` // URL to external metadata detail page // +kubebuilder:validation:Type=string URL URL `yaml:"url" json:"url" validate:"required"` }
+kubebuilder:object:generate=true
func (*MetadataLink) DeepCopy ¶ added in v0.59.1
func (in *MetadataLink) DeepCopy() *MetadataLink
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataLink.
func (*MetadataLink) DeepCopyInto ¶ added in v0.59.1
func (in *MetadataLink) DeepCopyInto(out *MetadataLink)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OgcAPI ¶
type OgcAPI struct { // Enable when this API should offer OGC API 3D GeoVolumes. This includes OGC 3D Tiles. // +optional GeoVolumes *OgcAPI3dGeoVolumes `yaml:"3dgeovolumes,omitempty" json:"3dgeovolumes,omitempty"` // Enable when this API should offer OGC API Tiles. This also requires OGC API Styles. // +optional Tiles *OgcAPITiles `yaml:"tiles,omitempty" json:"tiles,omitempty" validate:"required_with=Styles"` // Enable when this API should offer OGC API Styles. // +optional Styles *OgcAPIStyles `yaml:"styles,omitempty" json:"styles,omitempty"` // Enable when this API should offer OGC API Features. // +optional Features *OgcAPIFeatures `yaml:"features,omitempty" json:"features,omitempty"` // Enable when this API should offer OGC API Processes. // +optional Processes *OgcAPIProcesses `yaml:"processes,omitempty" json:"processes,omitempty"` }
+kubebuilder:object:generate=true
func (*OgcAPI) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OgcAPI.
func (*OgcAPI) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OgcAPI3dGeoVolumes ¶
type OgcAPI3dGeoVolumes struct { // Reference to the server (or object storage) hosting the 3D Tiles TileServer URL `yaml:"tileServer" json:"tileServer" validate:"required"` // Collections to be served as 3D GeoVolumes Collections GeoSpatialCollections `yaml:"collections" json:"collections"` // Whether JSON responses will be validated against the OpenAPI spec // since it has significant performance impact when dealing with large JSON payloads. // // +kubebuilder:default=true // +optional ValidateResponses *bool `yaml:"validateResponses,omitempty" json:"validateResponses,omitempty" default:"true"` // ptr due to https://github.com/creasty/defaults/issues/49 }
+kubebuilder:object:generate=true
func (*OgcAPI3dGeoVolumes) DeepCopy ¶
func (in *OgcAPI3dGeoVolumes) DeepCopy() *OgcAPI3dGeoVolumes
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OgcAPI3dGeoVolumes.
func (*OgcAPI3dGeoVolumes) DeepCopyInto ¶
func (in *OgcAPI3dGeoVolumes) DeepCopyInto(out *OgcAPI3dGeoVolumes)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OgcAPIFeatures ¶
type OgcAPIFeatures struct { // Basemap to use in embedded viewer on the HTML pages. // +kubebuilder:default="OSM" // +kubebuilder:validation:Enum=OSM;BRT // +optional Basemap string `yaml:"basemap,omitempty" json:"basemap,omitempty" default:"OSM" validate:"oneof=OSM BRT"` // Collections to be served as features through this API Collections GeoSpatialCollections `yaml:"collections" json:"collections" validate:"required,dive"` // Limits the amount of features to retrieve with a single call // +optional Limit Limit `yaml:"limit,omitempty" json:"limit,omitempty"` // One or more datasources to get the features from (geopackages, postgis, etc). // Optional since you can also define datasources at the collection level // +optional Datasources *Datasources `yaml:"datasources,omitempty" json:"datasources,omitempty"` // Whether GeoJSON/JSON-FG responses will be validated against the OpenAPI spec // since it has significant performance impact when dealing with large JSON payloads. // // +kubebuilder:default=true // +optional ValidateResponses *bool `yaml:"validateResponses,omitempty" json:"validateResponses,omitempty" default:"true"` // ptr due to https://github.com/creasty/defaults/issues/49 }
+kubebuilder:object:generate=true
func (*OgcAPIFeatures) DeepCopy ¶
func (in *OgcAPIFeatures) DeepCopy() *OgcAPIFeatures
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OgcAPIFeatures.
func (*OgcAPIFeatures) DeepCopyInto ¶
func (in *OgcAPIFeatures) DeepCopyInto(out *OgcAPIFeatures)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*OgcAPIFeatures) ProjectionsForCollection ¶
func (oaf *OgcAPIFeatures) ProjectionsForCollection(collectionID string) []string
func (*OgcAPIFeatures) ProjectionsForCollections ¶
func (oaf *OgcAPIFeatures) ProjectionsForCollections() []string
type OgcAPIProcesses ¶
type OgcAPIProcesses struct { // Enable to advertise dismiss operations on the conformance page SupportsDismiss bool `yaml:"supportsDismiss" json:"supportsDismiss"` // Enable to advertise callback operations on the conformance page SupportsCallback bool `yaml:"supportsCallback" json:"supportsCallback"` // Reference to an external service implementing the process API. GoKoala acts only as a proxy for OGC API Processes. ProcessesServer URL `yaml:"processesServer" json:"processesServer" validate:"required"` }
+kubebuilder:object:generate=true
func (*OgcAPIProcesses) DeepCopy ¶
func (in *OgcAPIProcesses) DeepCopy() *OgcAPIProcesses
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OgcAPIProcesses.
func (*OgcAPIProcesses) DeepCopyInto ¶
func (in *OgcAPIProcesses) DeepCopyInto(out *OgcAPIProcesses)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OgcAPIStyles ¶
type OgcAPIStyles struct { // ID of the style to use a default Default string `yaml:"default" json:"default" validate:"required"` // Location on disk where the styles are hosted StylesDir string `yaml:"stylesDir" json:"stylesDir" validate:"required,dirpath|filepath"` // Styles exposed though this API SupportedStyles []Style `yaml:"supportedStyles" json:"supportedStyles" validate:"required,dive"` }
+kubebuilder:object:generate=true
func (*OgcAPIStyles) DeepCopy ¶
func (in *OgcAPIStyles) DeepCopy() *OgcAPIStyles
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OgcAPIStyles.
func (*OgcAPIStyles) DeepCopyInto ¶
func (in *OgcAPIStyles) DeepCopyInto(out *OgcAPIStyles)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OgcAPITiles ¶
type OgcAPITiles struct { // Tiles for the entire dataset, these are hosted at the root of the API (/tiles endpoint). // +optional DatasetTiles *Tiles `yaml:",inline" json:",inline"` // Tiles per collection. When no collections are specified tiles should be hosted at the root of the API (/tiles endpoint). // +optional Collections GeoSpatialCollections `yaml:"collections,omitempty" json:"collections,omitempty"` }
+kubebuilder:object:generate=true
func (*OgcAPITiles) DeepCopy ¶
func (in *OgcAPITiles) DeepCopy() *OgcAPITiles
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OgcAPITiles.
func (*OgcAPITiles) DeepCopyInto ¶
func (in *OgcAPITiles) DeepCopyInto(out *OgcAPITiles)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*OgcAPITiles) Defaults ¶ added in v0.61.0
func (o *OgcAPITiles) Defaults()
func (*OgcAPITiles) GetProjections ¶ added in v0.54.0
func (o *OgcAPITiles) GetProjections() []SupportedSrs
GetProjections projections supported for this dataset
func (*OgcAPITiles) HasProjection ¶ added in v0.54.0
func (o *OgcAPITiles) HasProjection(srs string) bool
HasProjection true when the given projection is supported for this dataset
func (*OgcAPITiles) HasType ¶ added in v0.54.0
func (o *OgcAPITiles) HasType(t TilesType) bool
type PostGIS ¶
type PostGIS struct { }
+kubebuilder:object:generate=true
func (*PostGIS) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PostGIS.
func (*PostGIS) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PropertyFilter ¶
type PropertyFilter struct { // Needs to match with a column name in the feature table (in the configured datasource) Name string `yaml:"name" json:"name" validate:"required"` // Explains this property filter // +kubebuilder:default="Filter features by this property" // +optional Description string `yaml:"description,omitempty" json:"description,omitempty" default:"Filter features by this property"` // When true the property/column in the feature table needs to be indexed. Initialization will fail // when no index is present, when false the index check is skipped. For large tables an index is recommended! // // +kubebuilder:default=true // +optional IndexRequired *bool `yaml:"indexRequired,omitempty" json:"indexRequired,omitempty" default:"true"` // ptr due to https://github.com/creasty/defaults/issues/49 // Static list of allowed values to be used as input for this property filter. Will be enforced by OpenAPI spec. // +optional AllowedValues []string `yaml:"allowedValues,omitempty" json:"allowedValues,omitempty"` // Derive list of allowed values for this property filter from the corresponding column in the datastore. // Use with caution since it can increase startup time when used on large tables. Make sure an index in present. // // +kubebuilder:default=false // +optional DeriveAllowedValuesFromDatasource *bool `yaml:"deriveAllowedValuesFromDatasource,omitempty" json:"deriveAllowedValuesFromDatasource,omitempty" default:"false"` }
+kubebuilder:object:generate=true
func (*PropertyFilter) DeepCopy ¶
func (in *PropertyFilter) DeepCopy() *PropertyFilter
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PropertyFilter.
func (*PropertyFilter) DeepCopyInto ¶
func (in *PropertyFilter) DeepCopyInto(out *PropertyFilter)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Resources ¶
type Resources struct { // Location where resources (e.g. thumbnails) specific to the given dataset are hosted. This is optional if Directory is set // +optional URL *URL `yaml:"url,omitempty" json:"url,omitempty" validate:"required_without=Directory,omitempty"` // Location where resources (e.g. thumbnails) specific to the given dataset are hosted. This is optional if URL is set // +optional Directory *string `yaml:"directory,omitempty" json:"directory,omitempty" validate:"required_without=URL,omitempty,dirpath|filepath"` }
+kubebuilder:object:generate=true
func (*Resources) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Resources.
func (*Resources) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Style ¶
type Style struct { // Unique ID of this style // +kubebuilder:validation:Pattern=`^[a-z0-9"]([a-z0-9_-]*[a-z0-9"]+|)$` ID string `yaml:"id" json:"id" validate:"required,lowercase_id"` // Human-friendly name of this style Title string `yaml:"title" json:"title" validate:"required"` // Explains what is visualized by this style // +optional Description *string `yaml:"description,omitempty" json:"description,omitempty"` // Keywords to make this style better discoverable // +optional Keywords []string `yaml:"keywords,omitempty" json:"keywords,omitempty"` // Moment in time when the style was last updated // +optional // +kubebuilder:validation:Type=string // +kubebuilder:validation:Format="date-time" LastUpdated *string `yaml:"lastUpdated,omitempty" json:"lastUpdated,omitempty" validate:"omitempty,datetime=2006-01-02T15:04:05Z"` // Optional version of this style // +optional Version *string `yaml:"version,omitempty" json:"version,omitempty"` // Reference to a PNG image to use a thumbnail on the style metadata page. // The full path is constructed by appending Resources + Thumbnail. // +optional Thumbnail *string `yaml:"thumbnail,omitempty" json:"thumbnail,omitempty"` // This style is offered in the following formats Formats []StyleFormat `yaml:"formats" json:"formats" validate:"required,dive"` }
+kubebuilder:object:generate=true
func (*Style) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Style.
func (*Style) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type StyleFormat ¶
type StyleFormat struct { // Name of the format // +kubebuilder:default="mapbox" // +optional Format string `yaml:"format,omitempty" json:"format,omitempty" default:"mapbox" validate:"required,oneof=mapbox sld10"` }
+kubebuilder:object:generate=true
func (*StyleFormat) DeepCopy ¶
func (in *StyleFormat) DeepCopy() *StyleFormat
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StyleFormat.
func (*StyleFormat) DeepCopyInto ¶
func (in *StyleFormat) DeepCopyInto(out *StyleFormat)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Support ¶
type Support struct { // Name of the support organization Name string `yaml:"name" json:"name" validate:"required"` // URL to external support webpage // +kubebuilder:validation:Type=string URL URL `yaml:"url" json:"url" validate:"required"` // Email for support questions // +optional Email string `yaml:"email,omitempty" json:"email,omitempty" validate:"omitempty,email"` }
+kubebuilder:object:generate=true
func (*Support) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Support.
func (*Support) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SupportedSrs ¶
type SupportedSrs struct { // Projection (SRS/CRS) used // +kubebuilder:validation:Pattern=`^EPSG:\d+$` Srs string `yaml:"srs" json:"srs" validate:"required,startswith=EPSG:"` // Available zoom levels ZoomLevelRange ZoomLevelRange `yaml:"zoomLevelRange" json:"zoomLevelRange" validate:"required"` }
+kubebuilder:object:generate=true
func (*SupportedSrs) DeepCopy ¶
func (in *SupportedSrs) DeepCopy() *SupportedSrs
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SupportedSrs.
func (*SupportedSrs) DeepCopyInto ¶
func (in *SupportedSrs) DeepCopyInto(out *SupportedSrs)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TemporalProperties ¶
type TemporalProperties struct { // Name of field in datasource to be used in temporal queries as the start date StartDate string `yaml:"startDate" json:"startDate" validate:"required"` // Name of field in datasource to be used in temporal queries as the end date EndDate string `yaml:"endDate" json:"endDate" validate:"required"` }
+kubebuilder:object:generate=true
func (*TemporalProperties) DeepCopy ¶
func (in *TemporalProperties) DeepCopy() *TemporalProperties
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TemporalProperties.
func (*TemporalProperties) DeepCopyInto ¶
func (in *TemporalProperties) DeepCopyInto(out *TemporalProperties)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TileCoordinates ¶ added in v0.59.0
type TileCoordinates struct {
// contains filtered or unexported fields
}
type Tiles ¶ added in v0.54.0
type Tiles struct { // Reference to the server (or object storage) hosting the tiles. // Note: Only marked as optional in CRD to support top-level OR collection-level tiles // +optional TileServer URL `yaml:"tileServer" json:"tileServer" validate:"required"` // Could be 'vector' and/or 'raster' to indicate the types of tiles offered // Note: Only marked as optional in CRD to support top-level OR collection-level tiles // +optional Types []TilesType `yaml:"types" json:"types" validate:"required"` // Specifies in what projections (SRS/CRS) the tiles are offered // Note: Only marked as optional in CRD to support top-level OR collection-level tiles // +optional SupportedSrs []SupportedSrs `yaml:"supportedSrs" json:"supportedSrs" validate:"required,dive"` // Optional template to the vector tiles on the tileserver. Defaults to {tms}/{z}/{x}/{y}.pbf. // +optional URITemplateTiles *string `yaml:"uriTemplateTiles,omitempty" json:"uriTemplateTiles,omitempty"` // Optional health check configuration // +optional HealthCheck HealthCheck `yaml:"healthCheck" json:"healthCheck"` }
+kubebuilder:object:generate=true
func (*Tiles) DeepCopy ¶ added in v0.54.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Tiles.
func (*Tiles) DeepCopyInto ¶ added in v0.54.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type URL ¶
type URL struct { // This is a pointer so the wrapper can directly be used in templates, e.g.: {{ .Config.BaseURL }} // Otherwise you would need .String() or template.URL(). (Might be a bug.) *url.URL }
URL Custom net.URL compatible with YAML and JSON (un)marshalling and kubebuilder. In addition, it also removes trailing slash if present, so we can easily append a longer path without having to worry about double slashes.
Allow only http/https URLs or environment variables like ${FOOBAR} +kubebuilder:validation:Pattern=`^(https?://.+)|(\$\{.+\}.*)` +kubebuilder:validation:Type=string
func (*URL) DeepCopyInto ¶
DeepCopyInto copies the receiver, writes into out.
func (URL) MarshalJSON ¶
MarshalJSON turns URL into JSON. Value instead of pointer receiver because only that way it can be used for both.
func (URL) MarshalYAML ¶
MarshalYAML turns URL into YAML. Value instead of pointer receiver because only that way it can be used for both.
func (*URL) UnmarshalJSON ¶
UnmarshalJSON parses a string to URL and also removes trailing slash if present, so we can easily append a longer path without having to worry about double slashes.
type WebConfig ¶ added in v0.53.4
type WebConfig struct { // Viewer config for displaying multiple features on a map // +optional FeaturesViewer *FeaturesViewer `yaml:"featuresViewer,omitempty" json:"featuresViewer,omitempty"` // Viewer config for displaying a single feature on a map // +optional FeatureViewer *FeaturesViewer `yaml:"featureViewer,omitempty" json:"featureViewer,omitempty"` // Whether URLs (to external resources) in the HTML representation of features should be rendered as hyperlinks. // +optional URLAsHyperlink bool `yaml:"urlAsHyperlink,omitempty" json:"urlAsHyperlink,omitempty"` }
+kubebuilder:object:generate=true
func (*WebConfig) DeepCopy ¶ added in v0.53.4
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebConfig.
func (*WebConfig) DeepCopyInto ¶ added in v0.53.4
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ZoomLevelRange ¶
type ZoomLevelRange struct { // Start zoom level // +kubebuilder:validation:Minimum=0 Start int `yaml:"start" json:"start" validate:"gte=0,ltefield=End"` // End zoom level End int `yaml:"end" json:"end" validate:"required,gtefield=Start"` }
+kubebuilder:object:generate=true
func (*ZoomLevelRange) DeepCopy ¶
func (in *ZoomLevelRange) DeepCopy() *ZoomLevelRange
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ZoomLevelRange.
func (*ZoomLevelRange) DeepCopyInto ¶
func (in *ZoomLevelRange) DeepCopyInto(out *ZoomLevelRange)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.