/** * GeometryTypes * * https://tools.ietf.org/html/rfc7946#section-1.4 * The valid values for the "type" property of GeoJSON geometry objects. */ export declare type GeometryTypes = "Point" | "LineString" | "Polygon" | "MultiPoint" | "MultiLineString" | "MultiPolygon" | "GeometryCollection"; export declare type CollectionTypes = "FeatureCollection" | "GeometryCollection"; /** * Types * * https://tools.ietf.org/html/rfc7946#section-1.4 * The value values for the "type" property of GeoJSON Objects. */ export declare type Types = "Feature" | GeometryTypes | CollectionTypes; /** * Bounding box * * https://tools.ietf.org/html/rfc7946#section-5 * A GeoJSON object MAY have a member named "bbox" to include information on the coordinate range for its Geometries, Features, or FeatureCollections. * The value of the bbox member MUST be an array of length 2*n where n is the number of dimensions represented in the contained geometries, * with all axes of the most southwesterly point followed by all axes of the more northeasterly point. * The axes order of a bbox follows the axes order of geometries. */ export declare type BBox2d = [number, number, number, number]; export declare type BBox3d = [number, number, number, number, number, number]; export declare type BBox = BBox2d | BBox3d; /** * Id * * https://tools.ietf.org/html/rfc7946#section-3.2 * If a Feature has a commonly used identifier, that identifier SHOULD be included as a member of * the Feature object with the name "id", and the value of this member is either a JSON string or number. */ export declare type Id = string | number; /** * Position * * https://tools.ietf.org/html/rfc7946#section-3.1.1 * Array should contain between two and three elements. * The previous GeoJSON specification allowed more elements (e.g., which could be used to represent M values), * but the current specification only allows X, Y, and (optionally) Z to be defined. */ export declare type Position = number[]; /** * Properties * * https://tools.ietf.org/html/rfc7946#section-3.2 * A Feature object has a member with the name "properties". * The value of the properties member is an object (any JSON object or a JSON null value). */ export declare type Properties = { [name: string]: any; } | null; /** * Geometries */ export declare type Geometries = Point | LineString | Polygon | MultiPoint | MultiLineString | MultiPolygon; /** * GeoJSON Object * * https://tools.ietf.org/html/rfc7946#section-3 * The GeoJSON specification also allows [foreign members](https://tools.ietf.org/html/rfc7946#section-6.1) * Developers should use "&" type in TypeScript or extend the interface to add these foreign members. */ export interface GeoJSONObject { /** * Specifies the type of GeoJSON object. */ type: string; /** * Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections. * https://tools.ietf.org/html/rfc7946#section-5 */ bbox?: BBox; } /** * Geometry Object * * https://tools.ietf.org/html/rfc7946#section-3 */ export interface GeometryObject extends GeoJSONObject { type: GeometryTypes; } /** * Geometry * * https://tools.ietf.org/html/rfc7946#section-3 */ export interface Geometry extends GeoJSONObject { coordinates: Position | Position[] | Position[][] | Position[][][]; } /** * Point Geometry Object * * https://tools.ietf.org/html/rfc7946#section-3.1.2 */ export interface Point extends GeometryObject { type: "Point"; coordinates: Position; } /** * MultiPoint Geometry Object * * https://tools.ietf.org/html/rfc7946#section-3.1.3 */ export interface MultiPoint extends GeometryObject { type: "MultiPoint"; coordinates: Position[]; } /** * LineString Geometry Object * * https://tools.ietf.org/html/rfc7946#section-3.1.4 */ export interface LineString extends GeometryObject { type: "LineString"; coordinates: Position[]; } /** * MultiLineString Geometry Object * * https://tools.ietf.org/html/rfc7946#section-3.1.5 */ export interface MultiLineString extends GeometryObject { type: "MultiLineString"; coordinates: Position[][]; } /** * Polygon Geometry Object * * https://tools.ietf.org/html/rfc7946#section-3.1.6 */ export interface Polygon extends GeometryObject { type: "Polygon"; coordinates: Position[][]; } /** * MultiPolygon Geometry Object * * https://tools.ietf.org/html/rfc7946#section-3.1.7 */ export interface MultiPolygon extends GeometryObject { type: "MultiPolygon"; coordinates: Position[][][]; } /** * GeometryCollection * * https://tools.ietf.org/html/rfc7946#section-3.1.8 * * A GeoJSON object with type "GeometryCollection" is a Geometry object. * A GeometryCollection has a member with the name "geometries". * The value of "geometries" is an array. Each element of this array is a GeoJSON Geometry object. * It is possible for this array to be empty. */ export interface GeometryCollection extends GeometryObject { type: "GeometryCollection"; geometries: Array; } /** * Feature * * https://tools.ietf.org/html/rfc7946#section-3.2 * A Feature object represents a spatially bounded thing. * Every Feature object is a GeoJSON object no matter where it occurs in a GeoJSON text. */ export interface Feature extends GeoJSONObject { type: "Feature"; geometry: G; /** * A value that uniquely identifies this feature in a * https://tools.ietf.org/html/rfc7946#section-3.2. */ id?: Id; /** * Properties associated with this feature. */ properties: P; } /** * Feature Collection * * https://tools.ietf.org/html/rfc7946#section-3.3 * A GeoJSON object with the type "FeatureCollection" is a FeatureCollection object. * A FeatureCollection object has a member with the name "features". * The value of "features" is a JSON array. Each element of the array is a Feature object as defined above. * It is possible for this array to be empty. */ export interface FeatureCollection extends GeoJSONObject { type: "FeatureCollection"; features: Array>; }