Source code for pystac
"""
PySTAC is a library for working with SpatioTemporal Asset Catalogs (STACs)
"""
# flake8: noqa
[docs]class STACError(Exception):
"""A STACError is raised for errors relating to STAC, e.g. for
invalid formats or trying to operate on a STAC that does not have
the required information available.
"""
pass
from pystac.version import (__version__, get_stac_version, set_stac_version)
from pystac.stac_io import STAC_IO
from pystac.extensions import Extensions
from pystac.stac_object import (STACObject, STACObjectType)
from pystac.media_type import MediaType
from pystac.link import (Link, HIERARCHICAL_LINKS)
from pystac.catalog import (Catalog, CatalogType)
from pystac.collection import (Collection, Extent, SpatialExtent, TemporalExtent, Provider)
from pystac.item import (Item, Asset, CommonMetadata)
from pystac.serialization import stac_object_from_dict
import pystac.validation
STAC_IO.stac_object_from_dict = stac_object_from_dict
from pystac import extensions
import pystac.extensions.eo
import pystac.extensions.label
import pystac.extensions.pointcloud
import pystac.extensions.projection
import pystac.extensions.sar
import pystac.extensions.sat
import pystac.extensions.scientific
import pystac.extensions.single_file_stac
import pystac.extensions.timestamps
import pystac.extensions.version
import pystac.extensions.view
import pystac.extensions.file
STAC_EXTENSIONS = extensions.base.RegisteredSTACExtensions([
extensions.eo.EO_EXTENSION_DEFINITION, extensions.label.LABEL_EXTENSION_DEFINITION,
extensions.pointcloud.POINTCLOUD_EXTENSION_DEFINITION,
extensions.projection.PROJECTION_EXTENSION_DEFINITION, extensions.sar.SAR_EXTENSION_DEFINITION,
extensions.sat.SAT_EXTENSION_DEFINITION, extensions.scientific.SCIENTIFIC_EXTENSION_DEFINITION,
extensions.single_file_stac.SFS_EXTENSION_DEFINITION,
extensions.timestamps.TIMESTAMPS_EXTENSION_DEFINITION,
extensions.version.VERSION_EXTENSION_DEFINITION, extensions.view.VIEW_EXTENSION_DEFINITION,
extensions.file.FILE_EXTENSION_DEFINITION
])
[docs]def read_file(href):
"""Reads a STAC object from a file.
This method will return either a Catalog, a Collection, or an Item based on what the
file contains.
This is a convenience method for :meth:`STACObject.from_file <pystac.STACObject.from_file>`
Args:
href (str): The HREF to read the object from.
Returns:
The specific STACObject implementation class that is represented
by the JSON read from the file located at HREF.
"""
return STACObject.from_file(href)
[docs]def write_file(obj, include_self_link=True, dest_href=None):
"""Writes a STACObject to a file.
This will write only the Catalog, Collection or Item ``obj``. It will not attempt
to write any other objects that are linked to ``obj``; if you'd like functionality to
save off catalogs recursively see :meth:`Catalog.save <pystac.Catalog.save>`.
This method will write the JSON of the object to the object's assigned "self" link or
to the dest_href if provided. To set the self link, see :meth:`STACObject.set_self_href
<pystac.STACObject.set_self_href>`.
Convenience method for :meth:`STACObject.from_file <pystac.STACObject.from_file>`
Args:
obj (STACObject): The STACObject to save.
include_self_link (bool): If this is true, include the 'self' link with this object.
Otherwise, leave out the self link.
dest_href (str): Optional HREF to save the file to. If None, the object will be saved
to the object's self href.
"""
obj.save_object(include_self_link=include_self_link, dest_href=dest_href)
[docs]def read_dict(d, href=None, root=None):
"""Reads a STAC object from a dict representing the serialized JSON version of the
STAC object.
This method will return either a Catalog, a Collection, or an Item based on what the
dict contains.
This is a convenience method for :meth:`pystac.serialization.stac_object_from_dict`
Args:
d (dict): The dict to parse.
href (str): Optional href that is the file location of the object being
parsed.
root (Catalog or Collection): Optional root of the catalog for this object.
If provided, the root's resolved object cache can be used to search for
previously resolved instances of the STAC object.
"""
return stac_object_from_dict(d, href, root)