Documentation ¶
Index ¶
- Constants
- type AdditionalDatasource
- type CollectionEntry3dGeoVolumes
- type CollectionEntryFeatures
- type CollectionEntryTiles
- 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 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 GeoPackage
- type GeoPackageCloud
- type GeoPackageCloudCache
- type GeoPackageCommon
- type GeoPackageLocal
- type GeoSpatialCollection
- type GeoSpatialCollectionJSON
- type GeoSpatialCollectionMetadata
- type GeoSpatialCollections
- type Language
- type License
- type Limit
- type OgcAPI
- type OgcAPI3dGeoVolumes
- type OgcAPIFeatures
- func (in *OgcAPIFeatures) DeepCopy() *OgcAPIFeatures
- func (in *OgcAPIFeatures) DeepCopyInto(out *OgcAPIFeatures)
- func (oaf *OgcAPIFeatures) ProjectionsForCollection(collectionID string) []string
- func (oaf *OgcAPIFeatures) ProjectionsForCollections() []string
- func (oaf *OgcAPIFeatures) PropertyFiltersForCollection(collectionID string) []PropertyFilter
- type OgcAPIProcesses
- type OgcAPIStyles
- type OgcAPITiles
- type PostGIS
- type PropertyFilter
- type Resources
- type Style
- type StyleFormat
- type Support
- type SupportedSrs
- type TemporalProperties
- type TilesType
- type URL
- type ZoomLevelRange
Constants ¶
const (
CookieMaxAge = 60 * 60 * 24
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
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"` // 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"` }
+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 { }
+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 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 DatasetCatalogURL URL `yaml:"datasetCatalogUrl" json:"datasetCatalogUrl"` // The languages/translations to offer, valid options are Dutch (nl) and English (en). Dutch is the default. AvailableLanguages []Language `yaml:"availableLanguages" json:"availableLanguages"` // Define which OGC API building blocks this API supports OgcAPI OgcAPI `yaml:"ogcApi" json:"ogcApi" validate:"required"` // 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"` // 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
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 ¶
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"` // 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. 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 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" json:"srs" 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 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), e.g: // - azure?emulator=127.0.0.1:10000&sas=0 // - google Connection string `yaml:"connection" json:"connection" validate:"required"` // Username of the storage account, e.g: 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"` // 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"` // Optional timeout after which queries are canceled // +kubebuilder:default="15s" // +optional QueryTimeout Duration `yaml:"queryTimeout,omitempty" json:"queryTimeout,omitempty" validate:"required" default:"15s"` // When the number of features in a bbox stay within the given value use an RTree index, otherwise use a BTree index // +kubebuilder:default=30000 // +optional MaxBBoxSizeToUseWithRTree int `yaml:"maxBBoxSizeToUseWithRTree,omitempty" json:"maxBBoxSizeToUseWithRTree,omitempty" validate:"required" default:"30000"` }
+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 GeoPackageLocal ¶
type GeoPackageLocal struct { // GeoPackageCommon shared config between local and cloud GeoPackage GeoPackageCommon `yaml:",inline" json:",inline"` // Location of GeoPackage on disk File string `yaml:"file" json:"file" validate:"file"` }
+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 ID string `yaml:"id" validate:"required" json:"id"` // Metadata describing the collection contents // +optional Metadata *GeoSpatialCollectionMetadata `yaml:"metadata,omitempty" json:"metadata,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) 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 { ID string `json:"id"` Metadata *GeoSpatialCollectionMetadata `json:"metadata,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
func (GeoSpatialCollections) Unique ¶
func (g GeoSpatialCollections) Unique() []GeoSpatialCollection
Unique lists all unique GeoSpatialCollections (no duplicate IDs), return results in alphabetic order
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 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
func (*OgcAPIFeatures) PropertyFiltersForCollection ¶
func (oaf *OgcAPIFeatures) PropertyFiltersForCollection(collectionID string) []PropertyFilter
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 { // Reference to the server (or object storage) hosting the tiles TileServer URL `yaml:"tileServer" json:"tileServer" validate:"required"` // Could be 'vector' and/or 'raster' to indicate the types of tiles offered Types []TilesType `yaml:"types" json:"types" validate:"required"` // Specifies in what projections (SRS/CRS) the tiles are offered 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"` // The collections to offer as tiles. When no collection is specified the tiles are 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.
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"` }
+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 ID string `yaml:"id" json:"id" validate:"required"` // 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 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 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.