Documentation
¶
Index ¶
- Constants
- Variables
- func LowercaseID(fl validator.FieldLevel) bool
- type AdditionalDatasource
- type CollectionEntryTilesJSON
- type CollectionLinks
- type ColumnRelation
- 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(any) error) error
- type DatasetDetail
- type Datasource
- type DatasourceCommon
- type Datasources
- type DownloadLink
- type Duration
- type Extent
- type FeatureFilters
- type FeatureProperties
- type FeaturesAndSearchConfig
- func (fas FeaturesAndSearchConfig) Collections() GeoSpatialCollections
- func (fas FeaturesAndSearchConfig) Datasources() *Datasources
- func (fas FeaturesAndSearchConfig) FeatureCollections() FeaturesCollections
- func (fas FeaturesAndSearchConfig) ForceUTC() bool
- func (fas FeaturesAndSearchConfig) MaxDecimals() int
- type FeaturesCollection
- func (in *FeaturesCollection) DeepCopy() *FeaturesCollection
- func (in *FeaturesCollection) DeepCopyInto(out *FeaturesCollection)
- func (cf FeaturesCollection) GetID() string
- func (cf FeaturesCollection) GetLinks() *CollectionLinks
- func (cf FeaturesCollection) GetMetadata() *GeoSpatialCollectionMetadata
- func (cf FeaturesCollection) HasTableName(table string) bool
- func (cf FeaturesCollection) MarshalJSON() ([]byte, error)
- func (cf FeaturesCollection) Merge(other GeoSpatialCollection) GeoSpatialCollection
- func (cf FeaturesCollection) UnmarshalJSON(b []byte) error
- type FeaturesCollections
- type FeaturesSearchCollection
- func (in *FeaturesSearchCollection) DeepCopy() *FeaturesSearchCollection
- func (in *FeaturesSearchCollection) DeepCopyInto(out *FeaturesSearchCollection)
- func (cfs FeaturesSearchCollection) GetID() string
- func (cfs FeaturesSearchCollection) GetLinks() *CollectionLinks
- func (cfs FeaturesSearchCollection) GetMetadata() *GeoSpatialCollectionMetadata
- func (cfs FeaturesSearchCollection) IsRemoteFeatureCollection(collID string) bool
- func (cfs FeaturesSearchCollection) Merge(other GeoSpatialCollection) GeoSpatialCollection
- type FeaturesSearchCollections
- type FeaturesViewer
- type GeoPackage
- type GeoPackageCloud
- type GeoPackageCloudCache
- type GeoPackageCommon
- type GeoPackageDownload
- type GeoPackageLocal
- type GeoSpatialCollection
- type GeoSpatialCollectionMetadata
- type GeoSpatialCollections
- type GeoVolumesCollection
- func (in *GeoVolumesCollection) DeepCopy() *GeoVolumesCollection
- func (in *GeoVolumesCollection) DeepCopyInto(out *GeoVolumesCollection)
- func (cgv GeoVolumesCollection) GetID() string
- func (cgv GeoVolumesCollection) GetLinks() *CollectionLinks
- func (cgv GeoVolumesCollection) GetMetadata() *GeoSpatialCollectionMetadata
- func (cgv GeoVolumesCollection) Merge(other GeoSpatialCollection) GeoSpatialCollection
- type GeoVolumesCollections
- type HealthCheck
- type JunctionTable
- 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() (any, 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 OgcAPIFeaturesSearch
- type OgcAPIProcesses
- type OgcAPIStyles
- type OgcAPITiles
- func (in *OgcAPITiles) DeepCopy() *OgcAPITiles
- func (in *OgcAPITiles) DeepCopyInto(out *OgcAPITiles)
- func (o *OgcAPITiles) Defaults()
- func (o *OgcAPITiles) GetProjections() []SupportedSrs
- func (o *OgcAPITiles) HasProjection(srs string) bool
- func (o *OgcAPITiles) HasType(t TilesType) bool
- func (o OgcAPITiles) MarshalJSON() ([]byte, error)
- func (o *OgcAPITiles) UnmarshalJSON(b []byte) error
- type OgcAPITilesJSON
- type OnTheFlyDatasource
- type OnTheFlySupportedSrs
- type Postgres
- type PropertyFilter
- type RelatedOGCAPIFeaturesCollection
- type Relation
- type Resources
- type SearchSettings
- type Style
- type StyleFormat
- type Support
- type SupportedSrs
- type TemporalProperties
- type Theme
- type ThemeColors
- type ThemeIncludes
- type ThemeLogo
- type TileCoordinates
- type Tiles
- type TilesCollection
- func (in *TilesCollection) DeepCopy() *TilesCollection
- func (in *TilesCollection) DeepCopyInto(out *TilesCollection)
- func (ct TilesCollection) GetID() string
- func (ct TilesCollection) GetLinks() *CollectionLinks
- func (ct TilesCollection) GetMetadata() *GeoSpatialCollectionMetadata
- func (ct TilesCollection) MarshalJSON() ([]byte, error)
- func (ct TilesCollection) Merge(other GeoSpatialCollection) GeoSpatialCollection
- func (ct TilesCollection) UnmarshalJSON(b []byte) error
- type TilesCollections
- type TilesType
- type URL
- type WebConfig
- type ZoomLevelRange
Constants ¶
const ( AppName = "GoKoala" CookieMaxAge = 60 * 60 * 24 )
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 DefaultSrs = "EPSG:28992"
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 {
// 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 CollectionEntryTilesJSON ¶ added in v0.71.1
type CollectionEntryTilesJSON struct {
Tiles `json:",inline"`
}
type CollectionLinks ¶ added in v0.51.0
type CollectionLinks struct {
// Links to downloads of an 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 ColumnRelation ¶ added in v1.3.1
type ColumnRelation struct {
// Column name in the current/source collection
// +kubebuilder:validation:Pattern=`^[a-zA-Z0-9_]+$`
Source string `yaml:"source" json:"source" validate:"required"`
// Column name in the target collection
// +kubebuilder:validation:Pattern=`^[a-zA-Z0-9_]+$`
Target string `yaml:"target" json:"target" validate:"required"`
}
+kubebuilder:object:generate=true
func (*ColumnRelation) DeepCopy ¶ added in v1.3.1
func (in *ColumnRelation) DeepCopy() *ColumnRelation
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ColumnRelation.
func (*ColumnRelation) DeepCopyInto ¶ added in v1.3.1
func (in *ColumnRelation) DeepCopyInto(out *ColumnRelation)
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" default:"1.0.0"`
// 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 terms 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" validate:"omitempty"`
// Keywords to make this API better 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 - for example, with 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, for example, with features, tiles, 3d tiles, etc.
func (*Config) UnmarshalJSON ¶
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=Postgres"`
// Postgres database to get the features from.
// +optional
Postgres *Postgres `yaml:"postgres,omitempty" json:"postgres,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 DatasourceCommon ¶ added in v0.75.0
type DatasourceCommon 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"`
}
+kubebuilder:object:generate=true
func (*DatasourceCommon) DeepCopy ¶ added in v0.75.0
func (in *DatasourceCommon) DeepCopy() *DatasourceCommon
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatasourceCommon.
func (*DatasourceCommon) DeepCopyInto ¶ added in v0.75.0
func (in *DatasourceCommon) DeepCopyInto(out *DatasourceCommon)
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 coordinate reference system.
//
// No on-the-fly transformation/reprojection is performed, so the features in this datasource need to be
// either native WGS84 or reprojected/transformed to WGS84 ahead of time. For example, using ogr2ogr.
// +optional
DefaultWGS84 *Datasource `yaml:"defaultWGS84" json:"defaultWGS84"` //nolint:tagliatelle // grandfathered
// One or more additional datasources for features in other (non-WGS84) coordinate reference systems.
//
// No on-the-fly transformation/reprojection is performed, so the features in these additional datasources
// need to be transformed/reprojected ahead of time. For example, using ogr2ogr.
// +optional
Additional []AdditionalDatasource `yaml:"additional,omitempty" json:"additional,omitempty" validate:"dive"`
// Datasource containing features which will be transformed/reprojected on-the-fly to the specified
// coordinate reference systems. No need to transform/reproject ahead of time.
//
// Note: On-the-fly transformation/reprojection may impact performance when using (very) large geometries.
// +optional
OnTheFly []OnTheFlyDatasource `yaml:"transformOnTheFly,omitempty" json:"transformOnTheFly,omitempty" 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 to 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 FeaturesAndSearchConfig ¶ added in v1.7.0
type FeaturesAndSearchConfig struct {
// contains filtered or unexported fields
}
FeaturesAndSearchConfig Convince wrapper for OGC API Features and/or Features Search
func NewFeaturesConfig ¶ added in v1.7.0
func NewFeaturesConfig(features *OgcAPIFeatures) FeaturesAndSearchConfig
func NewSearchConfig ¶ added in v1.7.0
func NewSearchConfig(search *OgcAPIFeaturesSearch) FeaturesAndSearchConfig
func (FeaturesAndSearchConfig) Collections ¶ added in v1.7.0
func (fas FeaturesAndSearchConfig) Collections() GeoSpatialCollections
func (FeaturesAndSearchConfig) Datasources ¶ added in v1.7.0
func (fas FeaturesAndSearchConfig) Datasources() *Datasources
func (FeaturesAndSearchConfig) FeatureCollections ¶ added in v1.7.0
func (fas FeaturesAndSearchConfig) FeatureCollections() FeaturesCollections
func (FeaturesAndSearchConfig) ForceUTC ¶ added in v1.7.0
func (fas FeaturesAndSearchConfig) ForceUTC() bool
func (FeaturesAndSearchConfig) MaxDecimals ¶ added in v1.7.0
func (fas FeaturesAndSearchConfig) MaxDecimals() int
type FeaturesCollection ¶ added in v1.7.0
type FeaturesCollection 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"`
// 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"`
// Relations define relationships between features across collections
// +optional
Relations []Relation `yaml:"relations,omitempty" json:"relations,omitempty"`
// Optional way to exclude feature properties and/or determine the ordering of properties in the response.
// +optional
*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 (*FeaturesCollection) DeepCopy ¶ added in v1.7.0
func (in *FeaturesCollection) DeepCopy() *FeaturesCollection
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FeaturesCollection.
func (*FeaturesCollection) DeepCopyInto ¶ added in v1.7.0
func (in *FeaturesCollection) DeepCopyInto(out *FeaturesCollection)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (FeaturesCollection) GetID ¶ added in v1.7.0
func (cf FeaturesCollection) GetID() string
func (FeaturesCollection) GetLinks ¶ added in v1.7.0
func (cf FeaturesCollection) GetLinks() *CollectionLinks
func (FeaturesCollection) GetMetadata ¶ added in v1.7.0
func (cf FeaturesCollection) GetMetadata() *GeoSpatialCollectionMetadata
func (FeaturesCollection) HasTableName ¶ added in v1.7.0
func (cf FeaturesCollection) HasTableName(table string) bool
func (FeaturesCollection) MarshalJSON ¶ added in v1.7.0
func (cf FeaturesCollection) 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 (FeaturesCollection) Merge ¶ added in v1.7.0
func (cf FeaturesCollection) Merge(other GeoSpatialCollection) GeoSpatialCollection
func (FeaturesCollection) UnmarshalJSON ¶ added in v1.7.0
func (cf FeaturesCollection) UnmarshalJSON(b []byte) error
UnmarshalJSON parses a string to FeaturesCollection.
type FeaturesCollections ¶ added in v1.7.0
type FeaturesCollections []FeaturesCollection
func (FeaturesCollections) ContainsID ¶ added in v1.7.0
func (csf FeaturesCollections) ContainsID(id string) bool
ContainsID check if a given collection - by ID - exists.
func (FeaturesCollections) FeaturePropertiesByID ¶ added in v1.7.0
func (csf FeaturesCollections) FeaturePropertiesByID() map[string]*FeatureProperties
FeaturePropertiesByID returns a map of collection IDs to their corresponding FeatureProperties. Skips collections that do not have features defined.
func (FeaturesCollections) FeatureRelationsByID ¶ added in v1.7.0
func (csf FeaturesCollections) FeatureRelationsByID() map[string][]Relation
FeatureRelationsByID returns a map of collection IDs to their corresponding Relation. Skips collections that do not have features defined.
type FeaturesSearchCollection ¶ added in v1.7.0
type FeaturesSearchCollection 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"`
// Fields that make up the display name and/or suggestions. These fields can be used as variables in the DisplayNameTemplate.
Fields []string `yaml:"fields,omitempty" json:"fields,omitempty"`
// Template that indicates how a search record is displayed. Uses Go text/template syntax to reference fields.
DisplayNameTemplate string `yaml:"displayNameTemplate,omitempty" json:"displayNameTemplate,omitempty"`
// Version of the collection exposed through the API.
// +kubebuilder:default=1
Version int `yaml:"version,omitempty" json:"version,omitempty" default:"1"`
// Links to the individual OGC API (feature) collections that are searchable in this collection.
CollectionRefs []RelatedOGCAPIFeaturesCollection `yaml:"collectionRefs,omitempty" json:"collectionRefs,omitempty"`
}
+kubebuilder:object:generate=true
func (*FeaturesSearchCollection) DeepCopy ¶ added in v1.7.0
func (in *FeaturesSearchCollection) DeepCopy() *FeaturesSearchCollection
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FeaturesSearchCollection.
func (*FeaturesSearchCollection) DeepCopyInto ¶ added in v1.7.0
func (in *FeaturesSearchCollection) DeepCopyInto(out *FeaturesSearchCollection)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (FeaturesSearchCollection) GetID ¶ added in v1.7.0
func (cfs FeaturesSearchCollection) GetID() string
func (FeaturesSearchCollection) GetLinks ¶ added in v1.7.0
func (cfs FeaturesSearchCollection) GetLinks() *CollectionLinks
func (FeaturesSearchCollection) GetMetadata ¶ added in v1.7.0
func (cfs FeaturesSearchCollection) GetMetadata() *GeoSpatialCollectionMetadata
func (FeaturesSearchCollection) IsRemoteFeatureCollection ¶ added in v1.7.0
func (cfs FeaturesSearchCollection) IsRemoteFeatureCollection(collID string) bool
IsRemoteFeatureCollection true when the given collection ID is defined as a feature collection outside this config. In other words: it references a remote feature collection and doesn't point to a local one in this dataset.
func (FeaturesSearchCollection) Merge ¶ added in v1.7.0
func (cfs FeaturesSearchCollection) Merge(other GeoSpatialCollection) GeoSpatialCollection
type FeaturesSearchCollections ¶ added in v1.7.0
type FeaturesSearchCollections []FeaturesSearchCollection
func (FeaturesSearchCollections) ContainsID ¶ added in v1.7.0
func (csfs FeaturesSearchCollections) ContainsID(id string) bool
ContainsID check if a given collection - by ID - exists.
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 {
DatasourceCommon `yaml:",inline" json:",inline"`
// 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 interface {
// GetID Unique ID of the collection
GetID() string
// GetMetadata Metadata describing the collection contents
GetMetadata() *GeoSpatialCollectionMetadata
// GetLinks Links pertaining to this collection (e.g., downloads, documentation)
GetLinks() *CollectionLinks
// Merge the (metadata and links) of the given collection with this collection. Return the merged collection.
Merge(collection GeoSpatialCollection) GeoSpatialCollection
}
GeoSpatialCollection Configuration for a collection of geospatial data.
Interface/abstraction for common collection properties regardless of the specific type (e.g., tiles, features, 3dgeovolumes, etc.).
+kubebuilder:object:generate:false
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
GeoSpatialCollections All collections configured for this OGC API. Can contain a mix of tiles/features/etc. +kubebuilder:object:generate:false
func (GeoSpatialCollections) ContainsID ¶
func (g GeoSpatialCollections) ContainsID(id string) bool
ContainsID check if a given collection - by ID - exists. Don't use in the 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 the hot path (creates a map on every invocation).
type GeoVolumesCollection ¶ added in v1.7.0
type GeoVolumesCollection 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"`
// Optional basepath to 3D tiles on the tileserver. Defaults to the collection ID.
// +optional
TileServerPath *string `yaml:"tileServerPath,omitempty" json:"tileServerPath,omitempty"`
// Is a digital terrain model (DTM) in Quantized Mesh format, REQUIRED when you want to serve a DTM.
// +kubebuilder:default=false
// +optional
IsDtm bool `yaml:"isDtm,omitempty" json:"isDtm,omitempty"`
// Optional flag to indicate that the collection uses implicit tiling.
// +optional
IsImplicit bool `yaml:"isImplicit,omitempty" json:"isImplicit,omitempty"`
// 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 (*GeoVolumesCollection) DeepCopy ¶ added in v1.7.0
func (in *GeoVolumesCollection) DeepCopy() *GeoVolumesCollection
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GeoVolumesCollection.
func (*GeoVolumesCollection) DeepCopyInto ¶ added in v1.7.0
func (in *GeoVolumesCollection) DeepCopyInto(out *GeoVolumesCollection)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (GeoVolumesCollection) GetID ¶ added in v1.7.0
func (cgv GeoVolumesCollection) GetID() string
func (GeoVolumesCollection) GetLinks ¶ added in v1.7.0
func (cgv GeoVolumesCollection) GetLinks() *CollectionLinks
func (GeoVolumesCollection) GetMetadata ¶ added in v1.7.0
func (cgv GeoVolumesCollection) GetMetadata() *GeoSpatialCollectionMetadata
func (GeoVolumesCollection) Merge ¶ added in v1.7.0
func (cgv GeoVolumesCollection) Merge(other GeoSpatialCollection) GeoSpatialCollection
type GeoVolumesCollections ¶ added in v1.7.0
type GeoVolumesCollections []GeoVolumesCollection
func (GeoVolumesCollections) ContainsID ¶ added in v1.7.0
func (csg GeoVolumesCollections) ContainsID(id string) bool
ContainsID check if a given collection - by ID - exists.
type HealthCheck ¶ added in v0.59.0
type HealthCheck struct {
// Enable/disable healthcheck on tiles. Defaults to true.
// +kubebuilder:default=true
// +optional
Enabled *bool `yaml:"enabled" json:"enabled" default:"true"`
// 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 JunctionTable ¶ added in v1.3.1
type JunctionTable struct {
// Name of the junction table
// +kubebuilder:validation:Pattern=`^[a-zA-Z0-9_]+$`
Name string `yaml:"name" json:"name" validate:"required"`
// Column mappings for the junction table
Columns ColumnRelation `yaml:"columns" json:"columns" validate:"required"`
}
+kubebuilder:object:generate=true
func (*JunctionTable) DeepCopy ¶ added in v1.3.1
func (in *JunctionTable) DeepCopy() *JunctionTable
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JunctionTable.
func (*JunctionTable) DeepCopyInto ¶ added in v1.3.1
func (in *JunctionTable) DeepCopyInto(out *JunctionTable)
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 search/geocoding capabilities based on OGC API Features.
// +optional
FeaturesSearch *OgcAPIFeaturesSearch `yaml:"featuresSearch,omitempty" json:"featuresSearch,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 GeoVolumesCollections `yaml:"collections" json:"collections"`
// Whether JSON responses will be validated against the OpenAPI spec
// since it has a 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 FeaturesCollections `yaml:"collections" json:"collections" validate:"required,dive"`
// Limits the number 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, postgres, 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 a 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
// Maximum number of decimals allowed in geometry coordinates. When not specified (default value of 0) no limit is enforced.
// +optional
// +kubebuilder:validation:Minimum=0
MaxDecimals int `yaml:"maxDecimals,omitempty" json:"maxDecimals,omitempty" default:"0"`
// Force timestamps in features to the UTC timezone.
//
// +kubebuilder:default=false
// +optional
ForceUTC bool `yaml:"forceUtc,omitempty" json:"forceUtc,omitempty"`
}
+kubebuilder:object:generate=true
func (*OgcAPIFeatures) CollectionSRS ¶ added in v1.0.0
func (oaf *OgcAPIFeatures) CollectionSRS(collectionID string) []string
func (*OgcAPIFeatures) CollectionsSRS ¶ added in v1.0.0
func (oaf *OgcAPIFeatures) CollectionsSRS() []string
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.
type OgcAPIFeaturesSearch ¶ added in v1.5.0
type OgcAPIFeaturesSearch 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 available for search through this API
Collections FeaturesSearchCollections `yaml:"collections" json:"collections" validate:"required,dive"`
// One or more datasources to get the features from (geopackages, postgres, 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 a 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
// Maximum number of decimals allowed in geometry coordinates. When not specified (default value of 0) no limit is enforced.
// +optional
// +kubebuilder:validation:Minimum=0
MaxDecimals int `yaml:"maxDecimals,omitempty" json:"maxDecimals,omitempty" default:"0"`
// Force timestamps in features to the UTC timezone.
//
// +kubebuilder:default=false
// +optional
ForceUTC bool `yaml:"forceUtc,omitempty" json:"forceUtc,omitempty"`
// Settings related to the search API/index.
// +optional
SearchSettings SearchSettings `yaml:"searchSettings" json:"searchSettings"`
}
+kubebuilder:object:generate=true
func (*OgcAPIFeaturesSearch) CollectionSRS ¶ added in v1.7.2
func (fs *OgcAPIFeaturesSearch) CollectionSRS(_ string) []string
func (*OgcAPIFeaturesSearch) CollectionsSRS ¶ added in v1.7.2
func (fs *OgcAPIFeaturesSearch) CollectionsSRS() []string
func (*OgcAPIFeaturesSearch) DeepCopy ¶ added in v1.5.0
func (in *OgcAPIFeaturesSearch) DeepCopy() *OgcAPIFeaturesSearch
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OgcAPIFeaturesSearch.
func (*OgcAPIFeaturesSearch) DeepCopyInto ¶ added in v1.5.0
func (in *OgcAPIFeaturesSearch) DeepCopyInto(out *OgcAPIFeaturesSearch)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
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 TilesCollections `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
func (OgcAPITiles) MarshalJSON ¶ added in v0.71.1
func (o OgcAPITiles) 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 (*OgcAPITiles) UnmarshalJSON ¶ added in v0.71.1
func (o *OgcAPITiles) UnmarshalJSON(b []byte) error
UnmarshalJSON parses a string to OgcAPITiles.
type OgcAPITilesJSON ¶ added in v0.71.1
type OgcAPITilesJSON struct {
*Tiles `json:",inline"`
Collections []TilesCollection `json:"collections,omitempty"`
}
type OnTheFlyDatasource ¶ added in v1.0.0
type OnTheFlyDatasource struct {
// List of supported SRS/CRS
SupportedSrs []OnTheFlySupportedSrs `yaml:"supportedSrs,omitempty" json:"supportedSrs,omitempty" validate:"dive,omitempty"`
// The datasource capable of on-the-fly reprojection/transformation
Datasource `yaml:",inline" json:",inline"`
}
+kubebuilder:object:generate=true
func (*OnTheFlyDatasource) DeepCopy ¶ added in v1.0.0
func (in *OnTheFlyDatasource) DeepCopy() *OnTheFlyDatasource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OnTheFlyDatasource.
func (*OnTheFlyDatasource) DeepCopyInto ¶ added in v1.0.0
func (in *OnTheFlyDatasource) DeepCopyInto(out *OnTheFlyDatasource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OnTheFlySupportedSrs ¶ added in v1.0.0
type OnTheFlySupportedSrs struct {
// Supported coordinated reference systems (CRS/SRS) for on-the-fly reprojection/transformation.
// Note: no need to add 'OGC:CRS84', since that one is required and included by default.
// +kubebuilder:validation:Pattern=`^EPSG:\d+$`
Srs string `yaml:"srs" json:"srs" validate:"required,startswith=EPSG:"`
}
+kubebuilder:object:generate=true
func (*OnTheFlySupportedSrs) DeepCopy ¶ added in v1.0.0
func (in *OnTheFlySupportedSrs) DeepCopy() *OnTheFlySupportedSrs
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OnTheFlySupportedSrs.
func (*OnTheFlySupportedSrs) DeepCopyInto ¶ added in v1.0.0
func (in *OnTheFlySupportedSrs) DeepCopyInto(out *OnTheFlySupportedSrs)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Postgres ¶ added in v1.0.0
type Postgres struct {
DatasourceCommon `yaml:",inline" json:",inline"`
// Hostname of the PostgreSQL server.
// +kubebuilder:default="localhost"
// +optional
Host string `yaml:"host" json:"host" validate:"required" default:"localhost"`
// Port number of the PostgreSQL server.
// +kubebuilder:default=5432
// +optional
Port uint `yaml:"port" json:"port" validate:"required,port" default:"5432"`
// Name of the PostgreSQL database containing the data.
// +kubebuilder:default="postgres"
// +optional
DatabaseName string `yaml:"databaseName" json:"databaseName" validate:"required" default:"postgres"`
// Name of the PostgreSQL schema containing the data.
// +kubebuilder:default="public"
// +optional
Schema string `yaml:"schema" json:"schema" validate:"required" default:"public"`
// The SSL mode to use, e.g. 'disable', 'allow', 'prefer', 'require', 'verify-ca' or 'verify-full'.
// +kubebuilder:validation:Enum=disable;allow;prefer;require;verify-ca;verify-full
// +kubebuilder:default="disable"
// +optional
SSLMode string `yaml:"sslMode" json:"sslMode" validate:"required" default:"disable"`
// Username when connecting to the PostgreSQL server.
// +kubebuilder:default="postgres"
// +optional
User string `yaml:"user" json:"user" validate:"required" default:"postgres"`
// Password when connecting to the PostgreSQL server.
// +kubebuilder:default="postgres"
// +optional
Pass string `yaml:"pass" json:"pass" validate:"required" default:"postgres"`
// When true the geometry 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
SpatialIndexRequired *bool `yaml:"spatialIndexRequired,omitempty" json:"spatialIndexRequired,omitempty" default:"true"`
}
+kubebuilder:object:generate=true
func (*Postgres) ConnectionString ¶ added in v1.0.0
func (*Postgres) DeepCopy ¶ added in v1.0.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Postgres.
func (*Postgres) DeepCopyInto ¶ added in v1.0.0
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 a 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 RelatedOGCAPIFeaturesCollection ¶ added in v1.5.0
type RelatedOGCAPIFeaturesCollection struct {
// Base URL/Href to the OGC Features API.
//
// Only required when the given collection is hosted on a different server than the search API
// (in a separate deployment).Otherwise, the base URL of this server is used.
//
// +kubebuilder:validation:Type=string
APIBaseURL URL `yaml:"api,omitempty" json:"api,omitempty"`
// Geometry type of the features in the related collection.
// A collection in an OGC Features API has a single geometry type.
// But a searchable collection has no geometry type distinction and thus
// could be assembled of multiple OGC Feature API collections (with the same feature type).
//
// +kubebuilder:validation:Enum=point;multipoint;linestring;multilinestring;polygon;multipolygon
GeometryType string `yaml:"geometryType" json:"geometryType" validate:"required"`
// Collection ID in the OGC Features API. This can be a collection on this
// server (listed under ogcApi>Features>Collections) or a remote collection on another server.
CollectionID string `yaml:"collection" json:"collection" validate:"required,lowercase_id"`
}
+kubebuilder:object:generate=true
func (*RelatedOGCAPIFeaturesCollection) CollectionURL ¶ added in v1.5.0
func (rel *RelatedOGCAPIFeaturesCollection) CollectionURL(baseURL URL) string
func (*RelatedOGCAPIFeaturesCollection) DeepCopy ¶ added in v1.5.0
func (in *RelatedOGCAPIFeaturesCollection) DeepCopy() *RelatedOGCAPIFeaturesCollection
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RelatedOGCAPIFeaturesCollection.
func (*RelatedOGCAPIFeaturesCollection) DeepCopyInto ¶ added in v1.5.0
func (in *RelatedOGCAPIFeaturesCollection) DeepCopyInto(out *RelatedOGCAPIFeaturesCollection)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Relation ¶ added in v1.3.1
type Relation struct {
// Name of the related collection
RelatedCollection string `yaml:"collection" json:"collection" validate:"required"`
// Optional prefix (infix actually) with a functional name for the relation. To distinguish multiple relations to the same collection/table.
// +optional
Prefix string `yaml:"prefix,omitempty" json:"prefix,omitempty"`
// Column mappings between collections
Columns ColumnRelation `yaml:"columns" json:"columns" validate:"required"`
// Junction defines a junction/mapping table between collections in case this is a many-to-many relationship
Junction JunctionTable `yaml:"junction,omitempty" json:"junction,omitempty" validate:"required"`
}
+kubebuilder:object:generate=true
func (*Relation) DeepCopy ¶ added in v1.3.1
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Relation.
func (*Relation) DeepCopyInto ¶ added in v1.3.1
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 SearchSettings ¶ added in v1.5.0
type SearchSettings struct {
// Name of the search index in the data store.
// +kubebuilder:default=search_index
IndexName string `yaml:"indexName" json:"indexName" default:"search_index" validate:"required"`
// ADVANCED SETTING. Normalization specifies whether and how a document's length should impact its rank.
// Possible values are 0, 1, 2, 4, 8, 16 and 32. For more information see https://www.postgresql.org/docs/current/textsearch-controls.html
// +kubebuilder:default=1
RankNormalization int `yaml:"rankNormalization,omitempty" json:"rankNormalization,omitempty" default:"1" validate:"gt=0"`
// ADVANCED SETTING. Multiply the exact match rank to boost it above the wildcard matches.
// +kubebuilder:validation:Pattern=`^-?\d+(\.\d+)?$`
// +kubebuilder:default="3.0"
ExactMatchMultiplier string `yaml:"exactMatchMultiplier,omitempty" json:"exactMatchMultiplier,omitempty" default:"3.0" validate:"numeric,gt=0"`
// ADVANCED SETTING. The primary suggest is equal to the display name. With this multiplier you can boost it above other suggests.
// +kubebuilder:validation:Pattern=`^-?\d+(\.\d+)?$`
// +kubebuilder:default="1.01"
PrimarySuggestMultiplier string `yaml:"primarySuggestMultiplier,omitempty" json:"primarySuggestMultiplier,omitempty" default:"1.01" validate:"numeric,gt=0"`
// ADVANCED SETTING. The threshold above which results are pre-ranked instead ranked exactly.
// +kubebuilder:default=40000
RankThreshold int `yaml:"rankThreshold,omitempty" json:"rankThreshold,omitempty" default:"40000" validate:"gt=0"`
// ADVANCED SETTING. The number of results which are pre-ranked when the rank threshold is hit.
// +kubebuilder:default=10
PreRankLimitMultiplier int `yaml:"preRankLimitMultiplier,omitempty" json:"preRankLimitMultiplier,omitempty" default:"10" validate:"gt=0"`
// ADVANCED SETTING. Pre-ranking is based on word count. Results with a word count above this cutoff are not eligible for pre-ranking.
// +kubebuilder:default=3
PreRankWordCountCutoff int `yaml:"preRankWordCountCutoff,omitempty" json:"preRankWordCountCutoff,omitempty" default:"3" validate:"gt=0"`
// ADVANCED SETTING. When true synonyms are taken into account during exact match calculation.
// +kubebuilder:default=false
SynonymsExactMatch bool `yaml:"synonymsExactMatch,omitempty" json:"synonymsExactMatch,omitempty" default:"false"`
}
+kubebuilder:object:generate=true
func (*SearchSettings) DeepCopy ¶ added in v1.5.0
func (in *SearchSettings) DeepCopy() *SearchSettings
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SearchSettings.
func (*SearchSettings) DeepCopyInto ¶ added in v1.5.0
func (in *SearchSettings) DeepCopyInto(out *SearchSettings)
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"`
// Reference to a PNG image to offer as legend to end users.
// The full path is constructed by appending Resources + Legend.
// +optional
Legend *string `yaml:"legend,omitempty" json:"legend,omitempty" validate:"omitempty,endswith=.png"`
// 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 Theme ¶ added in v0.82.0
type Theme struct {
Logo *ThemeLogo `yaml:"logo" json:"logo" validate:"required"`
Color *ThemeColors `yaml:"color" json:"color" validate:"required"`
Includes *ThemeIncludes `yaml:"includes" json:"includes"`
}
type ThemeColors ¶ added in v0.82.0
type ThemeIncludes ¶ added in v0.84.0
type ThemeLogo ¶ added in v0.82.0
type ThemeLogo struct {
Header string `yaml:"header" json:"header" validate:"required"`
Opengraph string `yaml:"opengraph" json:"opengraph" validate:"required"`
Favicon string `yaml:"favicon" json:"favicon" validate:"required"`
Favicon16 string `yaml:"favicon16" json:"favicon16" validate:"required"`
Favicon32 string `yaml:"favicon32" json:"favicon32" validate:"required"`
}
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 TilesCollection ¶ added in v1.7.0
type TilesCollection 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"`
// Tiles specific to this collection. Called 'geodata tiles' in OGC spec.
GeoDataTiles Tiles `yaml:",inline" json:",inline" validate:"required"`
}
+kubebuilder:object:generate=true
func (*TilesCollection) DeepCopy ¶ added in v1.7.0
func (in *TilesCollection) DeepCopy() *TilesCollection
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TilesCollection.
func (*TilesCollection) DeepCopyInto ¶ added in v1.7.0
func (in *TilesCollection) DeepCopyInto(out *TilesCollection)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (TilesCollection) GetID ¶ added in v1.7.0
func (ct TilesCollection) GetID() string
func (TilesCollection) GetLinks ¶ added in v1.7.0
func (ct TilesCollection) GetLinks() *CollectionLinks
func (TilesCollection) GetMetadata ¶ added in v1.7.0
func (ct TilesCollection) GetMetadata() *GeoSpatialCollectionMetadata
func (TilesCollection) MarshalJSON ¶ added in v1.7.0
func (ct TilesCollection) 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 (TilesCollection) Merge ¶ added in v1.7.0
func (ct TilesCollection) Merge(other GeoSpatialCollection) GeoSpatialCollection
func (TilesCollection) UnmarshalJSON ¶ added in v1.7.0
func (ct TilesCollection) UnmarshalJSON(b []byte) error
UnmarshalJSON parses a string to TilesCollection.
type TilesCollections ¶ added in v1.7.0
type TilesCollections []TilesCollection
func (TilesCollections) ContainsID ¶ added in v1.7.0
func (cst TilesCollections) ContainsID(id string) bool
ContainsID check if a given collection - by ID - exists.
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.
Source Files
¶
- collection.go
- collection_metadata.go
- config.go
- duration.go
- language.go
- lowercase_id.go
- mediatype.go
- ogcapi_3dgeovolumes.go
- ogcapi_features.go
- ogcapi_features_datasources.go
- ogcapi_features_relations.go
- ogcapi_features_search.go
- ogcapi_processes.go
- ogcapi_styles.go
- ogcapi_tiles.go
- theme.go
- url.go
- zz_generated.deepcopy.go