/** * Multipolygon relation building utilities. * * Implements the OSM multipolygon relation specification to construct * polygon geometries from way members. Handles outer/inner roles, * way connection, and ring closure. * * @see https://wiki.openstreetmap.org/wiki/Relation:multipolygon * * @module */ import type { LonLat, OsmRelation, OsmRelationMember, OsmWay } from "./types.ts"; /** * Get way members from a relation, grouped by role (outer/inner). */ export declare function getWayMembersByRole(relation: OsmRelation): { outer: OsmRelationMember[]; inner: OsmRelationMember[]; }; /** * Connect ways that share endpoints to form a continuous ring. * Returns an array of rings (each ring is an array of way IDs in order). * * This function handles: * - Ways that are reversed (end matches end, or start matches start). * - Closed ways (single ways that form a ring). * - Disconnected chains (multiple independent rings). */ export declare function connectWaysToRings(wayMembers: OsmWay[]): OsmWay[][]; /** * Build polygon rings from way members of a relation. * Returns an array where each element is an array of coordinate rings (outer + inner). * * Based on OSM multipolygon relation specification: * https://wiki.openstreetmap.org/wiki/Relation:multipolygon * * This implementation connects way members into closed rings, and then groups them * into polygons. Currently, it associates all inner rings with every outer ring * found in the relation, which is a simplification. A robust implementation would * use point-in-polygon checks to strictly nest holes inside their parent outer ring. */ export declare function buildRelationRings(relation: OsmRelation, getWay: (wayId: number) => OsmWay | null, getNodeCoordinates: (nodeId: number) => LonLat | undefined): LonLat[][][]; //# sourceMappingURL=relation-multipolygon.d.ts.map