ralpha-assets/Plugins/CesiumForUnreal/Source/ThirdParty/include/CesiumITwinClient/GeospatialFeatureCollection.h

90 lines
2.9 KiB
C++

#pragma once
#include <CesiumGeospatial/BoundingRegion.h>
#include <string>
#include <utility>
#include <vector>
namespace CesiumITwinClient {
/**
* @brief The extents of a feature collection.
*/
struct GeospatialFeatureCollectionExtents {
/**
* @brief A feature collection's spatial extents.
*
* From the [specification](https://docs.ogc.org/is/17-069r4/17-069r4.html):
* > One or more bounding boxes that describe the spatial extent of the
* > dataset. In the Core only a single bounding box is supported. Extensions
* > may support additional areas. If multiple areas are provided, the union
* > of the bounding boxes describes the spatial extent.
*/
std::vector<CesiumGeometry::AxisAlignedBox> spatial;
/**
* @brief The coordinate reference system used for the spatial extents.
*
* Only a WGS84 CRS is currently supported.
*/
std::string coordinateReferenceSystem;
/**
* @brief A feature collection's temporal extents.
*
* From the specification:
* > One or more time intervals that describe the temporal extent of the
* > dataset. The value `null` is supported and indicates an unbounded
* > interval end. In the Core only a single time interval is supported.
* > Extensions may support multiple intervals. If multiple intervals are
* > provided, the union of the intervals describes the temporal extent.
*
* While the specification reads that this property includes "one or more time
* intervals," that is only the case if the property is specified (it is
* optional). If not specified, no time intervals will be listed.
*
* Null values will be represented as empty strings.
*/
std::vector<std::pair<std::string, std::string>> temporal;
/**
* @brief The temporal reference system used for the temporal extents.
*
* The Gregorian calendar is currently the only supported TRS.
*/
std::string temporalReferenceSystem;
};
/**
* @brief The definition of a collection of geospatial features.
*/
struct GeospatialFeatureCollection {
/**
* @brief The ID of this feature collection.
*/
std::string id;
/**
* @brief The title of this feature collection.
*/
std::string title;
/**
* @brief The description of this feature collection.
*/
std::string description;
/**
* @brief The spatial and temporal extents of this collection.
*/
GeospatialFeatureCollectionExtents extents;
/**
* @brief The coordinate reference systems used by this feature collection.
*/
std::vector<std::string> crs;
/**
* @brief The coordinate reference system used for storage.
*/
std::string storageCrs;
/**
* @brief The epoch of the storage coordinate reference system, if applicable.
*/
std::optional<std::string> storageCrsCoordinateEpoch;
};
} // namespace CesiumITwinClient