API reference
Index
EarthData.PRODEarthData.UATEarthData.AuthEarthData.BoolParamEarthData.CollectionMetaEarthData.CollectionRequestEarthData.CollectionSchema.AccessConstraintsTypeEarthData.CollectionSchema.AdditionalAttributeTypeEarthData.CollectionSchema.AddressTypeEarthData.CollectionSchema.AltitudeSystemDefinitionTypeEarthData.CollectionSchema.ArchiveAndDistributionInformationTypeEarthData.CollectionSchema.AssociatedDoiTypeEarthData.CollectionSchema.BoundaryTypeEarthData.CollectionSchema.CharacteristicTypeEarthData.CollectionSchema.ContactInformationTypeEarthData.CollectionSchema.ContactMechanismTypeEarthData.CollectionSchema.DataCenterTypeEarthData.CollectionSchema.DateTypeEarthData.CollectionSchema.DepthSystemDefinitionTypeEarthData.CollectionSchema.DirectDistributionInformationTypeEarthData.CollectionSchema.DirectoryNameTypeEarthData.CollectionSchema.DoiDoiTypeEarthData.CollectionSchema.ExclusiveZoneTypeEarthData.CollectionSchema.FootprintTypeEarthData.CollectionSchema.GeodeticModelTypeEarthData.CollectionSchema.GetDataTypeEarthData.CollectionSchema.GetServiceTypeEarthData.CollectionSchema.HorizontalDataGenericResolutionTypeEarthData.CollectionSchema.HorizontalDataResolutionGriddedRangeTypeEarthData.CollectionSchema.HorizontalDataResolutionGriddedTypeEarthData.CollectionSchema.HorizontalDataResolutionNonGriddedRangeTypeEarthData.CollectionSchema.HorizontalDataResolutionNonGriddedTypeEarthData.CollectionSchema.HorizontalDataResolutionTypeEarthData.CollectionSchema.HorizontalSpatialDomainTypeEarthData.CollectionSchema.InstrumentChildTypeEarthData.CollectionSchema.InstrumentTypeEarthData.CollectionSchema.LocationKeywordTypeEarthData.CollectionSchema.MetadataAssociationTypeEarthData.CollectionSchema.MetadataSpecificationTypeEarthData.CollectionSchema.OnlineResourceTypeEarthData.CollectionSchema.OrbitParametersTypeEarthData.CollectionSchema.PaleoTemporalCoverageTypeEarthData.CollectionSchema.PeriodicDateTimeTypeEarthData.CollectionSchema.PlatformTypeEarthData.CollectionSchema.PointTypeEarthData.CollectionSchema.ProcessingLevelTypeEarthData.CollectionSchema.ProjectTypeEarthData.CollectionSchema.PublicationReferenceTypeEarthData.CollectionSchema.RangeDateTimeTypeEarthData.CollectionSchema.RelatedUrlTypeEarthData.CollectionSchema.ResolutionAndCoordinateSystemTypeEarthData.CollectionSchema.ResourceCitationTypeEarthData.CollectionSchema.ScienceKeywordTypeEarthData.CollectionSchema.SpatialExtentTypeEarthData.CollectionSchema.SpatialInformationTypeEarthData.CollectionSchema.TemporalExtentTypeEarthData.CollectionSchema.TilingCoordinateTypeEarthData.CollectionSchema.TilingIdentificationSystemTypeEarthData.CollectionSchema.UseConstraintsDescriptionTypeEarthData.CollectionSchema.UseConstraintsTypeEarthData.DateParamEarthData.DateRangeParamEarthData.DateRangeValueEarthData.FreeParamEarthData.GranuleMetaEarthData.GranuleRequestEarthData.GranuleSchema.AccessConstraintsTypeEarthData.GranuleSchema.AdditionalAttributeTypeEarthData.GranuleSchema.BoundaryTypeEarthData.GranuleSchema.BoundingRectangleTypeEarthData.GranuleSchema.BoundingRectangleTypeEarthData.GranuleSchema.CharacteristicTypeEarthData.GranuleSchema.ChecksumTypeEarthData.GranuleSchema.CollectionReferenceTypeEarthData.GranuleSchema.DataGranuleTypeEarthData.GranuleSchema.ExclusiveZoneTypeEarthData.GranuleSchema.FilePackageTypeEarthData.GranuleSchema.FileTypeEarthData.GranuleSchema.GPolygonTypeEarthData.GranuleSchema.GeometryTypeEarthData.GranuleSchema.HorizontalSpatialDomainTypeEarthData.GranuleSchema.IdentifierTypeEarthData.GranuleSchema.InstrumentTypeEarthData.GranuleSchema.LineTypeEarthData.GranuleSchema.MeasuredParameterTypeEarthData.GranuleSchema.MetadataSpecificationTypeEarthData.GranuleSchema.OrbitCalculatedSpatialDomainTypeEarthData.GranuleSchema.OrbitTypeEarthData.GranuleSchema.PGEVersionClassTypeEarthData.GranuleSchema.PlatformTypeEarthData.GranuleSchema.PointTypeEarthData.GranuleSchema.ProjectTypeEarthData.GranuleSchema.ProviderDateTypeEarthData.GranuleSchema.QAFlagsTypeEarthData.GranuleSchema.QAStatsTypeEarthData.GranuleSchema.RangeDateTimeTypeEarthData.GranuleSchema.RelatedUrlTypeEarthData.GranuleSchema.SpatialExtentTypeEarthData.GranuleSchema.TemporalExtentTypeEarthData.GranuleSchema.TilingCoordinateTypeEarthData.GranuleSchema.TilingIdentificationSystemTypeEarthData.GranuleSchema.TrackPassTileTypeEarthData.GranuleSchema.TrackTypeEarthData.GranuleSchema.VerticalSpatialDomainTypeEarthData.NumericRangeParamEarthData.PassEarthData.PassesParamEarthData.PositiveIntParamEarthData.QueryParamsEarthData.SpatialParamEarthData.SystemEarthData.TextParamEarthData.TransientErrorEarthData.auth_headersEarthData.build_requestEarthData.check_responseEarthData.check_trackEarthData.classifying_requesterEarthData.cmr_convertEarthData.cmr_pairsEarthData.cmr_queryEarthData.cmr_spatialEarthData.collectionsEarthData.convert_fieldEarthData.credentialsEarthData.data_urlsEarthData.error_statusEarthData.fielddocsEarthData.geointerface_geomtypeEarthData.granule_sizeEarthData.granulesEarthData.https_urlsEarthData.is_transientEarthData.is_transient_statusEarthData.loginEarthData.netrc!EarthData.netrc_credentialsEarthData.netrc_pathEarthData.netrc_tokenEarthData.netrc_withoutEarthData.query_paramsEarthData.retry_after_secondsEarthData.ring_coordsEarthData.s3_urlsEarthData.size_unit_factorEarthData.tokenEarthData.token_from_netrcEarthData.urlsEarthData.with_retriesExtents.extentGeoInterface.geometryGeoInterface.properties
Public API
EarthData.auth_headers — Method
auth_headers(; bearer=EarthData.token()) -> Vector{Pair{String,String}}
auth_headers(auth::Auth) -> Vector{Pair{String,String}}Authorization: Bearer header for an Earthdata Login token, for clients that set their own headers rather than relying on .netrc.
Empty for a :netrc or :anonymous Auth: curl and Downloads read .netrc themselves, and an anonymous request carries no header at all.
EarthData.build_request — Method
build_request(R::Type; kwargs...) -> RThe request kwargs describe, with a misspelled keyword named rather than listed among all of R's fields, which is what Base.@kwdef's own MethodError would do.
A QueryParams keyword is also accepted, and belongs to query_params rather than to the request.
EarthData.check_response — Method
check_response(r, context)Throw for an error response: TransientError if retrying could help, an ArgumentError saying what to fix if it cannot. Returns nothing otherwise.
EarthData.check_track — Method
check_track(request::GranuleRequest)Check passes against cycle. A pass number identifies a granule only within a cycle, so CMR requires exactly one cycle alongside and otherwise answers "Cycle value must be provided when searching with passes".
EarthData.classifying_requester — Function
classifying_requester(inner=HTTP.request, context="CMR search")Wrap a requester (as accepted by request, granules and collections) so a temporary status throws TransientError instead of being turned into a plain ErrorException by parse_cmr_error.
Only temporary statuses are intercepted. The rest are passed through untouched, so parse_cmr_error's reading of CMR's errors array is still what the caller sees.
granules(short_name="MCD43A3", version="061", requester=classifying_requester())EarthData.cmr_convert — Method
cmr_convert(T::Type, value)value as the field type T, or an ArgumentError describing what T accepts.
These methods describe the family only. convert_field adds the field name and its docstring, which Base.convert has no way to see.
EarthData.cmr_pairs — Method
cmr_pairs(param::Symbol, value) -> Vector{Pair{String,Any}}The query parameters value becomes for param, dispatching on the stored field type.
A pair vector rather than one value, because passes becomes several indexed parameters (passes[0][pass], passes[0][tiles], …) where every other family becomes one.
EarthData.cmr_query — Method
cmr_query(request::AbstractRequest; page_num, page_size, extra) -> Vector{Pair{String,Any}}The wire form of request: every field that is set, converted by its type, plus the paging and formatting parameters extra carries from query_params.
Pairs rather than a Dict, since passes becomes several indexed parameters (passes[0][pass], passes[0][tiles], …) rather than one value, and HTTP.URIs.escapeuri encodes a pair vector correctly where a nested Dict collapses to passes=0=pass=1.
EarthData.cmr_spatial — Method
cmr_spatial(param::Symbol, value)Convert value into the string CMR expects for the spatial parameter param. Strings and nothing pass through; geometries are converted; anything else raises an ArgumentError naming what param accepts.
EarthData.collections — Method
collections(; keyword=value, ...) -> Vector{CollectionSchema.UMM_C}Search for collections using NASA EarthData Search.
Each keyword is a CMR collection search parameter; see CollectionRequest for what they are and what each one accepts, and QueryParams for the paging keywords.
EarthData.convert_field — Method
convert_field(R::Type, name::Symbol, value)value as the name field of request R, or an ArgumentError naming the field and quoting its docstring.
The field name is not an argument of Base.convert, which receives only the field type and the value, so naming the parameter has to happen here rather than in cmr_convert — whose methods describe a family shared by many fields.
EarthData.credentials — Method
credentials(; machine="urs.earthdata.nasa.gov") -> Vector{Auth}Every Earthdata credential available, in the order they should be tried:
ENV["EARTHDATA_TOKEN"]~/.edl_token~/.netrc- anonymous
The anonymous entry is always last and always present, so this never throws and never returns empty: much of what CMR indexes is public, and refusing to proceed without a credential would fail those downloads for no reason.
More than one entry is returned on purpose. A bearer token that has expired will be rejected even though a working .netrc sits behind it, and curl does not fall back on its own, so download retries with the next entry.
EarthData.data_urls — Method
data_urls(item; scheme=:https) -> Vector{String}URLs of the granule's data file(s), i.e. the related URLs typed "GET DATA".
Records commonly carry several related URLs that are not the data: a DOI landing page, a metadata sidecar, browse imagery, a cloud-credentials endpoint. Filtering on the scheme alone does not separate those from the file, so prefer this over https_urls when what you want is something to download. Note the S3 copy of the same file is typed "GET DATA VIA DIRECT ACCESS" and so is not returned; use urls(item; scheme=:s3, type="GET DATA VIA DIRECT ACCESS") for that.
EarthData.error_status — Method
error_status(err) -> IntThe HTTP status err carries, or 0 when it carries none.
The exception type alone does not say whether a failure was temporary. Downloads.RequestError is thrown for both kinds: a transport fault carries a libcurl code with response.status == 0, while a plain HTTP error status carries code == CURLE_OK and the status in response.status. A 503 worth retrying and a 403 that never will be are the same type, so the status has to be read rather than inferred.
EarthData.fielddocs — Method
fielddocs(R::Type) -> Dict{Symbol,Any}The per-field docstrings of R, so an error can say what the parameter means as well as what it accepts. Empty if the struct carries no docstring, which is where Julia records them.
EarthData.geointerface_geomtype — Method
geointerface_geomtype(trait) -> TypeThe UMM type that trait converts to, for GeoInterface.convert(EarthData, geom).
Granule types, since a search returns granules far more often than collections. The two modules generate field-identical geometry structs and cmr_spatial sends either as the same text, so the choice only shows in the returned type; name EarthData.CollectionSchema to get the other.
EarthData.granule_size — Method
granule_size(granule; default_unit="MB") -> Union{Int,Nothing}Size of a granule in bytes, from DataGranule.ArchiveAndDistributionInformation, or nothing when the record does not report one.
SizeInBytes is used when present. Otherwise Size is converted using its SizeUnit — Size is unit-less on its own, and providers do report units other than bytes, so reading the number without the unit is how a megabyte figure gets mistaken for a byte count. A record that gives Size with no SizeUnit is read as default_unit, which is what the DAACs mean in practice; pass default_unit explicitly if a provider differs. A SizeUnit of "NA" is not a unit, so such an entry is skipped rather than guessed at.
Sizes of multiple files are summed, since together they are the granule.
EarthData.granules — Method
granules(; keyword=value, ...) -> Vector{GranuleSchema.UMM_G}Search for granules using NASA EarthDataSearch.
Each keyword is a CMR granule search parameter; see GranuleRequest for what they are and what each one accepts, and QueryParams for the paging keywords.
g = first(granules(short_name="GEDI02_A"))
startswith(sprint(show, g), "GEDI02_A: ")
# output
trueEarthData.https_urls — Method
https_urls(item) -> Vector{String}The item's related URLs that use the https scheme.
Every related URL is returned, not just the data: a DOI landing page, a metadata sidecar and browse imagery all use https too. See data_urls when what you want is something to download.
EarthData.is_transient — Method
is_transient(err) -> BoolWhether err is worth retrying: a TransientError or a connection failure. Deliberately narrow — an ArgumentError (permanent status, bad query) and a plain ErrorException are not.
When err carries an HTTP error status (error_status) that status decides, so a 401/403/404 surfacing as a Downloads.RequestError is permanent — matching check_response — rather than transient by virtue of its type.
EarthData.is_transient_status — Method
is_transient_status(status) -> BoolWhether an HTTP status is worth retrying: a 5xx, a 408 or a 429.
EarthData.login — Method
login(; machine="urs.earthdata.nasa.gov", requester=HTTP.request) -> AuthVerify the first available Earthdata credential against Earthdata Login and return it.
Pass the result as auth to download to skip resolution on every call. Searching is credentials; this additionally proves the credential works, so a wrong password is reported now rather than midway through a download.
Throws when a credential is present but rejected. Returns the anonymous Auth when no credential exists at all, since public data needs none.
Verification is one request against /api/users/tokens, which authenticates a bearer and a username/password alike. EDL rate-limits it and answers 5xx once tripped, so a transient failure is reported as such rather than as a bad credential.
EarthData.netrc! — Method
netrc!(username, password; machine="urs.earthdata.nasa.gov", path=netrc_path()) -> StringStore Earthdata Login credentials in .netrc, replacing any existing stanza for machine.
.netrc is a plaintext file that Downloads, curl, wget and aria2c read to authenticate, which is how a NASA download gets its credentials without a token. The file is left at mode 600, on Windows too — chmod there rewrites the file's ACL to grant the owner alone.
Replacement rather than addition is what makes a correction take effect: curl uses the first stanza matching a machine, so a second one for the same machine is never read. Other machines, and comments, are left as they are.
A credential containing whitespace cannot be represented in .netrc, so it raises here instead of writing a file that parses as something else.
EarthData.netrc_credentials — Function
netrc_credentials(machine="urs.earthdata.nasa.gov"; path=nothing) -> (login, password)Read login and password for machine from .netrc, the counterpart to netrc!.
Each line is scanned for machine, login and password tokens, carrying the current machine across lines so a stanza may be written on one line or several. Comments are skipped and the macdef form is not supported. path defaults to netrc_path.
EarthData.netrc_path — Method
netrc_path() -> StringThe .netrc file this package reads credentials from and writes them to.
~/.netrc, except on Windows, where ~/_netrc is used when it exists and ~/.netrc does not. That is the order libcurl resolves the two names in, so a download and this package read the same file.
EarthData.netrc_token — Method
netrc_token(name, value) -> Stringvalue as a .netrc token, or an ArgumentError if it cannot be one.
.netrc separates tokens on whitespace and has no quoting or escaping, so a value containing whitespace would be read back as different values than were written.
EarthData.netrc_without — Method
netrc_without(lines, machine) -> Vector{String}lines with the stanza for machine removed.
A stanza runs from machine <name> to the next machine or default, which is not necessarily a line boundary — but lines are the unit removed, so comments and the formatting of other machines survive. A line carrying both this machine's tokens and another's cannot be removed without rewriting it, and raises.
EarthData.query_params — Method
query_params(; kwargs...) -> Vector{Pair{String,Any}}The QueryParams keywords among kwargs, as the query parameters they become.
These are not search filters, so they are not fields of a request and get no conversion — CMR reads them as written. page_size and page_num are excluded: cmr_query adds those from its own keywords, so that paging can drop page_num partway through.
EarthData.retry_after_seconds — Method
retry_after_seconds(response) -> Float64Seconds the server asked us to wait, from Retry-After, or 0.0 when the header is absent or unparseable. Only the delta-seconds form is read; clamped to retry_after_max.
Reads response.headers directly rather than going through HTTP.header, which only accepts an HTTP.Messages.Message — a Downloads.Response is a plain struct, and that is the shape /s3credentials fails with.
EarthData.ring_coords — Method
ring_coords(ring) -> Vector{Float64}Flatten a ring for CMR's polygon, which needs it closed and wound counter-clockwise. Both are fixed here rather than asked of the caller: a clockwise ring is a perfectly valid geometry, but CMR reads it as the complement, i.e. the whole globe except the intended area, giving a wrong answer rather than an error.
EarthData.s3_urls — Method
s3_urls(item) -> Vector{String}The item's related URLs that use the s3 scheme, for direct in-region S3 access.
Reading these requires DAAC-issued temporary credentials and an AWSS3 session; see create_aws_config. As with https_urls, the filter is on the scheme alone, so the result is not necessarily just the data file.
EarthData.size_unit_factor — Method
size_unit_factor(unit) -> Union{Int,Nothing}Bytes per unit, for the SizeUnit values UMM allows ("Bytes", "KB", "MB", "GB", "TB"; binary multiples). Throws for an unrecognised unit rather than guessing, since a wrong factor silently misreports a size by three orders of magnitude.
"NA" returns nothing: providers use it to say they recorded no unit, so the accompanying Size cannot be converted at all.
EarthData.token — Method
token() -> StringThe Earthdata Login bearer token, from the environment or a token file.
Searches, in order:
ENV["EARTHDATA_TOKEN"]~/.edl_token(first non-empty, non-comment line)
Throws an ErrorException with setup instructions when neither is present. Use credentials to resolve whatever credential is available, including none.
This never contacts the network. To obtain a token from .netrc credentials instead, call token_from_netrc explicitly.
EARTHDATA_TOKEN is a community convention rather than a NASA-defined variable; no NASA tooling reads it for you.
Treat the returned string as a secret: it authenticates as the account for 60 days.
EarthData.token_from_netrc — Method
token_from_netrc(; create=false, machine="urs.earthdata.nasa.gov") -> StringFetch an Earthdata Login bearer token using the username and password stored in .netrc.
This is a network call, kept out of token on purpose: a credential lookup that can hit the network is a lookup that can hang or rate-limit inside a retry loop.
EDL allows an account two live tokens; requesting a third returns HTTP 403. With create=false (the default) this only lists tokens and returns the first, so it cannot exhaust the quota. create=true will consume the second slot when none exists. Do not call this from a retry loop.
EarthData.urls — Method
urls(item; scheme=nothing, type=nothing) -> Vector{String}Related URLs of a UMM record, optionally filtered by URL scheme (:https, :s3) and by RelatedUrls[].Type ("GET DATA", "GET DATA VIA DIRECT ACCESS", "VIEW RELATED INFORMATION", ...).
EarthData.with_retries — Method
with_retries(f; context, attempts=retry_attempts, verbose=true, deadline=Inf) -> f()Call f, retrying while it fails temporarily (see is_transient) with exponential backoff from retry_base up to retry_max_backoff. Other errors propagate on the first attempt, and the last failure is rethrown as-is so the user sees the service's own message.
deadline is an absolute time() bounding the retrying, and it — not attempts — is what should normally stop a run. A Retry-After from the server overrides the backoff upward.
Extents.extent — Method
Extents.extent(record::UMMRecord) -> Union{Extent,Nothing}The record's spatial extent in degrees, or nothing when it states no coverage.
X/Y enclose every geometry the record carries — CMR states coverage as bounding rectangles, polygons, points or lines, and a record may hold more than one kind.
Extents is not re-exported, so reach it either with using Extents or, as here, through EarthData.Extents.
g = first(granules(short_name="GEDI02_A"))
ext = EarthData.Extents.extent(g);
haskey(ext, :X) && haskey(ext, :Y)
# output
trueGeoInterface.geometry — Method
GeoInterface.geometry(record) -> Union{GeometryType,Nothing}The geometry a granule or collection carries, or nothing when the record states no coverage — reaching through SpatialExtent.HorizontalSpatialDomain.Geometry so a caller need not.
g = first(granules(short_name="GEDI02_A"))
EarthData.GeoInterface.trait(EarthData.GeoInterface.geometry(g))
# output
GeoInterface.GeometryCollectionTrait()GeoInterface.properties — Method
GeoInterface.properties(record) -> NamedTupleEverything the record states apart from its coverage, so a granule reads as a row beside the geometry GeoInterface.geometry returns.
SpatialExtent is left out because it is the geometry: including it would write the coordinates twice. That is what GeoInterface's own NamedTuple features, GeoDataFrames and ArchGDAL all do.
EarthData.Auth — Type
AuthA resolved Earthdata credential, or the absence of one.
kind is :bearer, :netrc or :anonymous, and source names where it came from, so a rejection can say which credential was rejected rather than just that authentication failed.
:netrc carries no secret. curl, Downloads and aria2c read .netrc themselves, so the file stays the single place the username and password live.
EarthData.CollectionMeta — Type
CMR's meta block for a collection.
Larger than GranuleMeta and disjoint from it: a collection carries the has_* service capabilities and s3_links, and has no collection_concept_id of its own.
associations and s3_links are absent from many records, so both are nullable.
CMR also sends association-details, which is not read: every entry it carries holds a single concept-id, which is what associations already lists.
EarthData.CollectionRequest — Type
CollectionRequest(; keyword=value, ...)A collection search. Every field is a CMR collection search parameter, as documented at https://cmr.earthdata.nasa.gov/search/site/docs/search/api.html#collection-search-by-parameters.
Built by collections from its keywords; each field's type is what that parameter accepts, and omitting one searches without filtering on it.
EarthData.FreeParam — Type
FreeParamA parameter this package does not describe, passed on as given.
Either it is structured in a way a Julia type does not capture (attribute, science_keywords), or CMR is more permissive than any type would be (processing_level_id holds the bare digits, so a number is right there).
EarthData.GranuleMeta — Type
CMR's meta block for a granule: the record's identity and revision, none of which the UMM-G document itself carries.
collection_concept_id addresses the granule's collection, which is how a granule reaches collection-level metadata such as DirectDistributionInformation.
Field names are snake_case where CMR sends kebab-case; StructTypes.names carries the mapping.
EarthData.GranuleRequest — Type
GranuleRequest(; keyword=value, ...)A granule search. Every field is a CMR granule search parameter, as documented at https://cmr.earthdata.nasa.gov/search/site/docs/search/api.html#granule-search-by-parameters.
Built by granules from its keywords; each field's type is what that parameter accepts, and omitting one searches without filtering on it.
EarthData.GranuleSchema.BoundingRectangleType — Method
BoundingRectangleType(extent::Extents.Extent)A UMM bounding rectangle covering extent, which needs X and Y.
GeoInterface.convert(BoundingRectangleType, geom) does the same for any GeoInterface rectangle, not just an Extent.
extent = EarthData.Extents.Extent(X=(-51.0, -49.0), Y=(40.0, 60.0))
rect = EarthData.GranuleSchema.BoundingRectangleType(extent)
rect.WestBoundingCoordinate
# output
-51.0EarthData.Pass — Type
Pass(pass::Integer, tiles=String[])One orbital pass to search, optionally narrowed to particular tiles.
pass is a positive integer. A tile is an integer followed by L, R or F — the left, right or full swath of that pass, as in "2L". Tiles within one Pass are ANDed; several Passes are ORed.
Searching by pass needs the cycle keyword as well, since a pass number only identifies a granule within a cycle.
EarthData.Pass(1, ["1L", "2F"])
# output
EarthData.Pass(1, ["1L", "2F"])EarthData.QueryParams — Type
QueryParamsCMR's paging and formatting parameters, which are not search filters.
Accepted by granules and collections alongside the search keywords, and passed on as written. page_size and page_num are keywords of those two functions, since paging through all the results sets them itself; the rest are collected by query_params.
sort_key is not here: it is a field of both requests, and so is converted and documented like any other search parameter.
EarthData.SpatialParam — Type
SpatialParamA geometry: an Extents.Extent, anything implementing GeoInterface, a coordinate tuple, or the coordinate string itself.
All five spatial parameters accept the same Julia types, so unlike the other families this one cannot be told apart by its field type — bounding_box and polygon are distinguished by name in spatial.jl, against spatial_params.
EarthData.System — Type
System(; cmr_url, edl_host)An Earthdata deployment: PROD or UAT.
UAT is where NASA stages a collection before it goes public, so it is what a provider tests against. Pass one as system to granules or collections.
cmr_url is a base URL rather than a host, so a proxy or a local CMR can be reached by constructing a System directly. edl_host is a bare hostname, since that is what .netrc and curl match on.
Nothing reads edl_host yet — token_from_netrc and netrc_credentials still target production. A UAT search works; UAT authentication does not, and a production token rejected by UAT reports a production token page.
EarthData.TransientError — Type
TransientError(context, status, detail, retry_after=0.0)A response that says nothing about the request: a 5xx, a 408 or a 429. Worth retrying, unlike a 401/403/404.
EarthData.BoolParam — Type
BoolParamA Bool, or a String for a spelling CMR takes but this module does not build ("TRUE", "unset"). CMR rejects 1 and 0.
EarthData.DateParam — Type
DateParamA single Date or DateTime, in UTC. Distinct from DateRangeParam: CMR answers a range here with "updated_since datetime is invalid".
EarthData.DateRangeParam — Type
DateRangeParamA Date/DateTime, or a (start, stop) range with either side nothing for an open bound. A vector of either is a repeated parameter, which CMR reads as the union.
EarthData.DateRangeValue — Type
DateRangeValueOne temporal constraint: an instant, a (start, stop) range, or the ISO 8601 text itself.
The element type of a DateRangeParam vector, so a repeated parameter holds the same Julia values a single one does rather than the wire form.
EarthData.NumericRangeParam — Type
NumericRangeParamA (min, max) range, either side nothing for an open end. CMR refuses a lone number: "The min and max values of a numeric range cannot both be nil".
EarthData.PROD — Constant
PRODThe operational Earthdata deployment, and the default for every search.
EarthData.PassesParam — Type
PassesParamAn orbital pass: an Integer, a Pass to name its tiles, or a vector of either. Needs exactly one cycle alongside.
Stored as a Vector{Pass} however it was written, since CMR indexes each pass separately and one pass is the same shape as several.
EarthData.PositiveIntParam — Type
PositiveIntParamA positive Integer, or a vector of them.
EarthData.TextParam — Type
TextParamAn identifier CMR matches literally: a String, a Symbol, or a vector of either.
CMR reports no error for a value that matches nothing, so a number is rejected rather than converted — see version, where 061 is the integer 61 and matches nothing.
EarthData.UAT — Constant
UATEarthdata's user-acceptance-testing deployment, holding staged and pre-release collections.
granules(short_name="GEDI02_A", system=EarthData.UAT)UMM-G schema types
Granule search results are parsed as EarthData.GranuleSchema.UMM_G and related schema types generated from NASA's UMM-G schema.
EarthData.GranuleSchema.AccessConstraintsType — Type
Information about any physical constraints for accessing the data set.
EarthData.GranuleSchema.AdditionalAttributeType — Type
A reference to an additional attribute in the parent collection. The attribute reference may contain a granule specific value that will override the value in the parent collection for this granule. An attribute with the same name must exist in the parent collection.
EarthData.GranuleSchema.BoundaryType — Type
A boundary is set of points connected by straight lines representing a polygon on the earth. It takes a minimum of three points to make a boundary. Points must be specified in counter-clockwise order and closed (the first and last vertices are the same).
EarthData.GranuleSchema.BoundingRectangleType — Type
This entity holds the horizontal spatial coverage of a bounding box.
EarthData.GranuleSchema.CharacteristicType — Type
This entity is used to reference characteristics defined in the parent collection.
EarthData.GranuleSchema.ChecksumType — Type
Allows the provider to provide a checksum value and checksum algorithm name to allow the user to calculate the checksum.
EarthData.GranuleSchema.CollectionReferenceType — Type
A reference to a collection metadata record's short name and version, or entry title to which this granule metadata record belongs.
EarthData.GranuleSchema.DataGranuleType — Type
This entity stores the basic descriptive characteristics associated with a granule.
EarthData.GranuleSchema.ExclusiveZoneType — Type
Contains the excluded boundaries from the GPolygon.
EarthData.GranuleSchema.FilePackageType — Type
This set of elements describes a file package or a file that contains other files. Normally this is either a tar or a zip file.
EarthData.GranuleSchema.FileType — Type
This set of elements describes a file. The file can be a part of the entire granule or is the granule.
EarthData.GranuleSchema.GPolygonType — Type
A GPolygon specifies an area on the earth represented by a main boundary with optional boundaries for regions excluded from the main boundary.
EarthData.GranuleSchema.GeometryType — Type
This entity holds the geometry representing the spatial coverage information of a granule.
EarthData.GranuleSchema.HorizontalSpatialDomainType — Type
Information about a granule with horizontal spatial coverage.
EarthData.GranuleSchema.IdentifierType — Type
This entity stores an identifier. If the identifier is part of the enumeration then use it. If the enumeration is 'Other', the provider must specify the identifier's name.
EarthData.GranuleSchema.InstrumentType — Type
A reference to the device in the parent collection that was used to measure or record data, including direct human observation. In cases where instruments have a single composed of child instrument (sensor) or the instrument and composed of child instrument (sensor) are used synonymously (e.g. AVHRR) the both Instrument and composed of child instrument should be recorded. The child instrument information is represented by child entities. The instrument reference may contain granule specific characteristics and operation modes. These characteristics and modes are not checked against the referenced instrument.
EarthData.GranuleSchema.LineType — Type
This entity holds the horizontal spatial coverage of a line. A line area contains at lease two points.
EarthData.GranuleSchema.MeasuredParameterType — Type
This entity contains the name of the geophysical parameter expressed in the data as well as associated quality flags and quality statistics. The quality statistics element contains measures of quality for the granule. The parameters used to set these measures are not preset and will be determined by the data producer. Each set of measures can occur many times either for the granule as a whole or for individual parameters. The quality flags contain the science, operational and automatic quality flags which indicate the overall quality assurance levels of specific parameter values within a granule.
EarthData.GranuleSchema.MetadataSpecificationType — Type
This object requires any metadata record that is validated by this schema to provide information about the schema.
EarthData.GranuleSchema.OrbitCalculatedSpatialDomainType — Type
This entity is used to store the characteristics of the orbit calculated spatial domain to include the model name, orbit number, start and stop orbit number, equator crossing date and time, and equator crossing longitude.
EarthData.GranuleSchema.OrbitType — Type
This entity stores orbital coverage information of the granule. This coverage is an alternative way of expressing granule spatial coverage. This information supports orbital backtrack searching on a granule.
EarthData.GranuleSchema.PGEVersionClassType — Type
This entity stores basic descriptive characteristics related to the Product Generation Executable associated with a granule.
EarthData.GranuleSchema.PlatformType — Type
A reference to a platform in the parent collection that is associated with the acquisition of the granule. The platform must exist in the parent collection. For example, Platform types may include (but are not limited to): ADEOS-II, AEM-2, Terra, Aqua, Aura, BALLOONS, BUOYS, C-130, DEM, DMSP-F1,etc.
EarthData.GranuleSchema.PointType — Type
The longitude and latitude values of a spatially referenced point in degrees.
EarthData.GranuleSchema.ProjectType — Type
Information describing the scientific endeavor with which the granule is associated.
EarthData.GranuleSchema.ProviderDateType — Type
Specifies the date and its type that the provider uses for the granule. For Create, Update, and Insert the date is the date that the granule file is created, updated, or inserted into the provider database by the provider. Delete is the date that the CMR should delete the granule metadata record from its repository.
EarthData.GranuleSchema.QAFlagsType — Type
The quality flags contain the science, operational and automatic quality flags which indicate the overall quality assurance levels of specific parameter values within a granule.
EarthData.GranuleSchema.QAStatsType — Type
The quality statistics element contains measures of quality for the granule. The parameters used to set these measures are not preset and will be determined by the data producer. Each set of measures can occur many times either for the granule as a whole or for individual parameters.
EarthData.GranuleSchema.RangeDateTimeType — Type
Stores the data acquisition start and end date/time for a granule.
EarthData.GranuleSchema.RelatedUrlType — Type
This entity holds all types of online URL associated with the granule such as guide document or ordering site etc.
EarthData.GranuleSchema.SpatialExtentType — Type
This class contains attributes which describe the spatial extent of a granule. Spatial Extent includes any or all of Granule Localities, Horizontal Spatial Domain, and Vertical Spatial Domain.
EarthData.GranuleSchema.TemporalExtentType — Type
Information which describes the temporal extent of a specific granule.
EarthData.GranuleSchema.TilingCoordinateType — Type
Defines the minimum and maximum value for one dimension of a two dimensional coordinate system.
EarthData.GranuleSchema.TilingIdentificationSystemType — Type
This entity stores the tiling identification system for the granule. The tiling identification system information is an alternative way to express granule's spatial coverage based on a certain two dimensional coordinate system defined by the providers. The name must match the name in the parent collection.
EarthData.GranuleSchema.TrackPassTileType — Type
This element stores a track pass and its tile information. It will allow a user to search by pass number and their tiles that are contained with in a cycle number. While trying to keep this generic for all to use, this comes from a SWOT requirement where a pass represents a 1/2 orbit. This element will then hold a list of 1/2 orbits and their tiles that together represent the granules spatial extent.
EarthData.GranuleSchema.TrackType — Type
This element stores track information of the granule. Track information is used to allow a user to search for granules whose spatial extent is based on an orbital cycle, pass, and tile mapping. Though it is derived from the SWOT mission requirements, it is intended that this element type be generic enough so that other missions can make use of it. While track information is a type of spatial domain, it is expected that the metadata provider will provide geometry information that matches the spatial extent of the track information.
EarthData.GranuleSchema.VerticalSpatialDomainType — Type
This entity contains the type and value for the granule's vertical spatial domain.
UMM-C schema types
Collection search results are parsed as EarthData.CollectionSchema.UMM_C and related schema types generated from NASA's UMM-C schema.
EarthData.CollectionSchema.AccessConstraintsType — Type
Information about any constraints for accessing the data set. This includes any special restrictions, legal prerequisites, limitations and/or warnings on obtaining the data set.
EarthData.CollectionSchema.AdditionalAttributeType — Type
Additional unique attributes of the collection, beyond those defined in the UMM model, which the data provider deems useful for end-user understanding of the data in the collection. Additional attributes are also called Product Specific Attributes (PSAs) or non-core attributes. Examples are HORIZONTALTILENUMBER, VERTICALTILENUMBER.
EarthData.CollectionSchema.AddressType — Type
This entity contains the physical address details for the contact.
EarthData.CollectionSchema.AltitudeSystemDefinitionType — Type
The reference frame or system from which altitude is measured. The term 'altitude' is used instead of the common term 'elevation' to conform to the terminology in Federal Information Processing Standards 70-1 and 173. The information contains the datum name, distance units and encoding method, which provide the definition for the system.
EarthData.CollectionSchema.ArchiveAndDistributionInformationType — Type
This element and all of its sub elements exist for display purposes. It allows a data provider to provide archive and distribution information up front to an end user, to help them decide if they can use the product.
EarthData.CollectionSchema.AssociatedDoiType — Type
This element stores the DOI (Digital Object Identifier) that identifies the collection. Note: The values should start with the directory indicator which in ESDIS' case is 10. If the DOI was registered through ESDIS, the beginning of the string should be 10.5067. The DOI URL is not stored here; it should be stored as a RelatedURL. The DOI organization that is responsible for creating the DOI is described in the Authority element. For ESDIS records the value of https://doi.org/ should be used. NASA metadata providers are strongly encouraged to include DOI and DOI Authority for their collections using CollectionDOI property.
EarthData.CollectionSchema.BoundaryType — Type
A boundary is set of points connected by straight lines representing a polygon on the earth. It takes a minimum of three points to make a boundary. Points must be specified in counter-clockwise order and closed (the first and last vertices are the same).
EarthData.CollectionSchema.CharacteristicType — Type
This entity is used to define characteristics.
EarthData.CollectionSchema.ContactInformationType — Type
Defines the contact information of a data center or data contact.
EarthData.CollectionSchema.ContactMechanismType — Type
Method for contacting the data contact. A contact can be available via phone, email, Facebook, or Twitter.
EarthData.CollectionSchema.DataCenterType — Type
Defines a data center which is either an organization or institution responsible for distributing, archiving, or processing the data, etc.
EarthData.CollectionSchema.DateType — Type
Specifies the date and its type.
EarthData.CollectionSchema.DepthSystemDefinitionType — Type
The reference frame or system from which depth is measured. The information contains the datum name, distance units and encoding method, which provide the definition for the system.
EarthData.CollectionSchema.DirectDistributionInformationType — Type
This element allows end users to get direct access to data products that are stored in the Amazon Web Service (AWS) S3 buckets. The sub elements include S3 credentials end point and a documentation URL as well as bucket prefix names and an AWS region.
EarthData.CollectionSchema.DirectoryNameType — Type
Formerly called Internal Directory Name (IDN) Node (IDN_Node). This element has been used historically by the GCMD internally to identify association, responsibility and/or ownership of the dataset, service or supplemental information. Note: This field only occurs in the DIF. When a DIF record is retrieved in the ECHO10 or ISO 19115 formats, this element will not be translated.
EarthData.CollectionSchema.DoiDoiType — Type
This element stores the DOI (Digital Object Identifier) that identifies the collection. Note: The values should start with the directory indicator which in ESDIS' case is 10. If the DOI was registered through ESDIS, the beginning of the string should be 10.5067. The DOI URL is not stored here; it should be stored as a RelatedURL. The DOI organization that is responsible for creating the DOI is described in the Authority element. For ESDIS records the value of https://doi.org/ should be used. NASA metadata providers are strongly encouraged to include DOI and DOI Authority for their collections using CollectionDOI property.
EarthData.CollectionSchema.ExclusiveZoneType — Type
Contains the excluded boundaries from the GPolygon.
EarthData.CollectionSchema.FootprintType — Type
The largest width of an instrument's footprint as measured on the Earths surface. The largest Footprint takes the place of SwathWidth in the Orbit Backtrack Algorithm if SwathWidth does not exist. The optional description element allows the user of the record to be able to distinguish between the different footprints of an instrument if it has more than 1.
EarthData.CollectionSchema.GeodeticModelType — Type
This element describes the geodetic model for the data product.
EarthData.CollectionSchema.GetDataType — Type
Represents the information needed for a DistributionURL where data is retrieved.
EarthData.CollectionSchema.GetServiceType — Type
Represents a Service through a URL where the service will act on data and return the result to the caller.
EarthData.CollectionSchema.HorizontalDataGenericResolutionType — Type
Generic Resolutions object describes general resolution data for a data product where it is not known if a data product is gridded or not.
EarthData.CollectionSchema.HorizontalDataResolutionGriddedRangeType — Type
Gridded Range Resolutions object describes range resolution data for gridded data products.
EarthData.CollectionSchema.HorizontalDataResolutionGriddedType — Type
Gridded Resolutions object describes resolution data for gridded data products.
EarthData.CollectionSchema.HorizontalDataResolutionNonGriddedRangeType — Type
Non Gridded Range Resolutions object describes range resolution data for non gridded data products.
EarthData.CollectionSchema.HorizontalDataResolutionNonGriddedType — Type
Non Gridded Resolutions object describes resolution data for non gridded data products.
EarthData.CollectionSchema.HorizontalDataResolutionType — Type
This class defines a number of the data products horizontal data resolution. The horizontal data resolution is defined as the smallest horizontal distance between successive elements of data in a dataset. This is synonymous with terms such as ground sample distance, sample spacing and pixel size. It is to be noted that the horizontal data resolution could be different in the two horizontal dimensions. Also, it is different from the spatial resolution of an instrument, which is the minimum distance between points that an instrument can see as distinct.
EarthData.CollectionSchema.HorizontalSpatialDomainType — Type
Information about a collection with horizontal spatial coverage.
EarthData.CollectionSchema.InstrumentChildType — Type
Child object on an instrument. Has all the same fields as instrument, minus the list of child instruments.
EarthData.CollectionSchema.InstrumentType — Type
Information about the device used to measure or record data in this collection, including direct human observation. In cases where instruments have a single child instrument or the instrument and child instrument are used synonymously (e.g. AVHRR), both Instrument and ComposedOf should be recorded. The child instrument information is represented in a separate section. The controlled vocabulary for instrument names is maintained in the Keyword Management System (KMS).
EarthData.CollectionSchema.LocationKeywordType — Type
This element defines a hierarchical location list. It replaces SpatialKeywords. The controlled vocabulary for location keywords is maintained in the Keyword Management System (KMS). Each tier must have data in the tier above it.
EarthData.CollectionSchema.MetadataAssociationType — Type
Used to identify other services, collections, visualizations, granules, and other metadata types and resources that are associated with or dependent on this collection, including parent-child relationships.
EarthData.CollectionSchema.MetadataSpecificationType — Type
This object requires any metadata record that is validated by this schema to provide information about the schema.
EarthData.CollectionSchema.OnlineResourceType — Type
Describes the online resource pertaining to the data.
EarthData.CollectionSchema.OrbitParametersType — Type
Orbit parameters for the collection used by the Orbital Backtrack Algorithm.
EarthData.CollectionSchema.PaleoTemporalCoverageType — Type
For paleoclimate or geologic data, PaleoTemporalCoverage is the length of time represented by the data collected. PaleoTemporalCoverage should be used when the data spans time frames earlier than yyyy-mm-dd = 0001-01-01.
EarthData.CollectionSchema.PeriodicDateTimeType — Type
Information about Periodic Date Time collections, including the name of the temporal period in addition to the start and end dates, duration unit and value, and cycle duration unit and value.
EarthData.CollectionSchema.PlatformType — Type
Describes the relevant platforms used to acquire the data in the collection. The controlled vocabularies for platform types and names are maintained in the Keyword Management System (KMS).
EarthData.CollectionSchema.PointType — Type
The longitude and latitude values of a spatially referenced point in degrees.
EarthData.CollectionSchema.ProcessingLevelType — Type
This element contains the Processing Level Id and the Processing Level Description
EarthData.CollectionSchema.ProjectType — Type
Information describing the scientific endeavor(s) with which the collection is associated. Scientific endeavors include campaigns, projects, interdisciplinary science investigations, missions, field experiments, etc. The controlled vocabularies for project names are maintained in the Keyword Management System (KMS)
EarthData.CollectionSchema.PublicationReferenceType — Type
Describes key bibliographic citations pertaining to the data.
EarthData.CollectionSchema.RangeDateTimeType — Type
Stores the start and end date/time of a collection.
EarthData.CollectionSchema.RelatedUrlType — Type
Represents Internet sites that contain information related to the data, as well as related Internet sites such as project home pages, related data archives/servers, metadata extensions, online software packages, web mapping services, and calibration/validation data.
EarthData.CollectionSchema.ResolutionAndCoordinateSystemType — Type
This class defines the horizontal spatial extents coordinate system and the data product's horizontal data resolution. The horizontal data resolution is defined as the smallest horizontal distance between successive elements of data in a dataset. This is synonymous with terms such as ground sample distance, sample spacing and pixel size. It is to be noted that the horizontal data resolution could be different in the two horizontal dimensions. Also, it is different from the spatial resolution of an instrument, which is the minimum distance between points that an instrument can see as distinct.
EarthData.CollectionSchema.ResourceCitationType — Type
Building block text fields used to construct the recommended language for citing the collection in professional scientific literature. The citation language constructed from these fields references the collection itself, and is not designed for listing bibliographic references of scientific research articles arising from search results. A list of references related to the research results should be in the Publication Reference element.
EarthData.CollectionSchema.ScienceKeywordType — Type
Enables specification of Earth science keywords related to the collection. The controlled vocabulary for Science Keywords is maintained in the Keyword Management System (KMS).
EarthData.CollectionSchema.SpatialExtentType — Type
Specifies the geographic and vertical (altitude, depth) coverage of the data.
EarthData.CollectionSchema.SpatialInformationType — Type
This entity stores the reference frame or system from which horizontal and vertical spatial domains are measured. The horizontal reference frame includes a Geodetic Model, Geographic Coordinates, and Local Coordinates. The Vertical reference frame includes altitudes (elevations) and depths.
EarthData.CollectionSchema.TemporalExtentType — Type
Information which describes the temporal range or extent of a specific collection.
EarthData.CollectionSchema.TilingCoordinateType — Type
Defines the minimum and maximum value for one dimension of a two dimensional coordinate system.
EarthData.CollectionSchema.TilingIdentificationSystemType — Type
Information about a two-dimensional tiling system related to this collection.
EarthData.CollectionSchema.UseConstraintsDescriptionType — Type
This sub-element either contains a license summary or free-text description that details the permitted use or limitation of this collection.
EarthData.CollectionSchema.UseConstraintsType — Type
This element defines how the data may or may not be used after access is granted to assure the protection of privacy or intellectual property. This includes license text, license URL, or any special restrictions, legal prerequisites, terms and conditions, and/or limitations on using the data set. Data providers may request acknowledgement of the data from users and claim no responsibility for quality and completeness of data.