UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

831 lines (816 loc) 22.6 kB
// SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project /** * STAC EO Extension for STAC Items. */ export type EOExtension = | ({ type: 'Feature'; properties: Fields; assets: { [k: string]: Fields; }; [k: string]: unknown; } & StacExtensions) | ({ type: 'Collection'; assets?: { [k: string]: Fields; }; item_assets?: { [k: string]: Fields; }; [k: string]: unknown; } & StacExtensions); export type CloudCover = number; export type Bands = [Band, ...Band[]]; export type NameOfTheBand = string; export type CommonNameOfTheBand = | 'coastal' | 'blue' | 'green' | 'red' | 'rededge' | 'yellow' | 'pan' | 'nir' | 'nir08' | 'nir09' | 'cirrus' | 'swir16' | 'swir22' | 'lwir' | 'lwir11' | 'lwir12'; export type CenterWavelength = number; export type FullWidthHalfMaxFWHM = number; export interface Fields { 'eo:cloud_cover'?: CloudCover; 'eo:bands'?: Bands; /** * This interface was referenced by `Fields`'s JSON-Schema definition * via the `patternProperty` "^(?!eo:)". */ [k: string]: unknown; } export interface Band { name?: NameOfTheBand; common_name?: CommonNameOfTheBand; center_wavelength?: CenterWavelength; full_width_half_max?: FullWidthHalfMaxFWHM; [k: string]: unknown; } export interface StacExtensions { stac_extensions: unknown[]; [k: string]: unknown; } export type STACItem = Core; export type Core = GeoJSONFeature & ( | { geometry: GeoJSONGeometry; bbox: { [k: string]: unknown; } & number[]; [k: string]: unknown; } | { geometry: null; bbox?: { [k: string]: unknown; }; [k: string]: unknown; } ) & { stac_version: STACVersion; stac_extensions?: STACExtensions; id: ProviderID; links: ItemLinks; assets: AssetLinks; properties: CommonMetadata & ( | { datetime: { [k: string]: unknown; }; [k: string]: unknown; } | { [k: string]: unknown; } ); [k: string]: unknown; }; export type GeoJSONGeometry = | GeoJSONPoint2 | GeoJSONLineString2 | GeoJSONPolygon2 | GeoJSONMultiPoint2 | GeoJSONMultiLineString2 | GeoJSONMultiPolygon2; export type STACVersion = '1.0.0'; export type ReferenceToAJSONSchema = string; export type STACExtensions = ReferenceToAJSONSchema[]; /** * Provider item ID */ export type ProviderID = string; export type LinkReference = string; export type LinkRelationType = string; export type LinkType = string; export type LinkTitle = string; /** * Links to item relations */ export type ItemLinks = Link[]; export type Asset = { href: AssetReference; title?: AssetTitle; description?: AssetDescription; type?: AssetType; roles?: AssetRoles; [k: string]: unknown; } & CommonMetadata; export type AssetReference = string; export type AssetTitle = string; export type AssetDescription = string; export type AssetType = string; export type AssetRoles = string[]; export type CommonMetadata = BasicDescriptiveFields & DateAndTimeFields & InstrumentFields & LicensingFields & ProviderFields; /** * A human-readable title describing the Item. */ export type ItemTitle = string; /** * Detailed multi-line description to fully explain the Item. */ export type ItemDescription = string; /** * The searchable date/time of the assets, in UTC (Formatted in RFC 3339) */ export type DateAndTime = string | null; /** * The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) */ export type StartDateAndTime = string; /** * The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) */ export type EndDateAndTime = string; export type CreationTime = string; export type LastUpdateTime = string; export type Platform = string; export type Instruments = string[]; export type Constellation = string; export type Mission = string; export type GroundSampleDistance = number; export type OrganizationName = string; export type OrganizationDescription = string; export type OrganizationRoles = ('producer' | 'licensor' | 'processor' | 'host')[]; export type OrganizationHomepage = string; export type Providers = { name: OrganizationName; description?: OrganizationDescription; roles?: OrganizationRoles; url?: OrganizationHomepage; [k: string]: unknown; }[]; export interface GeoJSONFeature { type: 'Feature'; id?: number | string; properties: null | { [k: string]: unknown; }; geometry: | null | GeoJSONPoint | GeoJSONLineString | GeoJSONPolygon | GeoJSONMultiPoint | GeoJSONMultiLineString | GeoJSONMultiPolygon | GeoJSONGeometryCollection; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONPoint { type: 'Point'; coordinates: [number, number, ...number[]]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONLineString { type: 'LineString'; coordinates: [ [number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][] ]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONPolygon { type: 'Polygon'; coordinates: [ [number, number, ...number[]], [number, number, ...number[]], [number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][] ][]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONMultiPoint { type: 'MultiPoint'; coordinates: [number, number, ...number[]][]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONMultiLineString { type: 'MultiLineString'; coordinates: [ [number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][] ][]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONMultiPolygon { type: 'MultiPolygon'; coordinates: [ [number, number, ...number[]], [number, number, ...number[]], [number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][] ][][]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONGeometryCollection { type: 'GeometryCollection'; geometries: ( | GeoJSONPoint1 | GeoJSONLineString1 | GeoJSONPolygon1 | GeoJSONMultiPoint1 | GeoJSONMultiLineString1 | GeoJSONMultiPolygon1 )[]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONPoint1 { type: 'Point'; coordinates: [number, number, ...number[]]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONLineString1 { type: 'LineString'; coordinates: [ [number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][] ]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONPolygon1 { type: 'Polygon'; coordinates: [ [number, number, ...number[]], [number, number, ...number[]], [number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][] ][]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONMultiPoint1 { type: 'MultiPoint'; coordinates: [number, number, ...number[]][]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONMultiLineString1 { type: 'MultiLineString'; coordinates: [ [number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][] ][]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONMultiPolygon1 { type: 'MultiPolygon'; coordinates: [ [number, number, ...number[]], [number, number, ...number[]], [number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][] ][][]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONPoint2 { type: 'Point'; coordinates: [number, number, ...number[]]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONLineString2 { type: 'LineString'; coordinates: [ [number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][] ]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONPolygon2 { type: 'Polygon'; coordinates: [ [number, number, ...number[]], [number, number, ...number[]], [number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][] ][]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONMultiPoint2 { type: 'MultiPoint'; coordinates: [number, number, ...number[]][]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONMultiLineString2 { type: 'MultiLineString'; coordinates: [ [number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][] ][]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface GeoJSONMultiPolygon2 { type: 'MultiPolygon'; coordinates: [ [number, number, ...number[]], [number, number, ...number[]], [number, number, ...number[]], [number, number, ...number[]], ...[number, number, ...number[]][] ][][]; bbox?: [number, number, number, number, ...number[]]; [k: string]: unknown; } export interface Link { href: LinkReference; rel: LinkRelationType; type?: LinkType; title?: LinkTitle; [k: string]: unknown; } /** * Links to assets */ export interface AssetLinks { [k: string]: Asset; } export interface BasicDescriptiveFields { title?: ItemTitle; description?: ItemDescription; [k: string]: unknown; } export interface DateAndTimeFields { datetime?: DateAndTime; start_datetime?: StartDateAndTime; end_datetime?: EndDateAndTime; created?: CreationTime; updated?: LastUpdateTime; [k: string]: unknown; } export interface InstrumentFields { platform?: Platform; instruments?: Instruments; constellation?: Constellation; mission?: Mission; gsd?: GroundSampleDistance; [k: string]: unknown; } export interface LicensingFields { license?: string; [k: string]: unknown; } export interface ProviderFields { providers?: Providers; [k: string]: unknown; } /** * This object represents Collections in a SpatioTemporal Asset Catalog. */ export type STACCollectionSpecification = STACCollection; export type STACVersion = '1.0.0'; export type ReferenceToAJSONSchema = string; export type STACExtensions = ReferenceToAJSONSchema[]; export type TypeOfSTACEntity = 'Collection'; export type Identifier = string; export type Title = string; export type Description = string; export type Keywords = string[]; export type CollectionLicenseName = string; export type OrganizationName = string; export type OrganizationDescription = string; export type OrganizationRoles = ('producer' | 'licensor' | 'processor' | 'host')[]; export type OrganizationHomepage = string; export type SpatialExtents = [SpatialExtent, ...SpatialExtent3[]]; export type SpatialExtent = SpatialExtent1 & SpatialExtent2; export type SpatialExtent1 = | { [k: string]: unknown; } | { [k: string]: unknown; }; export type SpatialExtent2 = number[]; export type SpatialExtent3 = SpatialExtent1 & SpatialExtent2; export type TemporalExtents = [TemporalExtent, ...TemporalExtent[]]; export type TemporalExtent = [string | null, string | null]; export type AssetReference = string; export type AssetTitle = string; export type AssetDescription = string; export type AssetType = string; export type AssetRoles = string[]; /** * A human-readable title describing the Item. */ export type ItemTitle = string; /** * Detailed multi-line description to fully explain the Item. */ export type ItemDescription = string; /** * The searchable date/time of the assets, in UTC (Formatted in RFC 3339) */ export type DateAndTime = string | null; /** * The searchable start date/time of the assets, in UTC (Formatted in RFC 3339) */ export type StartDateAndTime = string; /** * The searchable end date/time of the assets, in UTC (Formatted in RFC 3339) */ export type EndDateAndTime = string; export type CreationTime = string; export type LastUpdateTime = string; export type Platform = string; export type Instruments = string[]; export type Constellation = string; export type Mission = string; export type GroundSampleDistance = number; export type OrganizationName1 = string; export type OrganizationDescription1 = string; export type OrganizationRoles1 = ('producer' | 'licensor' | 'processor' | 'host')[]; export type OrganizationHomepage1 = string; export type Providers = { name: OrganizationName1; description?: OrganizationDescription1; roles?: OrganizationRoles1; url?: OrganizationHomepage1; [k: string]: unknown; }[]; export type LinkReference = string; export type LinkRelationType = string; export type LinkType = string; export type LinkTitle = string; export type Links = Link[]; export type JSONSchema = CoreSchemaMetaSchema; export type CoreSchemaMetaSchema = | { $id?: string; $schema?: string; $ref?: string; $comment?: string; title?: string; description?: string; default?: true; readOnly?: boolean; writeOnly?: boolean; examples?: true[]; multipleOf?: number; maximum?: number; exclusiveMaximum?: number; minimum?: number; exclusiveMinimum?: number; maxLength?: number; minLength?: number; pattern?: string; additionalItems?: CoreSchemaMetaSchema; items?: CoreSchemaMetaSchema | [CoreSchemaMetaSchema, ...CoreSchemaMetaSchema[]]; maxItems?: number; minItems?: number; uniqueItems?: boolean; contains?: CoreSchemaMetaSchema; maxProperties?: number; minProperties?: number; required?: string[]; additionalProperties?: CoreSchemaMetaSchema; definitions?: { [k: string]: CoreSchemaMetaSchema; }; properties?: { [k: string]: CoreSchemaMetaSchema; }; patternProperties?: { [k: string]: CoreSchemaMetaSchema; }; dependencies?: { [k: string]: CoreSchemaMetaSchema | string[]; }; propertyNames?: CoreSchemaMetaSchema; const?: true; enum?: [true, ...unknown[]]; type?: | ('array' | 'boolean' | 'integer' | 'null' | 'number' | 'object' | 'string') | [ 'array' | 'boolean' | 'integer' | 'null' | 'number' | 'object' | 'string', ...('array' | 'boolean' | 'integer' | 'null' | 'number' | 'object' | 'string')[] ]; format?: string; contentMediaType?: string; contentEncoding?: string; if?: CoreSchemaMetaSchema; then?: CoreSchemaMetaSchema; else?: CoreSchemaMetaSchema; allOf?: [CoreSchemaMetaSchema, ...CoreSchemaMetaSchema[]]; anyOf?: [CoreSchemaMetaSchema, ...CoreSchemaMetaSchema[]]; oneOf?: [CoreSchemaMetaSchema, ...CoreSchemaMetaSchema[]]; not?: CoreSchemaMetaSchema; [k: string]: unknown; } | boolean; export type MinimumValue = number | string; export type MaximumValue = number | string; export type SetOfValues = [ { [k: string]: unknown; }, ...{ [k: string]: unknown; }[] ]; /** * These are the fields specific to a STAC Collection. All other fields are inherited from STAC Catalog. */ export interface STACCollection { stac_version: STACVersion; stac_extensions?: STACExtensions; type: TypeOfSTACEntity; id: Identifier; title?: Title; description: Description; keywords?: Keywords; license: CollectionLicenseName; providers?: { name: OrganizationName; description?: OrganizationDescription; roles?: OrganizationRoles; url?: OrganizationHomepage; [k: string]: unknown; }[]; extent: Extents; assets?: AssetLinks; links: Links; summaries?: Summaries; [k: string]: unknown; } export interface Extents { spatial: SpatialExtentObject; temporal: TemporalExtentObject; [k: string]: unknown; } export interface SpatialExtentObject { bbox: SpatialExtents; [k: string]: unknown; } export interface TemporalExtentObject { interval: TemporalExtents; [k: string]: unknown; } /** * Links to assets */ export interface AssetLinks { [k: string]: { href: AssetReference; title?: AssetTitle; description?: AssetDescription; type?: AssetType; roles?: AssetRoles; [k: string]: unknown; } & (BasicDescriptiveFields & DateAndTimeFields & InstrumentFields & LicensingFields & ProviderFields); } export interface BasicDescriptiveFields { title?: ItemTitle; description?: ItemDescription; [k: string]: unknown; } export interface DateAndTimeFields { datetime?: DateAndTime; start_datetime?: StartDateAndTime; end_datetime?: EndDateAndTime; created?: CreationTime; updated?: LastUpdateTime; [k: string]: unknown; } export interface InstrumentFields { platform?: Platform; instruments?: Instruments; constellation?: Constellation; mission?: Mission; gsd?: GroundSampleDistance; [k: string]: unknown; } export interface LicensingFields { license?: string; [k: string]: unknown; } export interface ProviderFields { providers?: Providers; [k: string]: unknown; } export interface Link { href: LinkReference; rel: LinkRelationType; type?: LinkType; title?: LinkTitle; [k: string]: unknown; } export interface Summaries { [k: string]: JSONSchema | Range | SetOfValues; } export interface Range { minimum: MinimumValue; maximum: MaximumValue; [k: string]: unknown; } export type AssetTitle = string; export type AssetDescription = string; export type AssetType = string; export type AssetRoles = string[]; /** * STAC Item Assets Definition Extension for STAC Collections. */ export interface ItemAssetsDefinitionExtension { stac_extensions: unknown[]; type: 'Collection'; item_assets: { [k: string]: { href?: DisallowHref; title?: AssetTitle; description?: AssetDescription; type?: AssetType; roles?: AssetRoles; [k: string]: unknown; }; }; [k: string]: unknown; } export interface DisallowHref { [k: string]: unknown; } /** * STAC Raster Extension for STAC Items. */ export type RasterExtension = | ({ type: 'Feature'; assets: { [k: string]: Assetfields; }; [k: string]: unknown; } & StacExtensions) | { type: 'Collection'; assets?: { [k: string]: Assetfields; }; item_assets?: { [k: string]: Assetfields; }; [k: string]: unknown; }; export type Bands = [Band, ...Band[]]; export type DataTypeOfTheBand = | 'int8' | 'int16' | 'int32' | 'int64' | 'uint8' | 'uint16' | 'uint32' | 'uint64' | 'float16' | 'float32' | 'float64' | 'cint16' | 'cint32' | 'cfloat32' | 'cfloat64' | 'other'; export type UnitDenominationOfThePixelValue = string; export type TheActualNumberOfBitsUsedForThisBand = number; export type PixelSamplingInTheBand = 'area' | 'point'; export type NoDataPixelValue = number | ('nan' | 'inf' | '-inf'); export type MultiplicatorFactorOfThePixelValueToTransformIntoTheValue = number; export type NumberToBeAddedToThePixelValueToTransformIntoTheValue = number; export type AverageSpatialResolutionInMetersOfThePixelsInTheBand = number; export type MeanValueOfAllThePixelsInTheBand = number; export type MinimumValueOfAllThePixelsInTheBand = number; export type MaximumValueOfAllThePixelsInTheBand = number; export type StandardDeviationValueOfAllThePixelsInTheBand = number; export type PercentageOfValidNotNodataPixel = number; export type NumberOfBuckets = number; export type MinimumValueOfTheBuckets = number; export type MaximumValueOfTheBuckets = number; export type DistributionBuckets = [ NumberOfPixelsInTheBucket, NumberOfPixelsInTheBucket, NumberOfPixelsInTheBucket, ...NumberOfPixelsInTheBucket[] ]; export type NumberOfPixelsInTheBucket = number; export interface Assetfields { 'raster:bands'?: Bands; /** * This interface was referenced by `Assetfields`'s JSON-Schema definition * via the `patternProperty` "^(?!raster:)". */ [k: string]: { [k: string]: unknown; }; } export interface Band { data_type?: DataTypeOfTheBand; unit?: UnitDenominationOfThePixelValue; bits_per_sample?: TheActualNumberOfBitsUsedForThisBand; sampling?: PixelSamplingInTheBand; nodata?: NoDataPixelValue; scale?: MultiplicatorFactorOfThePixelValueToTransformIntoTheValue; offset?: NumberToBeAddedToThePixelValueToTransformIntoTheValue; spatial_resolution?: AverageSpatialResolutionInMetersOfThePixelsInTheBand; statistics?: Statistics; histogram?: Histogram; [k: string]: unknown; } export interface Statistics { mean?: MeanValueOfAllThePixelsInTheBand; minimum?: MinimumValueOfAllThePixelsInTheBand; maximum?: MaximumValueOfAllThePixelsInTheBand; stddev?: StandardDeviationValueOfAllThePixelsInTheBand; valid_percent?: PercentageOfValidNotNodataPixel; } export interface Histogram { count: NumberOfBuckets; min: MinimumValueOfTheBuckets; max: MaximumValueOfTheBuckets; buckets: DistributionBuckets; } export interface StacExtensions { stac_extensions: unknown[]; [k: string]: unknown; } /** * STAC Item or Collection */ export type STACObject = STACItem | STACCollection; /** * STAC Item including our required extensions: EO and Raster */ export type CompleteSTACItem = STACItem & EOExtension & RasterExtension; /** * STAC Collection including our required extensions: Item Assets, EO, and Raster */ export type CompleteSTACCollection = STACCollection & ItemAssetsDefinitionExtension & EOExtension & RasterExtension; export type CompleteSTACObject = CompleteSTACItem | CompleteSTACCollection;