UNPKG

@arcgis/core

Version:

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

717 lines (715 loc) 42.7 kB
import type PopupTemplate from "../PopupTemplate.js"; import type Collection from "../core/Collection.js"; import type Extent from "../geometry/Extent.js"; import type SpatialReference from "../geometry/SpatialReference.js"; import type Layer from "./Layer.js"; import type Field from "./support/Field.js"; import type FieldsIndex from "./support/FieldsIndex.js"; import type LabelClass from "./support/LabelClass.js"; import type FeatureSet from "../rest/support/FeatureSet.js"; import type { ClonableMixin } from "../core/Clonable.js"; import type { MultiOriginJSONSupportMixin } from "../core/MultiOriginJSONSupport.js"; import type { AbortOptions } from "../core/promiseUtils.js"; import type { FeatureLayerCapabilities, FieldDomainOptions } from "./types.js"; import type { BlendLayer, BlendLayerProperties } from "./mixins/BlendLayer.js"; import type { CustomParametersMixin, CustomParametersMixinProperties } from "./mixins/CustomParametersMixin.js"; import type { FeatureEffectLayer, FeatureEffectLayerProperties } from "./mixins/FeatureEffectLayer.js"; import type { FeatureReductionLayer, FeatureReductionLayerProperties } from "./mixins/FeatureReductionLayer.js"; import type { OperationalLayer, OperationalLayerProperties } from "./mixins/OperationalLayer.js"; import type { OrderedLayer, OrderedLayerProperties } from "./mixins/OrderedLayer.js"; import type { ScaleRangeLayer, ScaleRangeLayerProperties } from "./mixins/ScaleRangeLayer.js"; import type { ParquetGeometryType } from "./support/parquetUtils.js"; import type { DomainUnion, ParquetGeometryEncodingUnion } from "./support/types.js"; import type { RendererUnion } from "../renderers/types.js"; import type { QueryProperties } from "../rest/support/Query.js"; import type { CreatePopupTemplateOptions } from "../support/popupUtils.js"; import type { ObjectId } from "../views/types.js"; import type { FieldProperties } from "./support/Field.js"; import type { ParquetGeometryEncodingLocationProperties } from "./support/ParquetGeometryEncodingLocation.js"; import type { ParquetGeometryEncodingWkbProperties } from "./support/ParquetGeometryEncodingWkb.js"; import type { ExtentProperties } from "../geometry/Extent.js"; import type { LabelClassProperties } from "./support/LabelClass.js"; import type { PopupTemplateProperties } from "../PopupTemplate.js"; import type { HeatmapRendererProperties } from "../renderers/HeatmapRenderer.js"; import type { PieChartRendererProperties } from "../renderers/PieChartRenderer.js"; import type { DictionaryRendererProperties } from "../renderers/DictionaryRenderer.js"; import type { DotDensityRendererProperties } from "../renderers/DotDensityRenderer.js"; import type { UniqueValueRendererProperties } from "../renderers/UniqueValueRenderer.js"; import type { ClassBreaksRendererProperties } from "../renderers/ClassBreaksRenderer.js"; import type { SimpleRendererProperties } from "../renderers/SimpleRenderer.js"; import type { SpatialReferenceProperties } from "../geometry/SpatialReference.js"; import type { ReadonlyArrayOrCollection } from "../core/Collection.js"; import type { LayerProperties } from "./Layer.js"; export interface ParquetLayerProperties extends LayerProperties, CustomParametersMixinProperties, OperationalLayerProperties, ScaleRangeLayerProperties, OrderedLayerProperties, BlendLayerProperties, FeatureEffectLayerProperties, FeatureReductionLayerProperties, Partial<Pick<ParquetLayer, "copyright" | "geometryType" | "labelsVisible" | "legendEnabled" | "outFields" | "popupEnabled">> { /** * An array of fields in the layer. * * > [!WARNING] * > * > **Notes** * > * > The ParquetLayer does not support the `date` and `group type` field types. * > For details on how `big-integer` fields are handled, refer to the [big-integer](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Field/#type) documentation. * * @example * // define each field's schema * let fields = [ * new Field({ * "name": "ObjectID", * "alias": "ObjectID", * "type": "oid" * }), new Field({ * "name": "description", * "alias": "Description", * "type": "string" * }), new Field ({ * "name": "title", * "alias": "Title", * "type": "string" * }) * ]; */ fields?: FieldProperties[]; /** * The full extent of the layer. * * @example * // Once the layer loads, set the view's extent to the layer's full extent * layer.when(function(){ * view.extent = layer.fullExtent; * }); */ fullExtent?: ExtentProperties | null; /** * The encoding format used to store geometries in the Parquet files. * The geometry encoding is automatically detected if the file contains Geoparquet metadata. If not, the layer will attempt to locate * latitude and longitude columns and display those as the geometry. Otherwise, the encoding must be specified manually. * * ParquetLayer supports two geometry encoding types: * * [ParquetGeometryEncodingLocation](https://developers.arcgis.com/javascript/latest/references/core/layers/support/ParquetGeometryEncodingLocation/): Used when geometry is stored as coordinate fields. * If the file contains coordinate fields named `"lng/lat"`, `"lon/lat"`, `"long/lat"`, `"longitude/latitude"`, `"x/y"`, `"xcenter/ycenter"`, `"longitude83/latitude83"`, * `"longdecdeg/latdecdeg"`, `"point-x/point-y"`, these are detected automatically. The field names are case-insensitive. * For other coordinate field names, set the layer’s [geometryEncoding](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#geometryEncoding) to an instance of `ParquetGeometryEncodingLocation` * with the coordinate fields specified, and set the layer’s [spatialReference](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#spatialReference) and [geometryType](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#geometryType) properties accordingly. * * * [ParquetGeometryEncodingWkb](https://developers.arcgis.com/javascript/latest/references/core/layers/support/ParquetGeometryEncodingWkb/): Used when geometry is stored as a WKB-encoded column. * Set the layer's [geometryEncoding](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#geometryEncoding) to an instance of `ParquetGeometryEncodingWkb` with * the geometry column name, and set the layer’s [spatialReference](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#spatialReference) (WGS84 or WebMercator) and [geometryType](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#geometryType) properties accordingly. * * @since 4.34 * @example * // ParquetLayer with WKB geometry encoding * const layer = new ParquetLayer({ * urls: ["https://example.com/path/to/parquetfile.parquet"], * geometryEncoding: new ParquetGeometryEncodingWkb({ * field: "polyGeometry" * }), // WKB geometry column * spatialReference: { wkid: 4326 }, // WGS84 * geometryType: "polygon" * }); */ geometryEncoding?: ((ParquetGeometryEncodingWkbProperties & { type: "wkb" }) | (ParquetGeometryEncodingLocationProperties & { type: "location" })) | null; /** * The label definition for this layer, specified as an array of [LabelClass](https://developers.arcgis.com/javascript/latest/references/core/layers/support/LabelClass/). Use this property to specify * labeling properties for the layer. * * Multiple Label classes with different `where` clauses can be used to define several labels with varying styles on the same feature. * Likewise, multiple label classes may be used to label different types of features (for example blue labels * for lakes and green labels for parks). * * @see [labelsVisible](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#labelsVisible) * @example * const labels = new LabelClass({ * labelExpressionInfo: { expression: "$feature.NAME" }, * symbol: { * type: "text", // autocasts as new TextSymbol() * color: "black", * haloSize: 1, * haloColor: "white" * } * }); * * layer.labelingInfo = [ labels ]; */ labelingInfo?: LabelClassProperties[] | null; /** * The popup template for the layer. When set on the layer, the `popupTemplate` * allows users to access attributes and display their values in the * view's Popup when a feature is selected using text and/or charts. See the [PopupTemplate sample](https://developers.arcgis.com/javascript/latest/sample-code/intro-popuptemplate/) * for an example of how [PopupTemplate](https://developers.arcgis.com/javascript/latest/references/core/PopupTemplate/) interacts with a * [FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/). * * A default popup template is automatically used if no `popupTemplate` has been defined when * [Popup.defaultPopupTemplateEnabled](https://developers.arcgis.com/javascript/latest/references/core/widgets/Popup/#defaultPopupTemplateEnabled) is set to `true`. * * > [!WARNING] * > * > **Notes** * > * > The ParquetLayer's [popupTemplate](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#popupTemplate) displays only the attributes of the topmost feature when features overlap. * * @see [createPopupTemplate()](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#createPopupTemplate) * @see [View2D.popup](https://developers.arcgis.com/javascript/latest/references/core/views/View2D/#popup) */ popupTemplate?: PopupTemplateProperties | null; /** * The renderer assigned to the layer. The renderer defines how to * visualize each feature in the layer. Depending on the renderer type, * features may be visualized with the same symbol, or with varying symbols * based on the values of provided attribute fields or functions. If not specified, * a default renderer will be generated based on the geometry type. * * @see [Styles and data visualization](https://developers.arcgis.com/javascript/latest/visualization/) */ renderer?: (((SimpleRendererProperties & { type: "simple" }) | (ClassBreaksRendererProperties & { type: "class-breaks" }) | (UniqueValueRendererProperties & { type: "unique-value" }) | (DotDensityRendererProperties & { type: "dot-density" }) | (DictionaryRendererProperties & { type: "dictionary" }) | (PieChartRendererProperties & { type: "pie-chart" })) | (HeatmapRendererProperties & { type: "heatmap" })) | null; /** * The spatial reference of the layer. The default value is WGS84. * * > [!WARNING] * > * > **Known Limitations** * > * > The ParquetLayer only supports geographic (WGS84) and Web Mercator spatial references. * * @default SpatialReference.WGS84 * @see [SpatialReference.WGS84](https://developers.arcgis.com/javascript/latest/references/core/geometry/SpatialReference/#WGS84) */ spatialReference?: SpatialReferenceProperties; /** * Collection of urls for Parquet files. * * @example * // create parquet layer from multiple Parquet files * const layer = new ParquetLayer({ * urls: [ * "https://example.com/path/to/parquetfile1.parquet", * "https://example.com/path/to/parquetfile2.parquet" * ] * }); */ urls?: ReadonlyArrayOrCollection<string>; } /** * The ParquetLayer enables visualization of [Parquet files](https://parquet.apache.org/docs/) on a map. * Parquet is a columnar storage format optimized for efficiently handling big data and distributed environments. * Its columnar structure, compression capabilities, and schema support make it ideal for analytics and query-heavy workloads. * * The ParquetLayer can represent either [spatial](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#geometryType) data (with geographic features) or non-spatial data as a [table](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#isTable). * If the Parquet file contains spatial data, then rows can be rendered as [features](https://developers.arcgis.com/javascript/latest/references/core/Graphic/) with [geometries](https://developers.arcgis.com/javascript/latest/references/core/geometry/Geometry/) * in a [Map component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-map/) or a [MapView](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/). * If not, they can still be shown in a table. A non-spatial layer is a [table](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#isTable) which does not have * a spatial column representing geographic features. * * Parquet files must use either GZIP or Snappy [compression](https://parquet.apache.org/docs/file-format/data-pages/compression/), or no compression. Files using other compression formats * are not supported. * Geometry encoding must be specified when it cannot be automatically inferred. For details on supported formats and how to configure encoding manually * or rely on auto-detection, see the [geometryEncoding](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#geometryEncoding) property. * * ParquetLayers may be created by either: * ###### Specifying the [urls](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#urls) of the Parquet files. * * The ParquetLayer can be loaded by setting its [urls](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#urls) property to the urls of the Parquet files. * The following snippet shows how to add a new ParquetLayer to the map. * * ```js * // Add the Parquet files from given urls as a parquet layer. * const layer = new ParquetLayer({ * urls: [ * "url-to-parquet-file1.parquet", * "url-to-parquet-file2.parquet" * ] * }); * map.add(layer); * ``` * * ###### Using the [getParquetLayerInfo()](https://developers.arcgis.com/javascript/latest/references/core/layers/support/parquetUtils/#getParquetLayerInfo) * * Use the [getParquetLayerInfo()](https://developers.arcgis.com/javascript/latest/references/core/layers/support/parquetUtils/#getParquetLayerInfo) method to * retrieve information needed to create a parquet layer from the first Parquet file in the specified URLs array. * The following snippet shows how to create a new ParquetLayer using the retrieved information returned from the `getParquetLayerInfo()`. * * ```js * // get parquet layer info from the first Parquet file in the urls array * const urls = ["url-to-your-parquet-file.parquet", "url-to-your-parquet-file2.parquet"]; * const info = await parquetUtils.getParquetLayerInfo(urls); * const layer = new ParquetLayer(info); * * // create a renderer based on the geometry type * if (info.geometryType === "polygon") { * const renderer = new SimpleRenderer({ * symbol: { * type: "simple-fill", * color: [227, 139, 79, 0.8], * outline: { * color: [255, 255, 255], * width: 1 * } * } * }); * layer.renderer = renderer; * } * // add the layer to the map * map.add(layer); * ``` * * > [!WARNING] * > * > **Known Limitations** * > * > The ParquetLayer is supported in a [Map component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-map/) or a [MapView](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/). * > The ParquetLayer only supports geographic (WGS84) and Web Mercator spatial references. * > Time and date fields may be downgraded to numeric values. * > The [ParquetLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/) does not support the [Query.outStatistics](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#outStatistics), * > [Query.orderByFields](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#orderByFields), or [Query.returnDistinctValues](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#returnDistinctValues) * > query parameters when the layer has more than 20,000 features. * * @beta * @since 4.33 * @see [Sample - Intro to ParquetLayer](https://developers.arcgis.com/javascript/latest/sample-code/layers-parquetlayer/) * @see [ParquetLayerView](https://developers.arcgis.com/javascript/latest/references/core/views/layers/ParquetLayerView/) * @see [Apache Parquet documentation](https://parquet.apache.org/docs/) * @see [Geoparquet documentation](https://geoparquet.org/) */ export default class ParquetLayer extends ParquetLayerSuperclass { /** * @example * const layer = new ParquetLayer({ * urls: [ * "https://example.com/path/to/parquetfile1.parquet", * "https://example.com/path/to/parquetfile2.parquet" * ] * }); * mapElement.map.add(layer); // adds the layer to the map */ constructor(properties?: ParquetLayerProperties); /** Describes the layer's supported capabilities. */ get capabilities(): FeatureLayerCapabilities | null | undefined; /** Copyright information for the layer. */ accessor copyright: string | null | undefined; /** * An array of fields in the layer. * * > [!WARNING] * > * > **Notes** * > * > The ParquetLayer does not support the `date` and `group type` field types. * > For details on how `big-integer` fields are handled, refer to the [big-integer](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Field/#type) documentation. * * @example * // define each field's schema * let fields = [ * new Field({ * "name": "ObjectID", * "alias": "ObjectID", * "type": "oid" * }), new Field({ * "name": "description", * "alias": "Description", * "type": "string" * }), new Field ({ * "name": "title", * "alias": "Title", * "type": "string" * }) * ]; */ get fields(): Field[]; set fields(value: FieldProperties[]); /** * A convenient property that can be used to make case-insensitive lookups for a field by name. * It can also provide a list of the [date fields](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FieldsIndex/#dateFields) in a layer. * * @example * // lookup a field by name. name is case-insensitive * const field = layer.fieldsIndex.get("SoMeFiEld"); * * if (field) { * console.log(field.name); // SomeField * } */ get fieldsIndex(): FieldsIndex<Field>; /** * The full extent of the layer. * * @example * // Once the layer loads, set the view's extent to the layer's full extent * layer.when(function(){ * view.extent = layer.fullExtent; * }); */ get fullExtent(): Extent | null | undefined; set fullExtent(value: ExtentProperties | null | undefined); /** * The encoding format used to store geometries in the Parquet files. * The geometry encoding is automatically detected if the file contains Geoparquet metadata. If not, the layer will attempt to locate * latitude and longitude columns and display those as the geometry. Otherwise, the encoding must be specified manually. * * ParquetLayer supports two geometry encoding types: * * [ParquetGeometryEncodingLocation](https://developers.arcgis.com/javascript/latest/references/core/layers/support/ParquetGeometryEncodingLocation/): Used when geometry is stored as coordinate fields. * If the file contains coordinate fields named `"lng/lat"`, `"lon/lat"`, `"long/lat"`, `"longitude/latitude"`, `"x/y"`, `"xcenter/ycenter"`, `"longitude83/latitude83"`, * `"longdecdeg/latdecdeg"`, `"point-x/point-y"`, these are detected automatically. The field names are case-insensitive. * For other coordinate field names, set the layer’s [geometryEncoding](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#geometryEncoding) to an instance of `ParquetGeometryEncodingLocation` * with the coordinate fields specified, and set the layer’s [spatialReference](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#spatialReference) and [geometryType](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#geometryType) properties accordingly. * * * [ParquetGeometryEncodingWkb](https://developers.arcgis.com/javascript/latest/references/core/layers/support/ParquetGeometryEncodingWkb/): Used when geometry is stored as a WKB-encoded column. * Set the layer's [geometryEncoding](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#geometryEncoding) to an instance of `ParquetGeometryEncodingWkb` with * the geometry column name, and set the layer’s [spatialReference](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#spatialReference) (WGS84 or WebMercator) and [geometryType](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#geometryType) properties accordingly. * * @since 4.34 * @example * // ParquetLayer with WKB geometry encoding * const layer = new ParquetLayer({ * urls: ["https://example.com/path/to/parquetfile.parquet"], * geometryEncoding: new ParquetGeometryEncodingWkb({ * field: "polyGeometry" * }), // WKB geometry column * spatialReference: { wkid: 4326 }, // WGS84 * geometryType: "polygon" * }); */ get geometryEncoding(): ParquetGeometryEncodingUnion | null | undefined; set geometryEncoding(value: ((ParquetGeometryEncodingWkbProperties & { type: "wkb" }) | (ParquetGeometryEncodingLocationProperties & { type: "location" })) | null | undefined); /** The geometry type of features in the layer. All features must be of the same type. */ accessor geometryType: ParquetGeometryType | null | undefined; /** * Returns `true` if the layer is loaded from a Parquet file without spatial data. * Non-spatial Parquet files do not have geometry object that represent geographic features. * The [geometryType](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#geometryType) of the layer will be `null` if the `isTable` is `true`. * * A non-spatial table instance can be created from the [urls](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#urls) and the table must be loaded by calling [load()](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#load) method. * * @default false * @since 4.34 * @see [Map.tables](https://developers.arcgis.com/javascript/latest/references/core/Map/#tables) * @see [WebMap.tables](https://developers.arcgis.com/javascript/latest/references/core/WebMap/#tables) * @see [Map.allTables](https://developers.arcgis.com/javascript/latest/references/core/Map/#allTables) * @see [WebMap.allTables](https://developers.arcgis.com/javascript/latest/references/core/WebMap/#allTables) */ get isTable(): boolean; /** * The label definition for this layer, specified as an array of [LabelClass](https://developers.arcgis.com/javascript/latest/references/core/layers/support/LabelClass/). Use this property to specify * labeling properties for the layer. * * Multiple Label classes with different `where` clauses can be used to define several labels with varying styles on the same feature. * Likewise, multiple label classes may be used to label different types of features (for example blue labels * for lakes and green labels for parks). * * @see [labelsVisible](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#labelsVisible) * @example * const labels = new LabelClass({ * labelExpressionInfo: { expression: "$feature.NAME" }, * symbol: { * type: "text", // autocasts as new TextSymbol() * color: "black", * haloSize: 1, * haloColor: "white" * } * }); * * layer.labelingInfo = [ labels ]; */ get labelingInfo(): LabelClass[] | null | undefined; set labelingInfo(value: LabelClassProperties[] | null | undefined); /** * Indicates whether to display labels for this layer. If `true`, labels will * appear as defined in the [labelingInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#labelingInfo) property. * * @default true */ accessor labelsVisible: boolean; /** * Indicates whether the layer will be included in the legend. * * @default true */ accessor legendEnabled: boolean; /** * The name of an `oid` [field](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#fields) containing * a unique value or identifier for each feature in the layer. * * @see [fields](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#fields) */ get objectIdField(): string; /** * An array of field names from the service to include with each feature. * To fetch the values from all fields in the layer, use `["*"]`. Fields specified in * `outFields` will be requested alongside with required fields for [rendering](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#renderer), * and [labeling](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#labelingInfo) for the layer. * The required fields and `outFields` are used to populate * [FeatureLikeLayerView.availableFields](https://developers.arcgis.com/javascript/latest/references/core/views/layers/FeatureLikeLayerView/#availableFields). * * @see [FeatureLikeLayerView.availableFields](https://developers.arcgis.com/javascript/latest/references/core/views/layers/FeatureLikeLayerView/#availableFields) * @see [fieldUtils](https://developers.arcgis.com/javascript/latest/references/core/layers/support/fieldUtils/) * @example * // Includes all fields from the Parquet files in the layer * layer.outFields = ["*"]; * @example * // Get the specified fields from the service in the layer * // These fields will be added to ParquetLayerView.availableFields * // along with rendering and labeling fields. * layer.outFields = ["NAME", "POP_2010", "FIPS", "AREA"]; */ accessor outFields: string[] | null | undefined; /** * Indicates whether to display popups when features in the layer are clicked. The layer needs to have a [popupTemplate](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#popupTemplate) to define what * information should be displayed in the popup. Alternatively, a default popup template may be automatically used if * [Popup.defaultPopupTemplateEnabled](https://developers.arcgis.com/javascript/latest/references/core/widgets/Popup/#defaultPopupTemplateEnabled) is set to `true`. * * @default true */ accessor popupEnabled: boolean; /** * The popup template for the layer. When set on the layer, the `popupTemplate` * allows users to access attributes and display their values in the * view's Popup when a feature is selected using text and/or charts. See the [PopupTemplate sample](https://developers.arcgis.com/javascript/latest/sample-code/intro-popuptemplate/) * for an example of how [PopupTemplate](https://developers.arcgis.com/javascript/latest/references/core/PopupTemplate/) interacts with a * [FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/). * * A default popup template is automatically used if no `popupTemplate` has been defined when * [Popup.defaultPopupTemplateEnabled](https://developers.arcgis.com/javascript/latest/references/core/widgets/Popup/#defaultPopupTemplateEnabled) is set to `true`. * * > [!WARNING] * > * > **Notes** * > * > The ParquetLayer's [popupTemplate](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#popupTemplate) displays only the attributes of the topmost feature when features overlap. * * @see [createPopupTemplate()](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#createPopupTemplate) * @see [View2D.popup](https://developers.arcgis.com/javascript/latest/references/core/views/View2D/#popup) */ get popupTemplate(): PopupTemplate | null | undefined; set popupTemplate(value: PopupTemplateProperties | null | undefined); /** * The renderer assigned to the layer. The renderer defines how to * visualize each feature in the layer. Depending on the renderer type, * features may be visualized with the same symbol, or with varying symbols * based on the values of provided attribute fields or functions. If not specified, * a default renderer will be generated based on the geometry type. * * @see [Styles and data visualization](https://developers.arcgis.com/javascript/latest/visualization/) */ get renderer(): RendererUnion | null | undefined; set renderer(value: (((SimpleRendererProperties & { type: "simple" }) | (ClassBreaksRendererProperties & { type: "class-breaks" }) | (UniqueValueRendererProperties & { type: "unique-value" }) | (DotDensityRendererProperties & { type: "dot-density" }) | (DictionaryRendererProperties & { type: "dictionary" }) | (PieChartRendererProperties & { type: "pie-chart" })) | (HeatmapRendererProperties & { type: "heatmap" })) | null | undefined); /** * The spatial reference of the layer. The default value is WGS84. * * > [!WARNING] * > * > **Known Limitations** * > * > The ParquetLayer only supports geographic (WGS84) and Web Mercator spatial references. * * @default SpatialReference.WGS84 * @see [SpatialReference.WGS84](https://developers.arcgis.com/javascript/latest/references/core/geometry/SpatialReference/#WGS84) */ get spatialReference(): SpatialReference; set spatialReference(value: SpatialReferenceProperties); /** The layer type provides a convenient way to check the type of the layer without the need to import specific layer modules. */ get type(): "parquet"; /** * Collection of urls for Parquet files. * * @example * // create parquet layer from multiple Parquet files * const layer = new ParquetLayer({ * urls: [ * "https://example.com/path/to/parquetfile1.parquet", * "https://example.com/path/to/parquetfile2.parquet" * ] * }); */ get urls(): Collection<string>; set urls(value: ReadonlyArrayOrCollection<string>); /** * Creates a popup template for the layer, populated with all the fields of the layer. * * > [!WARNING] * > * > **Notes** * > * > The ParquetLayer's [popupTemplate](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#popupTemplate) displays only the attributes of the topmost feature when features overlap. * * @param options - Options for creating the popup template. * @returns The popup template, or `null` if the layer does not have any fields. */ createPopupTemplate(options?: CreatePopupTemplateOptions): PopupTemplate | null | undefined; /** * Returns the [Field](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Field/) instance for a field name (case-insensitive). * * @param fieldName - Name of the field. * @returns the matching field or `undefined` * @see [fields](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/#fields) */ getField(fieldName: string): Field | null | undefined; /** * Returns the [Domain](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Domain/) associated with the given field name. The domain can be either a * [CodedValueDomain](https://developers.arcgis.com/javascript/latest/references/core/layers/support/CodedValueDomain/) or [RangeDomain](https://developers.arcgis.com/javascript/latest/references/core/layers/support/RangeDomain/). * * @param fieldName - Name of the field. * @param options - An object specifying additional options. See the * object specification table below for the required properties of this object. * @returns The Domain object associated with the given field name for the given feature. */ getFieldDomain(fieldName: string, options?: FieldDomainOptions | null): DomainUnion | null | undefined; /** * Executes a [Query](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/) against the ParquetLayer and returns the [Extent](https://developers.arcgis.com/javascript/latest/references/core/geometry/Extent/) and count of features that satisfy the query. * If no parameters are specified, then the extent and count of all features satisfying the layer's configuration/filters are returned. * * To query count of features available for drawing in the [MapView](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/), you must * use the [ParquetLayerView#queryExtent](https://developers.arcgis.com/javascript/latest/references/core/views/layers/FeatureLikeLayerView/#queryExtent). * * @param query - Specifies the attributes and spatial filter of the query. If no parameters are specified, * then the extent and count of all features satisfying the layer's configuration/filters are returned. * @param options - An object with the following properties. * @returns When resolved, returns the extent and count of the features * that satisfy the input query. See the object specification table below for details. * Property | Type | Description * ---------|------|------------- * count | Number | The number of features that satisfy the input query. * extent | [Extent](https://developers.arcgis.com/javascript/latest/references/core/geometry/Extent/) \| null | The extent of the features that satisfy the query. * @since 4.34 * @example * // Queries for the extent of all features matching the layer's configurations * // e.g. definitionExpression * layer.queryExtent().then((results) => { * // go to the extent of the results satisfying the query * view.goTo(results.extent); * }); * @example * const query = new Query(); * query.where = "region = 'Southern California'"; * * const result = await layer.queryExtent(query); * view.goTo(result.extent); // go to the extent of the results satisfying the query */ queryExtent(query?: QueryProperties | null | undefined, options?: AbortOptions): Promise<{ count: number; extent: Extent | null; }>; /** * Executes a [Query](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/) against the ParquetLayer and returns the number of features that satisfy the query. * If no parameters are specified, the total number of features satisfying the layer's configuration/filters is returned. * * To query count of features available for drawing in the [MapView](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/), you must * use the [ParquetLayerView#queryFeatureCount](https://developers.arcgis.com/javascript/latest/references/core/views/layers/FeatureLikeLayerView/#queryFeatureCount). * * @param query - Specifies the attributes and spatial filter of the query. * If no parameters are specified, the total number of features satisfying the layer's configuration/filters is returned. * @param options - An object with the following properties. * @returns When resolved, returns the number of features that satisfy the query. * @since 4.34 * @example * // Queries for the count of all features matching the layer's configurations * // e.g. definitionExpression * layer.queryFeatureCount().then((numFeatures) =>{ * // prints the total count to the console * console.log(numFeatures); * }); * @example * const query = new Query(); * query.where = "region = 'Southern California'"; * * layer.queryFeatureCount(query).then((numResults) => { * console.log(numResults); // prints the number of results satisfying the query * }); */ queryFeatureCount(query?: QueryProperties | null | undefined, options?: AbortOptions): Promise<number>; /** * Executes a [Query](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/) against the ParquetLayer and returns a * [FeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FeatureSet/) once the promise resolves. * A [FeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FeatureSet/) contains an array of [Graphic](https://developers.arcgis.com/javascript/latest/references/core/Graphic/) features. * * To query features available for drawing in the [MapView](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/), you must * use the [ParquetLayerView#queryFeatures](https://developers.arcgis.com/javascript/latest/references/core/views/layers/FeatureLikeLayerView/#queryFeatures). * * > [!WARNING] * > * > **Known Limitations** * > * > The [ParquetLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/) does not support the [Query.outStatistics](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#outStatistics), * > [Query.orderByFields](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#orderByFields), or [Query.returnDistinctValues](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#returnDistinctValues) * > query parameters when the layer has more than 20,000 features. * > Attribute values used in attribute queries executed against ParquetLayer are case sensitive. * * @param query - Specifies the attributes and spatial * filter of the query. If no parameters are specified, then all features satisfying the layer's configuration/filters are returned. * @param options - An object with the following properties. * @returns When resolved, a [FeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FeatureSet/) containing * an array of features is returned. * @since 4.34 * @see [Sample - Query features from a FeatureLayer](https://developers.arcgis.com/javascript/latest/sample-code/featurelayer-query/) * @see [Query and filter guide](https://developers.arcgis.com/javascript/latest/query-filter/) * @example * // Queries for all the features matching the layer's configurations * // e.g. definitionExpression * layer.queryFeatures().then((results) => { * // prints the array of result graphics to the console * console.log(results.features); * }); * @example * const layer = new ParquetLayer({ * urls: [ * "parquet-file-url1.parquet" * ] * }); * * const query = new Query(); * query.where = "STATE_NAME = 'Washington'"; * query.returnGeometry = true; * query.outFields = [ "CITY_NAME" ]; * * layer.queryFeatures(query).then((results) => { * console.log(results.features); // prints the array of features to the console * }); * @example * // Get a query object for the layer's current configuration * const queryParams = layer.createQuery(); * // set a geometry for filtering features by a region of interest * queryParams.geometry = extentForRegionOfInterest; * // Add to the layer's current definitionExpression * queryParams.where = queryParams.where + " AND TYPE = 'Extreme'"; * * // query the layer with the modified params object * layer.queryFeatures(queryParams).then((results) => { * // prints the array of result graphics to the console * console.log(results.features); * }); * * layer.queryFeatures(query).then((results) => { * console.log(results.features); // prints the array of features to the console * }); */ queryFeatures(query?: QueryProperties | null | undefined, options?: AbortOptions): Promise<FeatureSet>; /** * Executes a [Query](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/) against the ParquetLayer and returns an * array of Object IDs for features that satisfy the input query. If no parameters are specified, * then the Object IDs of all features satisfying the layer's configuration/filters are returned. * * To query ObjectIDs of features available for drawing in the [MapView](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/), you must * use the [ParquetLayerView#queryObjectIds](https://developers.arcgis.com/javascript/latest/references/core/views/layers/FeatureLikeLayerView/#queryObjectIds). * * @param query - Specifies the attributes and spatial * filter of the query. If no parameters are specified, then the Object IDs of all features * satisfying the layer's configuration/filters are returned. * @param options - An object with the following properties. * @returns When resolved, returns an array of numbers representing the object IDs of the features satisfying the query. * @since 4.34 * @example * // Queries for all the Object IDs of features matching the layer's configurations * // e.g. definitionExpression * layer.queryObjectIds().then((results) =>{ * // prints the array of Object IDs to the console * console.log(results); * }); * @example * const query = new Query({ * where: "SUB_REGION = 'Pacific'" * }); * * const ids = await parquetLayer.queryObjectIds(query); * console.log(ids); // an array of object IDs */ queryObjectIds(query?: QueryProperties | null | undefined, options?: AbortOptions): Promise<ObjectId[]>; } declare const ParquetLayerSuperclass: typeof Layer & typeof ClonableMixin & typeof CustomParametersMixin & typeof MultiOriginJSONSupportMixin & typeof OperationalLayer & typeof ScaleRangeLayer & typeof OrderedLayer & typeof BlendLayer & typeof FeatureEffectLayer & typeof FeatureReductionLayer