UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

82 lines (79 loc) 3.65 kB
/** * Creates planar buffers around 2D geometries using graphical joins and caps. * * ![Graphic buffer operator](https://developers.arcgis.com/javascript/latest/assets/references/core/operators/graphicBuffer.png "Graphic buffer operator") * * @since 4.31 */ import type Polygon from "../Polygon.js"; import type { LengthUnit } from "../../core/units.js"; import type { GeometryUnion } from "../types.js"; export interface Options { /** * The max deviation of the result buffer from the true buffer in the geometries spatial reference units. * When the value is NaN, internal logic is used to select the deviation based on the buffer distance. * Unless the `unit` option is set, the default is the geometries spatial reference unit. * * @default NaN */ maxDeviation?: number; /** * The maximum number of vertices in the polygon produced from a buffered point. * * @default 96 */ maxVerticesInFullCircle?: number; /** * Defines when miter joins are replaced with bevel joins. * * @default 10 */ miterLimit?: number; /** * Indicates if the buffer geometries should be unioned. When set to `true`, the output will be a single geometry. * * @default false */ union?: boolean; /** * The length unit of the buffer distances and max deviation. * The default is the input geometries spatial reference unit. * An error will be thrown if this is set for Geographic Coordinate Systems. */ unit?: LengthUnit; } /** * Creates a buffer around the input geometries, using graphical joins and caps. * * Both `maxDeviation` and `maxVerticesInFullCircle` control the quality of round joins that are in the buffers. * The precision of each buffer is defined by `maxDeviation` unless the number of required vertices is too large. * * @param geometries - The input geometries to be buffered. * All the geometries must have the same spatial reference. * @param distances - The buffer distances for the geometries. * If the size of this array is less than the number of geometries in the input `geometries`, the last distance value is used for the rest of geometries. * Unless the `unit` option is set, the default is the geometries spatial reference unit. * @param joins - Defines the buffers shape where geometries are joined. * * Miter joins are replaced with bevel when the ratio of the miter thickness to the buffer distance is greater than miter limit. The miter thickness is the distance from the vertex to the mitered corner of the buffer that this vertex generates. * @param caps - Defines the buffers shape at the end points of the geometries. * * Points with square caps will be drawn as squares. * * Open polylines paths with square caps degenerate to a point and will be drawn as squares (degenerate with zero tolerance). * * Open polylines paths with round caps degenerate to a point and will be drawn as circles (degenerate with zero tolerance). * @param options - Additional options. * @returns Returns the buffered geometries. * @example * // Buffer two polylines with different distances and buffer styles. * const buffers = graphicBufferOperator.executeMany( * [polyline1, polyline2], * [1000, 1500], * "square", * "round", * 10, * ); */ export function executeMany(geometries: GeometryUnion[], distances: number[], joins: "round" | "miter" | "bevel", caps: "round" | "butt" | "square", options?: Options): Polygon[]; /** * Indicates if the operator supports input geometries that contain curves. * The value will always be `true`. This will produce densified output geometries. */ export const supportsCurves: boolean;