Protocol Documentation

Table of Contents

epl/protobuf/v1/geometry.proto

Top

EnvelopeData

Container for Envelope data (bounding box), x and y min and max and an optional spatial reference

FieldTypeLabelDescription
xmin double

min x value

ymin double

min y value

xmax double

max x value

ymax double

max y value

proj ProjectionData

spatial reference of envelope

zmin double

zmax double

FileRequestChunk

FieldTypeLabelDescription
nested_request GeometryRequest

result_encoding_type Encoding

input_proj ProjectionData

result_proj ProjectionData

data bytes

size int64

offset int64

file_name string

is_last_chunk bool

GeodeticInverse

FieldTypeLabelDescription
az12 double

Azimuth from the first to the second point

az21 double

Azimuth from the second to the first point

distance double

Geodesic distance

GeometryData

Container for Geometry data, has id, encoded geometry coordinates and shape, spatial reference and envelope

FieldTypeLabelDescription
geometry_id uint64

geometry id as an integer

feature_id string

feature id as a string (for guids and other ids that aren't numeric)

wkt string

well known text format for geometry encoding, https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry

geojson string

geojson format for geometry encoding, https://en.wikipedia.org/wiki/GeoJSON

wkb bytes

well known binary format for geometry encoding, https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary

esri_shape bytes

ESRI shape binary format for geometry encoding (fastest decoding and encoding for geometry service) https://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

ewkb bytes

extended well known binary format

proj ProjectionData

spatial reference of geometry

envelope EnvelopeData

envelope or bounding box of geometry

simple SimpleState

state of the geometry topological correctness. at geometry creation, it is unknown if it is simple

GeometryRequest

response message for insertion and updates to stac db

FieldTypeLabelDescription
geometry GeometryData

geometry to be operated on

left_geometry GeometryData

if there are two geometries to operate on, then this is the first geometry

geometry_request GeometryRequest

the result of the geometry request is to be operated on by this request

left_geometry_request GeometryRequest

if there are two geometries, the left geometry request is to be operated on by this request

right_geometry GeometryData

if there are two geometries to operate on, then this is the second geometry

right_geometry_request GeometryRequest

if there are two geometries, the right geometry request is to be operated on by this request

operator OperatorType

(default is PROJECT) geometry operation to perform on input geometries

result_encoding Encoding

(default is wkb) encoding, wkt, wkb, esri_shape, etc

operation_proj ProjectionData

(optional) the spatial reference the geometric operation should take place in. If both inputs are in different spatial references, you can use this to define a common reference system for the geometric operation.

result_proj ProjectionData

(optional) after the operation has been completed, project the results to a new spatial reference.

buffer_params Params.Buffer

convex_params Params.Convex

relate_params Params.Relate

random_points_params Params.RandomPoints

generalize_params Params.Generalize

intersection_params Params.Intersection

offset_params Params.Offset

cut_params Params.Cut

clip_params Params.Clip

densify_params Params.Densify

simplify_params Params.Simplify

generalize_by_area_params Params.GeneralizeByArea

affine_transform_params Params.AffineTransform

geodetic_buffer_params Params.GeodeticBuffer

GeometryResponse

response message geometry request

FieldTypeLabelDescription
geometry GeometryData

if geometry result, then this field holds the geometry data

spatial_relationship bool

if a topo spatial relationship request, then this field holds the true or false result

measure double

a measure result will be a float for area and length requests

geodetic_inverse GeodeticInverse

relate_map GeometryResponse.RelateMapEntry repeated

GeometryResponse.RelateMapEntry

FieldTypeLabelDescription
key int64

value bool

Params

Params.AffineTransform

FieldTypeLabelDescription
geodetic bool

x_offset double

y_offset double

Params.Buffer

oneof https://github.com/golang/protobuf/issues/283

oneof densifier {

FieldTypeLabelDescription
distance double

max_deviation double

union_result bool

oneof https://github.com/golang/protobuf/issues/283 }

max_vertices_in_full_circle int32

Params.Clip

FieldTypeLabelDescription
envelope EnvelopeData

Params.Convex

FieldTypeLabelDescription
merge bool

Params.Cut

FieldTypeLabelDescription
consider_touch bool

Params.Densify

FieldTypeLabelDescription
max_length double

Params.Generalize

FieldTypeLabelDescription
max_deviation double

remove_degenerates bool

Params.GeneralizeByArea

FieldTypeLabelDescription
percent_reduction double

oneof https://github.com/golang/protobuf/issues/283 oneof method {

max_point_count int32

remove_degenerates bool

Params.GeodeticBuffer

oneof https://github.com/golang/protobuf/issues/283

oneof densifier {

FieldTypeLabelDescription
distance double

max_deviation double

union_result bool

oneof https://github.com/golang/protobuf/issues/283 }

max_vertices_in_full_circle int32

Params.Intersection

FieldTypeLabelDescription
dimension_mask int32

Params.Offset

FieldTypeLabelDescription
distance double

join_type Params.Offset.OffsetJoinType

bevel_ratio double

flatten_error double

Params.RandomPoints

FieldTypeLabelDescription
points_per_square_km double

seed int64

Params.Relate

FieldTypeLabelDescription
de_9im string

Params.Simplify

FieldTypeLabelDescription
force bool

ProjectionData

Spatial Reference system. Used with a geometry to define the reference system of the geometry's coordinates

FieldTypeLabelDescription
epsg int32

epsg wkid (well know id), or srid (spatial reference id) of the projected or geographic coordinate system

proj4 string

proj string describing a projection or geographic coordinate system https://proj4.org/usage/projections.html

custom ProjectionData.Custom

custom projection

wkt string

well-known text string of spatial reference esri wkid (if not yet approved by epsg)

geometry GeometryData

bbox EnvelopeData

centroid GeometryData

shape uint32 repeated

transform double repeated

ProjectionData.Custom

Projected coordinate system that doesn't have a wkid / srid

FieldTypeLabelDescription
lon_0 double

longitude of center of projection (central meridian)

lat_0 double

latitude of center of projection (latitude of origin)

cs_type ProjectionData.CSType

enum defining the type of projection

Encoding

type of geometry encodings

NameNumberDescription
UNKNOWN_ENCODING 0

unknown type.

WKB 1

well-known binary

WKT 2

well-known text

GEOJSON 3

geojson

ESRI_SHAPE 4

esri shape binary

EWKB 5

extended well-known binary

FileRequestChunk.FileType

NameNumberDescription
SHAPEFILE 0

OperatorType

type of geometry operators

NameNumberDescription
UNKNOWN_OPERATOR 0

PROJECT 1

project geometry

EXPORT_TO_JSON 2

IMPORT_FROM_JSON 3

EXPORT_TO_ESRI_SHAPE 4

IMPORT_FROM_ESRI_SHAPE 5

UNION 6

union one or more geometries

DIFFERENCE 7

difference two geometries

PROXIMITY_2D 8

RELATE 9

EQUALS 10

DISJOINT 11

INTERSECTS 12

WITHIN 13

CONTAINS 14

CROSSES 15

TOUCHES 16

OVERLAPS 17

BUFFER 18

DISTANCE 19

INTERSECTION 20

CLIP 21

CUT 22

DENSIFY_BY_LENGTH 23

GEODESIC_BUFFER 26

GEODETIC_DENSIFY_BY_LENGTH 27

GEODETIC_AREA 30

SIMPLIFY 31

SIMPLIFY_OGC 32

OFFSET 33

GENERALIZE 34

GENERALIZE_BY_AREA 35

EXPORT_TO_WKB 36

IMPORT_FROM_WKB 37

EXPORT_TO_WKT 38

IMPORT_FROM_WKT 39

IMPORT_FROM_GEOJSON 40

EXPORT_TO_GEOJSON 41

SYMMETRIC_DIFFERENCE 42

CONVEX_HULL 43

BOUNDARY 44

RANDOM_POINTS 45

ENCLOSING_CIRCLE 46

AFFINE_TRANSFORM 47

GEODETIC_LENGTH 48

GEODETIC_INVERSE 49

EXPORT_TO_EWKB 50

IMPORT_FROM_EWKB 51

Params.Offset.OffsetJoinType

NameNumberDescription
ROUND 0

BEVEL 1

MITER 2

SQUARE 3

ProjectionData.CSType

Projection names

NameNumberDescription
LAMBERT_AZI 0

default is Lambert Azimuthal Equal Area Projection, with x origin x_0=4321000 and y origin y_0=3210000

SimpleState

the state of a geometry topological correctness

NameNumberDescription
SIMPLE_UNKNOWN 0

on creation, after projection and after generalization a geometry has state simple unknown (not know if simple or not)

WEAK_SIMPLE 1

weak simple (no self intersections, ring orientation is correct, but ring order is not)

STRONG_SIMPLE 2

same as weak simple + OGC ring order.

NON_SIMPLE 3

is_simple method has been run on the geometry and it is known to be non-simple, but the reason is unknown

STRUCTURE_FLAW 4

non-simple, because the structure is bad (0 size path, for example).

DEGENERATE_SEGMENTS 5

Non-simple, because there are degenerate segments.

CLUSTERING 6

Non-simple, because not clustered properly, that is there are non-coincident vertices closer than tolerance.

CRACKING 7

Non-simple, because not cracked properly (intersecting segments, overlaping segments)

CROSS_OVER 8

Non-simple, because there are crossovers (self intersections that are not cracking case).

RING_ORIENTATION 9

Non-simple, because holes or exteriors have wrong orientation. /** * The geometry is simple, but not strong-simple, because exteriors * and holes are not in the correct order, and separation into sub polygons is not possible. * Geometry needs to be resimplified with the bForceTest = true to fix this. */ RingOrder, /** * There is a self tangency or cross-over situation (strong simple, but not OGC simple) * Only OperatorSimplifyOGC returns this. */ OGCPolylineSelfTangency, /** * There is a self tangency situation (strong simple, but not OGC simple) * Only OperatorSimplifyOGC returns this. */ OGCPolygonSelfTangency, /** * Touching interioir rings make a disconnected point set from polygon interior * (strong simple, but not OGC simple). * Only OperatorSimplifyOGC returns this. */ OGCDisconnectedInterior

epl/protobuf/v1/geometry_service.proto

Top

GeometryService

gRPC Interfaces for working with geometry operators

Method NameRequest TypeResponse TypeDescription
Operate GeometryRequest GeometryResponse

Execute a single blocking geometry operation

OperateBiStream GeometryRequest stream GeometryResponse stream

stream in operator requests and get back a stream of results

OperateBiStreamFlow GeometryRequest stream GeometryResponse stream

manual flow control bi-directional stream. example go shouldn't use this because of https://groups.google.com/forum/#!topic/grpc-io/6_B46Oszb4k ?

OperateServerStream GeometryRequest GeometryResponse stream

Maybe a cut operation that returns a lot of different geometries? for now, this is not implemented.

OperateClientStream GeometryRequest stream GeometryResponse

Maybe something like a union operation. for now, this is not implemented.

FileOperateBiStreamFlow FileRequestChunk stream GeometryResponse stream

stream in file chunks for a geometry file type and stream back results for each geometry encountered

epl/protobuf/v1/query.proto

Top

DoubleFilter

FieldTypeLabelDescription
rel_type FilterRelationship

relationship type of the query. EQ, LTE, GTE, LT, GT, NEQ for `value` BETWEEN or NOT_BETWEEN for `start` with `end` IN or NOT_IN for use with `set`

value double

Singular double value that, combined with rel_type, allows you to search for floats that relate to this `value`. `value` field cannot be combined with BETWEEN or the NOT_BETWEEN FilterRelationship `rel_type`. That means you can use the EQ, LTE, GTE, LT, GT, NEQ FilterRelationship `rel_type`

start double

For searching by a range. `start` with BETWEEN searches for everything in the range from `start` to `end` `start` with NOT_BETWEEN searches for everything not in the range from `start` and `end`. must be accompanied by a `end` value

end double

For searching by a range. `end` with BETWEEN searches for everything in the range from `start` to `end` `end` with NOT_BETWEEN searches for everything not in the range from `start` and `end`. must be accompanied by a `start` value

sort_direction SortDirection

sort direction for the return values

set double repeated

'IN' or 'NOT IN' sql operations

FloatFilter

Query language for float fields.

FieldTypeLabelDescription
rel_type FilterRelationship

relationship type of the query. EQ, LTE, GTE, LT, GT, NEQ for `value` BETWEEN or NOT_BETWEEN for `start` with `end` IN or NOT_IN for use with `set`

value float

Singular float value that, combined with rel_type, allows you to search for floats that relate to this `value`. `value` field cannot be combined with BETWEEN or the NOT_BETWEEN FilterRelationship `rel_type`. That means you can use the EQ, LTE, GTE, LT, GT, NEQ FilterRelationship `rel_type`

start float

For searching by a range. `start` with BETWEEN searches for everything in the range from `start` to `end` `start` with NOT_BETWEEN searches for everything not in the range from `start` and `end`. must be accompanied by a `end` value

end float

For searching by a range. `end` with BETWEEN searches for everything in the range from `start` to `end` `end` with NOT_BETWEEN searches for everything not in the range from `start` and `end`. must be accompanied by a `start` value

sort_direction SortDirection

sort direction for the return values

set float repeated

'IN' or 'NOT IN' sql operations

StringFilter

FieldTypeLabelDescription
value string

for use with EQ, NEQ, LIKE and NOT_LIKE

rel_type FilterRelationship

relationship type of the query. EQ, NEQ for `value` IN or NOT_IN for use with `set` LIKE or NOT_LIKE test if the string in `value` matches or does not match the supplied pattern

set string repeated

For use with 'IN' or 'NOT IN' sql operations

TimestampFilter

FieldTypeLabelDescription
rel_type FilterRelationship

relationship type of the query. EQ, LTE, GTE, LT, GT, NEQ for `value` BETWEEN or NOT_BETWEEN for `start` with `end`

value google.protobuf.Timestamp

Singular Timestamp value that, combined with rel_type, allows you to search for floats that relate to this `value`. `value` field cannot be combined with BETWEEN or the NOT_BETWEEN FilterRelationship `rel_type`. That means you can use the EQ, LTE, GTE, LT, GT, NEQ FilterRelationship `rel_type`

start google.protobuf.Timestamp

For searching by a range. `start` with BETWEEN searches for everything in the range from `start` to `end` `start` with NOT_BETWEEN searches for everything not in the range from `start` and `end`. must be accompanied by a `end` value

end google.protobuf.Timestamp

For searching by a range. `end` with BETWEEN searches for everything in the range from `start` to `end` `end` with NOT_BETWEEN searches for everything not in the range from `start` and `end`. must be accompanied by a `start` value

sort_direction SortDirection

sort direction for the return values

UInt32Filter

FieldTypeLabelDescription
rel_type FilterRelationship

relationship type of the query. EQ, LTE, GTE, LT, GT, NEQ for `value` BETWEEN or NOT_BETWEEN for `start` with `end` IN or NOT_IN for use with `set`

value uint32

Singular unint32 value that, combined with rel_type, allows you to search for floats that relate to this `value`. `value` field cannot be combined with BETWEEN or the NOT_BETWEEN FilterRelationship `rel_type`. That means you can use the EQ, LTE, GTE, LT, GT, NEQ FilterRelationship `rel_type`

start uint32

For searching by a range. `start` with BETWEEN searches for everything in the range from `start` to `end` `start` with NOT_BETWEEN searches for everything not in the range from `start` and `end`. must be accompanied by a `end` value

end uint32

For searching by a range. `end` with BETWEEN searches for everything in the range from `start` to `end` `end` with NOT_BETWEEN searches for everything not in the range from `start` and `end`. must be accompanied by a `start` value

sort_direction SortDirection

sort direction for the return values

set uint32 repeated

'IN' or 'NOT IN' sql operations

FilterRelationship

Default Value is equals, `EQ`, so if you don't set rel_type, it is assumed you mean equals.

NameNumberDescription
EQ 0

for use with `value` field. return anything equaling the `value`

LTE 2

for use with `value` field. return anything less than or equal to the `value`

GTE 4

for use with `value` field. return anything greater than or equal to the `value`

LT 8

for use with `value` field. return anything less than the `value`

GT 16

for use with `value` field. return anything greater than the `value`

BETWEEN 32

for use with `start` and `end`. return anything between `start` and `end`

NOT_BETWEEN 64

for use with `start` and `end`. return anything not between `start` and `end`

NEQ 128

for use with `value` field. return everything not equal to the `value1

IN 256

for use with with `set` field

NOT_IN 512

for use with `set` field

LIKE 1024

for use with `value` and StringField

NOT_LIKE 2048

for use with `value` and StringField

SortDirection

Not currently in use

NameNumberDescription
NOT_SORTED 0

DESC 1

ASC 2

epl/protobuf/v1/stac.proto

Top

Asset

message for an asset of a STAC item.

FieldTypeLabelDescription
href string

href for downloading item

type string

asset type

eo_bands Eo.Band

band(s) of data in asset. https://github.com/radiantearth/stac-spec/blob/612ee4fb4f979c049d2416e7f5374a5301b8a277/extensions/eo/README.md

asset_type AssetType

enum for asset type

cloud_platform CloudPlatform

cloud platform enum (Google cloud, Azure, etc)

bucket_manager string

manager of the bucket

bucket_region string

bucket region. useful when concerned about egress

bucket string

bucket name

object_path string

path to the object in the bucket

requester_pays bool

requester_pays pertains to egress cost. Some buckets are hosted with the egress costs assigned to the requester. some hosts pay the regress costs for the requester.

Collection

FieldTypeLabelDescription
stac_version string

REQUIRED. The STAC version the Collection implements. STAC versions can be mixed, but please keep the recommended best practices in mind.

id string

REQUIRED. Identifier for the collection that is unique across the provider.

title string

A short descriptive one-line title for the collection.

description string

REQUIRED. Detailed multi-line description to fully explain the collection. CommonMark 0.29 syntax MAY be used for rich text representation.

keywords string repeated

List of keywords describing the collection.

license string

REQUIRED. Collection's license(s), either a SPDX License identifier, various if multiple licenses apply or proprietary for all other cases.

providers Provider repeated

A list of providers, which may include all organizations capturing or processing the data or the hosting provider. Providers should be listed in chronological order with the most recent provider being the last element of the list.

extent Extent

REQUIRED. Spatial and temporal extents.

summaries Collection.SummariesEntry repeated

A map of property summaries, either a set of values or statistics such as a range.

is_static bool

Flag denoting that this collection is static (i.e. it's footprint will not change).

Collection.SummariesEntry

FieldTypeLabelDescription
key string

value Stats

CollectionRequest

FieldTypeLabelDescription
id string

bbox EnvelopeData

intersects GeometryData

DatetimeRange

FieldTypeLabelDescription
start google.protobuf.Timestamp

end google.protobuf.Timestamp

Eo

message for electro-optical details of STAC items.

FieldTypeLabelDescription
cloud_cover google.protobuf.FloatValue

percent cloud cover. 0 no clouds, 100 completely covered

bands Eo.Band

band or bands represented in data. If multiple bands, then use a bitwise operator

EoRequest

sub message request for specifying electro-optical details in STAC request

FieldTypeLabelDescription
cloud_cover FloatFilter

data with a cloud_cover equal to or in the range specified in cloud_cover

bands Eo.Band

data that possesses the bands specified in bands

Extent

The object describes the spatio-temporal extents of the Collection. Both spatial and temporal extents are required to be specified.

FieldTypeLabelDescription
spatial EnvelopeData repeated

REQUIRED. Potential spatial extent covered by the collection.

temporal Interval repeated

REQUIRED. Potential temporal extent covered by the collection.

footprint GeometryData

REQUIRED. Current footprint.

Interval

https://github.com/radiantearth/stac-spec/blob/master/collection-spec/collection-spec.md#temporal-extent-object

The object describes the temporal extents of the Collection.

FieldTypeLabelDescription
start google.protobuf.Timestamp

end google.protobuf.Timestamp

Landsat

https://landsat.usgs.gov/stac/landsat-extension/schema.json

FieldTypeLabelDescription
scene_id string

id of scene should be id of STAC item, but there may be a use case where someone does not want that

product_id string

processing_level Landsat.ProcessingLevel

wrs_path int32

wrs_row int32

cloud_cover_land google.protobuf.FloatValue

wrs_type Landsat.WRSType

LandsatRequest

FieldTypeLabelDescription
scene_id string

product_id string

processing_level Landsat.ProcessingLevel

wrs_path int32

wrs_row int32

cloud_cover_land FloatFilter

Mosaic

Experimental

FieldTypeLabelDescription
name string

experimental name of the mosaic this item is a member of

quad_key string

experimental the quad_key of this specific item

zooms int32 repeated

experimental an array of the zooms contained within the asset(s)

observation_range DatetimeRange

deprecated

provenance_ids string repeated

experimental scene provenance. ordered list of STAC item ids that contribute to the mosaic. The 0th STAC item in provenance_ids is the front-most contributor to the mosaic, the last STAC item in bottom contributor and is likely to be partially covered by other contributing scenes

MosaicRequest

Experimental

FieldTypeLabelDescription
name string

experimental mosaic to search for

quad_key string

experimental quad_key to search by

Provider

The object provides information about a provider. A provider is any of the organizations that captures or processes the content of the collection and therefore influences the data offered by this collection. May also include information about the final storage provider hosting the data.

FieldTypeLabelDescription
name string

REQUIRED. The name of the organization or the individual.

description string

Multi-line description to add further provider information such as processing details for processors and producers, hosting details for hosts or basic contact information. CommonMark 0.29 syntax MAY be used for rich text representation.

roles string repeated

Roles of the provider. Any of licensor, producer, processor or host.

url string

Homepage on which the provider describes the dataset and publishes contact information.

Sar

place holder for SAR

FieldTypeLabelDescription
platform Sar.Platform

Sat

FieldTypeLabelDescription
relative_orbit google.protobuf.UInt32Value

The relative orbit number at the time of acquisition.

orbit_state Sat.OrbitState

The state of the orbit. Either ascending or descending for polar orbiting satellites, or geostationary for geosynchronous satellites

SatRequest

FieldTypeLabelDescription
relative_orbit uint32

The relative orbit number at the time of acquisition.

orbit_state Sat.OrbitState

The state of the orbit. Either ascending or descending for polar orbiting satellites, or geostationary for geosynchronous satellites

StacDbResponse

response message for insertion and updates to STAC db

FieldTypeLabelDescription
status string

status_code int32

data_id string

count uint64

StacItem

Spatio-Temporal Asset Catalog Item. This data item has a spatial and temporal extent. It has a unique identifier

downloadable assets. It may have an extension with details beyond the spatial and temporal extents. It may have

additional properties in the properties field

FieldTypeLabelDescription
id string

Provider identifier. As most geospatial assets are already defined by some identification scheme by the data provider it is recommended to simply use that ID. Data providers are advised to include sufficient information to make their IDs globally unique, including things like unique satellite IDs.

title string

(optional) A human readable title describing the item.

collection string

(optional) The id of the STAC Collection this Item references to (see collection relation type below). This field is required if such a relation type is present. This field provides an easy way for a user to search for any Items that belong in a specified Collection.

properties google.protobuf.Any

the properties of an item that are not defined within the STAC specification. Requires marshalling and un-marshalling https://developers.google.com/protocol-buffers/docs/proto3#any

assets StacItem.AssetsEntry repeated

Dictionary of asset objects that can be downloaded, each with a unique key. Some pre-defined keys are listed in the chapter 'Asset types'.

geometry GeometryData

the spatial shape of the item. must have a spatial reference defined.

bbox EnvelopeData

the bounding box of the spatial shape of the item. must have a spatial reference defined.

datetime google.protobuf.Timestamp

deprecated

start_datetime google.protobuf.Timestamp

deprecated

observed google.protobuf.Timestamp

timestamp at which data was observed (optional if datetime set)

start_observation google.protobuf.Timestamp

start timestamp for a period of observation

end_datetime google.protobuf.Timestamp

deprecated

end_observation google.protobuf.Timestamp

end timestamp for a period of observation

created google.protobuf.Timestamp

timestamp when it was created (according to STAC spec this applies to metadata only, but in our case we haven't implemented the asset level created date yet, so we don't have a differentiation yet between metadata creation and asset creation. used to be `processed`)

updated google.protobuf.Timestamp

last timestamp when STAC metadata itself was updated

proj ProjectionData

spatial reference of the assets (if assets have different projections, those can be assigned on the assets and any not defined default to this projection)

platform_enum Platform

platform from which the data was collected

platform string

platform from which the data was collected

instrument_enum Instrument

instrument which collected the data

instrument string

instrument which collected the data

constellation_enum Constellation

constellation of data collectors

constellation string

mission_enum Mission

mission string

gsd google.protobuf.FloatValue

ground sampling distance

stac_version string

version of JSON STAC that this protobuf attempts to match

stac_pb_version string

version of protobuf STAC

stac_extensions string repeated

STAC

eo Eo

electro-optical data message

view View

view of the asset, includes all relevant angular information

landsat Landsat

Landsat Message

mosaic Mosaic

StacItem.AssetsEntry

FieldTypeLabelDescription
key string

value Asset

StacRequest

message for making a request for STAC items.

FieldTypeLabelDescription
limit uint32

limit the number of results returned

offset uint64

the offset from which the query should start

id string

if id matches, return the one matching STAC item

id_complex StringFilter

more complex id search. allows for searching by pattern or by IN or NOT_IN sets

collection string

properties google.protobuf.Any

search by properties specified by user using a request object known by user and the Any marshalling pattern

intersects GeometryData

search by the spatial extent as defined by geometry

bbox EnvelopeData

search by the spatial extent as defined by the envelope bounds

geometry_request GeometryRequest

search by a geometry request. this sends a geometry operator to a geometry service, and the returned geometry is in turn used as the spatial extent

datetime TimestampFilter

search for the datetime that matched by bounds defined by the exact timestamp or a range of timestamp

observed TimestampFilter

search for the moment the data was observed by bounds defined by the exact timestamp or a range of timestamp

created TimestampFilter

search for the moment the asset data was created by bounds defined by the exact timestamp or a range of timestamp

updated TimestampFilter

search for the moment the STAC item metadata was updated by bounds defined by the exact timestamp or a range of timestamp

proj ProjectionData

spatial reference. (currently only supports epsg field)

platform_enum Platform

only data from the platform specified

instrument_enum Instrument

only data from the instrument specified

constellation_enum Constellation

only data from the constellation specified

mission_enum Mission

gsd FloatFilter

data with a gsd equal to or in the range specified in gsd

eo EoRequest

use certain electro-optical search parameters in your query

view ViewRequest

landsat LandsatRequest

mosaic MosaicRequest

Stats

View

FieldTypeLabelDescription
off_nadir google.protobuf.FloatValue

Viewing angle. The angle from the sensor between nadir (straight down) and the scene center. Measured in degrees (0-90).

incidence_angle google.protobuf.FloatValue

The incidence angle is the angle between the vertical (normal) to the intercepting surface and the line of sight back to the satellite at the scene center. Measured in degrees (0-90).

azimuth google.protobuf.FloatValue

The angle measured from the sub-sensor point (point on the ground below the platform) between the scene center and true north. Measured clockwise from north in degrees (0-360).

sun_azimuth google.protobuf.FloatValue

Sun azimuth angle. From the scene center point on the ground, this is the angle between truth north and the sun. Measured clockwise in degrees (0-360).

sun_elevation google.protobuf.FloatValue

Sun elevation angle. The angle from the tangent of the scene center point to the sun. Measured from the horizon in degrees (0-90).

ViewRequest

FieldTypeLabelDescription
off_nadir FloatFilter

data with a off_nadir equal to or in the range specified in off_nadir

incidence_angle FloatFilter

data with a incidence equal to or in the range specified in incidence

azimuth FloatFilter

data with a azimuth equal to or in the range specified in azimuth

sun_azimuth FloatFilter

data with a sun_azimuth equal to or in the range specified in sun_azimuth

sun_elevation FloatFilter

data with a sun_elevation equal to or in the range specified in sun_elevation

AssetType

NameNumberDescription
UNKNOWN_ASSET 0

JPEG 1

GEOTIFF 2

geotiff https://www.gdal.org/frmt_gtiff.html

LERC 3

Limited Error Raster Compression

MRF 4

metadata raster file https://github.com/nasa-gibs/mrf/blob/master/spec/mrf_spec.md#mrf-metadata-file-mrf

MRF_IDX 5

metadata raster file index https://github.com/nasa-gibs/mrf/blob/master/spec/mrf_spec.md#mrf-index-file-idx

MRF_XML 6

CO_GEOTIFF 7

cloud optimized geotiff https://www.cogeo.org/

RAW 8

Generic raw data

THUMBNAIL 9

thumbnail. could be jpg or png

TIFF 10

JPEG_2000 11

XML 12

TXT 13

PNG 14

OVERVIEW 15

GDAL overview file https://gdal.org/programs/gdaladdo.html

JSON 16

HTML 17

WEBP 18

CloudPlatform

NameNumberDescription
UNKNOWN_CLOUD_PLATFORM 0

AWS 1

Amazon Web Services

GCP 2

Google Cloud Platform

AZURE 3

Microsoft's Azure

IBM 4

IBM

Constellation

NameNumberDescription
UNKNOWN_CONSTELLATION 0

Eo.Band

NameNumberDescription
UNKNOWN_BAND 0

band type not specified. default value. if used in query, any band type is acceptable

COASTAL 2

BLUE 4

GREEN 8

RED 16

RGB 28

NIR 32

NIR_2 33

special case for landsat 1-3

RGBIR 60

SWIR_1 64

SWIR_2 128

PAN 256

CIRRUS 512

LWIR_1 1024

LWIR_2 2048

Instrument

NameNumberDescription
UNKNOWN_INSTRUMENT 0

OLI 2

TIRS 4

OLI_TIRS 6

POM_1 8

near space labs instrument 1

TM 16

ETM 32

MSS 64

POM_2 128

near space labs instrument 2

Landsat.CollectionCategory

NameNumberDescription
UNKNOWN_COLLECTION_CATEGORY 0

A1 1

A2 2

T1 3

T2 4

RT 5

Landsat.ProcessingLevel

NameNumberDescription
UNKNOWN_PROCESSING_LEVEL 0

L1G 1

L1TP 2

L1T 3

L1GT 4

L1GS 5

Landsat.WRSType

NameNumberDescription
UKNOWN_WRS 0

WRS1 1

WRS2 2

Mission

NameNumberDescription
UNKNOWN_MISSION 0

LANDSAT 2

NAIP 4

PNOA 8

spanish aerial dataset

SWIFT 16

near space labs dataset

Platform

NameNumberDescription
UNKNOWN_PLATFORM 0

LANDSAT_1 2

LANDSAT_2 4

LANDSAT_3 8

LANDSAT_123 14

LANDSAT_4 16

LANDSAT_5 32

LANDSAT_45 48

LANDSAT_7 64

LANDSAT_8 128

SWIFT_2 256

near space labs platform

SWIFT_3 512

Sar.Instrument

NameNumberDescription
UNKNOWN_INSTRUMENT 0

Sar.Platform

NameNumberDescription
UNKNOWN_PLATFORM 0

ENVISAT 1

SENTINEL_1A 2

Sat.OrbitState

NameNumberDescription
UKNOWN_ORBIT_STATE 0

ASCENDING_ORBIT 1

DESCENDING_ORBIT 2

GEOSTATIONARY_ORBIT 3

epl/protobuf/v1/stac_service.proto

Top

StacService

gRPC Interfaces for working with stac metadata

Method NameRequest TypeResponse TypeDescription
SearchItems StacRequest StacItem stream

using a search request, stream all the results that match the search filter

InsertItems StacItem stream StacDbResponse stream

insert a stream of items into the STAC service

UpdateItems StacItem stream StacDbResponse stream

update a stream of items in the STAC service

CountItems StacRequest StacDbResponse

count all the items in the Stac service according to the StacRequest filter

DeleteOneItem StacItem StacDbResponse

delete an item from the STAC service

SearchOneItem StacRequest StacItem

using a search request get the first item that matches the request

InsertOneItem StacItem StacDbResponse

Insert one item into the STAC service

UpdateOneItem StacItem StacDbResponse

Update one item in the STAC service

SearchCollections CollectionRequest Collection stream

Search existing Collections

InsertOneCollection Collection StacDbResponse

Create a new Collection

UpdateCollection Collection StacDbResponse

Update an existing Collection's metadata and/or footprint

Scalar Value Types

.proto TypeNotesC++JavaPythonGoC#PHPRuby
double double double float float64 double float Float
float float float float float32 float float Float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
bool bool boolean boolean bool bool boolean TrueClass/FalseClass
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)