@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
TypeScript
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