s2-tools
Version:
A collection of geospatial tools primarily designed for WGS84, Web Mercator, and S2.
99 lines • 3.54 kB
TypeScript
import { Info, InfoBlock } from './info';
import type { OSMReader } from '.';
import type { Pbf as Protobuf } from '../../readers/protobuf';
import type { Metadata, PrimitiveBlock } from './primitive';
import type { VectorFeature, VectorLineString, VectorMultiLineString, VectorMultiPolygon, VectorPoint } from '../../geometry';
/** An intermediate vector feature where the ways and nodes haven't been resolved yet. */
export interface IntermediateRelation {
id: number;
properties: Record<string, string>;
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<Metadata> | undefined>;
/** Member Type can be Node (0), Way (1) or Relation (2). */
export declare 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?: Protobuf);
/** @returns - true if the relation is filterable */
isFilterable(): boolean;
/** @returns - the properties of the relation */
properties(): Record<string, string>;
/**
* 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