npm.io
1.0.0-beta.24 • Published 3 weeks ago

@allmaps/types

Licence
MIT
Version
1.0.0-beta.24
Deps
0
Size
18 kB
Vulns
0
Weekly
0
Stars
144

@allmaps/types

Allmaps TypeScript types

Geometry types

The following Geometries are used by default Allmaps packages.

type Point = [number, number]

type LineString = Point[]

type Polygon = Point[][]
// A Polygon is an array of rings of at least three points
// Rings are not closed: the first point is not repeated at the end.
// There is no requirement on winding order.

type MultiPoint = Point[]
// Notice that this is equivalent to the LineString type, hence the `isMultiGeometry` option

type MultiLineString = Point[][]
// Notice that this is equivalent to the Polygon type, hence the `isMultiGeometry` option

type MultiPolygon = Point[][][]

type Geometry =
  | Point
  | LineString
  | Polygon
  | MultiPoint
  | MultiLineString
  | MultiPolygon

To interact with external data, the following types are used as well:

GeoJSON Geometries follow the GeoJSON specification.

SVG Geometries are expressed using the following types (but note that some functions allow svg's to be passed as a string):

export type SvgCircle = {
  type: 'circle'
  attributes?: SvgAttributes
  coordinates: Point
}

export type SvgLine = {
  type: 'line'
  attributes?: SvgAttributes
  coordinates: [Point, Point]
}

export type SvgPolyLine = {
  type: 'polyline'
  attributes?: SvgAttributes
  coordinates: Point[]
}

export type SvgPolygon = {
  type: 'polygon'
  attributes?: SvgAttributes
  coordinates: Point[]
}

export type SvgRect = {
  type: 'rect'
  attributes?: SvgAttributes
  coordinates: Point[]
}

export type SvgGeometry =
  | SvgCircle
  | SvgLine
  | SvgPolyLine
  | SvgPolygon
  | SvgRect

API

Bbox

Bbox ([number, number, number, number]). Defined as [xMin, yMin, xMax, yMax]

Color
Type
[number, number, number]
ColorCount
Fields
  • color ([number, number, number])
  • count (number)
ColorWithTransparancy
Type
[number, number, number, number]
FetchFn
Type
(
  input: Request | string | URL,
  init?: RequestInit
) => Promise<Response>
Fit

Ways two rectangles (or shapes in general) can overlap: ('contain' | 'cover' | 'equal').

  • 'contain': The first contains the second
  • 'cover': The first is covered by the second
  • 'equal': The first and second have equal size
Gcp
Fields
  • geo ([number, number])
  • resource ([number, number])
GeojsonFeature
Fields
  • geometry ( | GeojsonLineString | GeojsonMultiLineString | GeojsonMultiPoint | GeojsonMultiPolygon | GeojsonPoint | GeojsonPolygon)
  • properties (unknown)
  • type ('Feature')
GeojsonFeatureCollection
Fields
  • features (Array<GeojsonFeature>)
  • type ('FeatureCollection')
GeojsonGeometry
Type
  | GeojsonLineString
  | GeojsonMultiLineString
  | GeojsonMultiPoint
  | GeojsonMultiPolygon
  | GeojsonPoint
  | GeojsonPolygon
GeojsonGeometryType
Type
  | 'LineString'
  | 'MultiLineString'
  | 'MultiPoint'
  | 'MultiPolygon'
  | 'Point'
  | 'Polygon'
GeojsonLineString
Fields
  • coordinates (Array<Array<number>>)
  • type ('LineString')
GeojsonMultiGeometry
Type
GeojsonMultiLineString | GeojsonMultiPoint | GeojsonMultiPolygon
GeojsonMultiLineString
Fields
  • coordinates (Array<Array<Array<number>>>)
  • type ('MultiLineString')
GeojsonMultiPoint
Fields
  • coordinates (Array<Array<number>>)
  • type ('MultiPoint')
GeojsonMultiPolygon
Fields
  • coordinates (Array<Array<Array<Array<number>>>>)
  • type ('MultiPolygon')
GeojsonPoint
Fields
  • coordinates (Array<number>)
  • type ('Point')
GeojsonPolygon
Fields
  • coordinates (Array<Array<Array<number>>>)
  • type ('Polygon')
Geometry
Type
  LineString | MultiLineString | MultiPoint | MultiPolygon | Point | Polygon
Histogram
Fields
  • [bin: string] ({count: number; color: Color})
HomogeneousTransform

Weights array of a 2D Homogeneous Transform Matrix

These coefficients are used in the same order in multiple places

  • CSS Transform defined by a 2D matrix. Use toString() before using this as input for a CSS matrix() function.
  • WebGL 2D transform matrices.
  • OpenLayers' transform class.

See: https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix See: https://openlayers.org/en/latest/apidoc/module-ol_transform.html

Note: The weights array of a Polynomial1 Transformation has a different order. See the corresponding conversion functions.

Type
[number, number, number, number, number, number]
ImageRequest
Fields
  • region? ({x: number; y: number; width: number; height: number})
  • size? ({width: number; height: number})
Line
Type
[Point, Point]
LineString
Type
Array<Point>
Matrix4
Type
[
  number,
  number,
  number,
  number,
  number,
  number,
  number,
  number,
  number,
  number,
  number,
  number,
  number,
  number,
  number,
  number
]
MultiGeometryOptions
Fields
  • isMultiGeometry (boolean)
MultiLineString
Type
Array<Array<Point>>
MultiPoint
Type
Array<Point>
MultiPolygon
Type
Array<Array<Array<Point>>>
Point
Type
[number, number]
Polygon
Type
Array<Array<Point>>
Rectangle

Rectangle (or possibly quadrilateral) ([Point, Point, Point, Point]). Winding order of points is free.

Region
Fields
  • height (number)
  • width (number)
  • x (number)
  • y (number)
Ring

Ring as [[number, number], ...] (Array<Point>).

Must contain at least 3 points May not contain duplicate points Must be unclosed: last element is not a repetition of the first May not be self-intersecting So far no requirement on self-intersection although that may be useful in future So far no requirement on winding order. This is only applied when exporting to GeoJSON

Size

Two numbers indicating the size of a Bbox as [width, height] or [xSize, ySize] ([number, number]). Alternatively, two numbers indicating the minimum and maximum of, for example, an array of numbers Alternatively, two numbers indicating the dimensions of a matrix: rows, cols (which is a different handedness!)

SizeObject
Fields
  • height (number)
  • width (number)
SvgAttributes
Type
{[x: string]: string | number}
SvgCircle
Fields
  • attributes? ({[x: string]: string | number})
  • coordinates ([number, number])
  • type ('circle')
SvgGeometry
Type
SvgCircle | SvgLine | SvgPolyLine | SvgPolygon | SvgRect
SvgLine
Fields
  • attributes? ({[x: string]: string | number})
  • coordinates ([Point, Point])
  • type ('line')
SvgPolyLine
Fields
  • attributes? ({[x: string]: string | number})
  • coordinates (Array<Point>)
  • type ('polyline')
SvgPolygon
Fields
  • attributes? ({[x: string]: string | number})
  • coordinates (Array<Point>)
  • type ('polygon')
SvgRect
Fields
  • attributes? ({[x: string]: string | number})
  • coordinates (Array<Point>)
  • type ('rect')
Tile
Fields
  • column (number)
  • imageSize ([number, number])
  • row (number)
  • tileZoomLevel ({ scaleFactor: number width: number height: number originalWidth: number originalHeight: number columns: number rows: number })
TileByColumn
Fields
  • [key: number] ([number, number])
TileZoomLevel
Fields
  • columns (number)
  • height (number)
  • originalHeight (number)
  • originalWidth (number)
  • rows (number)
  • scaleFactor (number)
  • width (number)
Triangle

Triangle As [[x0, y0], [x1, y1], [x2, y2]] ([Point, Point, Point]).

Winding order of points is free.

TypedGeometry
Type
P | TypedLineString<P> | TypedMultiLineString<P> | TypedMultiPoint<P> | TypedMultiPolygon<P> | TypedPolygon<...>
TypedLine
Type
[P, P]
TypedLineString
Type
Array<P>
TypedMultiLineString
Type
Array<Array<P>>
TypedMultiPoint
Type
Array<P>
TypedMultiPolygon
Type
Array<Array<Array<P>>>
TypedPolygon
Type
Array<Array<P>>
TypedRectangle
Type
[P, P, P, P]
TypedRing
Type
Array<P>
TypedTriangle
Type
[P, P, P]

Keywords