// Copyright © Joerg Battermann 2014, Matt Hunt 2017
using GeoJSON.Text.Converters;
using System.Text.Json.Serialization;
namespace GeoJSON.Text
{
///
/// Base Interface for GeoJSONObject types.
///
public interface IGeoJSONObject
{
///
/// Gets the (mandatory) type of the GeoJSON Object.
///
///
/// See https://tools.ietf.org/html/rfc7946#section-3
///
///
/// The type of the object.
///
[JsonPropertyName("type")]
GeoJSONObjectType Type { get; }
///
/// Gets the (optional) Coordinate Reference System Object.
///
///
/// See https://tools.ietf.org/html/rfc7946#section-4
///
///
/// The Coordinate Reference System Objects.
///
[JsonPropertyName("crs")]
CoordinateReferenceSystem.ICRSObject CRS { get; }
///
/// Gets or sets the (optional) Bounding Boxes.
///
///
/// See https://tools.ietf.org/html/rfc7946#section-5
///
///
/// The value of the bbox member must be a 2*n array where n is the number of dimensions represented in the
/// contained geometries, with the lowest values for all axes followed by the highest values.
/// The axes order of a bbox follows the axes order of geometries.
/// In addition, the coordinate reference system for the bbox is assumed to match the coordinate reference
/// system of the GeoJSON object of which it is a member.
///
[JsonPropertyName("bbox")]
[JsonConverter(typeof(BoundingBoxConverter))]
double[] BoundingBoxes { get; set; }
}
}