UNPKG

gis-tools-ts

Version:

A collection of geospatial tools primarily designed for WGS84, Web Mercator, and S2.

100 lines 3.63 kB
import { Info } from './info.js'; import type { InfoBlock } from './info.js'; import type { PbfReader } from 'pbf-ts'; import type { Properties, VectorFeature, VectorLineString, VectorMultiLineString, VectorMultiPolygon, VectorPoint } from '../../geometry/index.js'; import type { OSMMetadata, PrimitiveBlock } from './primitive.js'; import type { OSMProperties, OSMReader } from './index.js'; /** An intermediate vector feature where the ways and nodes haven't been resolved yet. */ export interface IntermediateRelation { id: number; properties: OSMProperties; members: IntermediateMember[]; metadata: InfoBlock; } /** An intermediate vector feature where the way nodes haven't been resolved yet. */ export type IntermediateMember = IntermediateNodeMember | IntermediateWayMember; /** An intermediate vector feature where the way nodes haven't been resolved yet. */ export interface IntermediateNodeMember { relationID: number; role: string; node: number; } /** An intermediate vector feature where the way nodes haven't been resolved yet. */ export interface IntermediateWayMember { role: string; way: number; } /** * @param relation - the intermediate relation * @param reader - the OSM reader * @returns - the feature in vector format */ export declare function intermediateRelationToVectorFeature(relation: IntermediateRelation, reader: OSMReader): Promise<VectorFeature<OSMMetadata, Properties, OSMProperties> | undefined>; /** Member Type can be Node (0), Way (1) or Relation (2). */ export declare const enum MemberType { /** Node Member */ Node = 0, /** Way Member */ Way = 1, /** Relation Member */ Relation = 2 } /** Member Options. Relations is skipped as it is not supported / has no use. */ export type Member = NodeMember | WayMember; /** Node Member */ export interface NodeMember { id: number; role: string; node: VectorPoint; } /** Way Member */ export interface WayMember { id: number; role: string; way: VectorLineString; } /** Relation coordinates from ways with information about node relations. */ export type RelationGeometry = RelationGeometryLines | RelationGeometryArea; /** Lines Geometry */ export interface RelationGeometryLines { type: 0; coordinates: VectorMultiLineString; } /** Area Geometry */ export interface RelationGeometryArea { type: 1; coordinates: VectorMultiPolygon; } /** * Relation class contains a collection of nodes, ways and relations as members. */ export declare class Relation { #private; primitiveBlock: PrimitiveBlock; reader: OSMReader; id: number; info?: Info; /** * @param primitiveBlock - the primitive block * @param reader - the OSM reader * @param pbf - the Protobuf if provided */ constructor(primitiveBlock: PrimitiveBlock, reader: OSMReader, pbf?: PbfReader); /** @returns - true if the relation is filterable */ isFilterable(): boolean; /** @returns - the properties of the relation */ properties(): OSMProperties; /** * Each member can be node, way or relation. * @returns an array of members associated with this relation */ members(): IntermediateMember[]; /** @returns - the feature in intermediate format to build later */ toIntermediateFeature(): undefined | IntermediateRelation; } /** * @param members - an array of members * @returns - an array of node members that have a 'label' or 'admin_centre' role */ export declare function getNodeRelationPairs(members: IntermediateMember[]): IntermediateNodeMember[]; //# sourceMappingURL=relation.d.ts.map