UNPKG

@arcgis/core

Version:

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

166 lines (155 loc) 6.75 kB
/** * Provides utility functions for the [WFSLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/WFSLayer/). * * @since 4.20 * @see [WFSLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/WFSLayer/) */ import type Extent from "../../geometry/Extent.js"; import type SpatialReference from "../../geometry/SpatialReference.js"; import type Field from "../support/Field.js"; import type { AbortOptions } from "../../core/promiseUtils.js"; import type { FeatureGeometryType } from "../../geometry/types.js"; import type { CustomParameters } from "../mixins/CustomParametersMixin.js"; export interface GetCapabilitiesOptions extends AbortOptions { /** A list of key-value pairs of parameters to append to the url. */ customParameters?: CustomParameters | null; } /** * Fetches the GetCapabilities document of a WFS service which contains information about the * list of layers in the service and the available operations. * * @param url - The URL to the WFS endpoint. * @param options * @returns The WFS Capabilities for the service. * @example * const capabilities = await wfsUtils.getCapabilities(url); * const layerInfo = await wfsUtils.getWFSLayerInfo(capabilities, "layer"); * * const layer = WFSLayer.fromWFSLayerInfo(layerInfo); * * // Same as * const layer = WFSLayer({ * url, * name: "layer" * }); */ export function getCapabilities(url: string, options?: GetCapabilitiesOptions): Promise<WFSCapabilities>; /** * WFS service information about the available layers and operations. * * @see [getCapabilities()](https://developers.arcgis.com/javascript/latest/references/core/layers/ogc/wfsUtils/#getCapabilities) * @see [getWFSLayerInfo()](https://developers.arcgis.com/javascript/latest/references/core/layers/ogc/wfsUtils/#getWFSLayerInfo) */ export interface WFSCapabilities { /** Information about the operations needed to consume the WFS service. */ readonly operations: WFSOperations; /** An array of featureTypes (or layers) available in the WFS service. */ readonly featureTypes: Array<WFSFeatureType>; } /** * Information about some operations of the WFS service. * * @see [WFSCapabilities](https://developers.arcgis.com/javascript/latest/references/core/layers/ogc/wfsUtils/#WFSCapabilities) */ export interface WFSOperations { GetCapabilities: WFSOperationsGetCapabilities; DescribeFeatureType: WFSOperationsDescribeFeatureType; GetFeature: WFSOperationsGetFeature; } export interface WFSOperationsGetCapabilities { /** The URL to the GetCapabilities endpoint. */ url: string; } export interface WFSOperationsDescribeFeatureType { /** The URL to the DescribeFeatureType endpoint. */ url: string; } export interface WFSOperationsGetFeature { /** The URL to the GetFeature endpoint. */ url: string; /** Value of the geojson-like output format parameter (if any) to send with the GetFeature call. */ outputFormat: string | null; /** Indicates if the GetFeature request supports pagination. */ supportsPagination: boolean; } /** * Provides information about an individual feature type, or layer, found in the WFS service. * * @see [WFSCapabilities](https://developers.arcgis.com/javascript/latest/references/core/layers/ogc/wfsUtils/#WFSCapabilities) */ export interface WFSFeatureType { /** The type name of the featureType. This will be of the format `namespacePrefix:name`. */ typeName: `${string}:${string}`; /** The name of the featureType. */ name: string; /** The title of the featureType. */ title: string; /** The description of the featureType. */ description: string; /** The extent of the features. */ extent?: Extent | null; /** The prefix of the namespace. */ namespacePrefix: string; /** The namespaceUri of the featureType. */ namespaceUri: string; /** the default spatialReference wkid used when not explicitely specified in the GetFeature call. */ defaultSpatialReference: number; /** An array of spatialReference wkids that are supported on the featureType. */ supportedSpatialReferences: number[]; } export interface WFSLayerInfoOptions extends AbortOptions { /** The desired spatial reference for the layer. By default will use the default spatial reference of the feature type. */ spatialReference?: SpatialReference; /** A list of key-value pairs of parameters to append to the url. */ customParameters?: CustomParameters | null; } /** * The layer info from the WFS service. * * @see [getWFSLayerInfo()](https://developers.arcgis.com/javascript/latest/references/core/layers/ogc/wfsUtils/#getWFSLayerInfo) */ export interface WFSLayerInfo { /** The URL to the WFS service. */ url: string; /** The name of the layer in the WFS service to display. */ name: string; /** The namespace URI for the layer name. */ namespaceUri: string; /** The fields on the layer. */ fields: Field[]; /** The geometry type of the features in the layer. */ geometryType: FeatureGeometryType; /** The field containing the object ID. */ objectIdField: string; /** The spatial reference of the layer. */ spatialReference: SpatialReference; /** The extent of the layer. */ extent?: Extent | null; /** Determines whether the X and Y coordinates should be swapped. */ swapXY: boolean; wfsCapabilities: WFSCapabilities; /** The custom parameters applied to the layer. */ customParameters?: CustomParameters | null; } /** * Returns the [WFSLayerInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/ogc/wfsUtils/#WFSLayerInfo) from the capabilities of the WFS service. Can be used in conjunction with getCapabilities * * @param capabilities - The capabilities of the WFS service. * @param name - The type name to get information for. If not specified, the first layer of the service is chosen. * @param namespaceUri - The namespace URI of the type name. If not specified, the first namespace found for the `name` is chosen. * @param options - An object specifying additional options. See the * object specification table below for the required properties of this object. * @returns The layer info that can be used to create a [WFSLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/WFSLayer/) * @example * const capabilities = await wfsUtils.getCapabilities(url); * const layerInfo = await wfsUtils.getWFSLayerInfo(capabilities, "layer"); * * const layer = WFSLayer.fromWFSLayerInfo(layerInfo); * * // Same as * const layer = WFSLayer({ * url, * name: "layer" * }); */ export function getWFSLayerInfo(capabilities: WFSCapabilities, name?: string | null, namespaceUri?: string | null, options?: WFSLayerInfoOptions): Promise<WFSLayerInfo>;