ClickHouse provides geometry types for spatial data. Moose exposes type-safe helpers that map to the correct ClickHouse representations.
A single coordinate pair [x, y].
import { ClickHousePoint } from "@514labs/moose-lib"; interface Location { coordinates: ClickHousePoint; // Point → [number, number]}A closed sequence of points forming a boundary (first and last points are the same).
import { ClickHouseRing } from "@514labs/moose-lib"; interface Boundary { outline: ClickHouseRing; // Ring → Array<[number, number]>}A sequence of connected points forming a line.
import { ClickHouseLineString } from "@514labs/moose-lib"; interface Route { path: ClickHouseLineString; // LineString → Array<[number, number]>}Multiple line strings.
import { ClickHouseMultiLineString } from "@514labs/moose-lib"; interface Network { roads: ClickHouseMultiLineString; // Array<Array<[number, number]>>}A shape defined by an outer ring and optional inner rings (holes).
import { ClickHousePolygon } from "@514labs/moose-lib"; interface Zone { area: ClickHousePolygon; // Polygon → Array<Array<[number, number]>>}Multiple polygons.
import { ClickHouseMultiPolygon } from "@514labs/moose-lib"; interface Region { territories: ClickHouseMultiPolygon; // Array<Array<Array<[number, number]>>>}| ClickHouse Type | TypeScript | Python |
|---|---|---|
Point | ClickHousePoint | Point (tuple[float, float]) |
Ring | ClickHouseRing | Ring (list[tuple[float, float]]) |
LineString | ClickHouseLineString | LineString (list[tuple[float, float]]) |
MultiLineString | ClickHouseMultiLineString | MultiLineString (list[list[...]]) |
Polygon | ClickHousePolygon | Polygon (list[list[...]]) |
MultiPolygon | ClickHouseMultiPolygon | MultiPolygon (list[list[list[...]]]) |
Coordinates are represented as [x, y] pairs. For geographic data, this typically means [longitude, latitude].