WfsFeatureTable

A table of features that typically represents real-world objects from an OGC Web Feature Service (WFS) dataset. You can create WFS feature table using the URL of an OGC Web Feature Service and a specified layer name. Alternatively, you may connect to a WfsService, obtain its metadata from WfsService.serviceInfo, and discover its available layers using WfsServiceInfo.layerInfos. You can then create a WfsFeatureTable from an individual layer using WfsFeatureTable.WfsFeatureTable(WfsLayerInfo).

When you have created a WFS Feature table, features are not automatically requested. Instead, you must set the WFS Feature table request mode to FeatureRequestMode.ManualCache and then populate the table using WfsFeatureTable.populateFromService(QueryParameters, Boolean, MutableListImpl), for example.

You can visualize features from a WFS feature table using a FeatureLayer but the table does not support editing. See the OGC Web Feature Service standard[https://www.ogc.org/standard/wfs/] for more information.

Since

200.1.0

Constructors

Link copied to clipboard
constructor(url: String, tableName: String)

Creates a WFS feature table from the URL of a WFS Service and a table name.

constructor(layerInfo: WfsLayerInfo)

Creates a WFS feature table from WFS layer information.

Properties

Link copied to clipboard

The axis order, which defines how coordinates are interpreted (x,y or y,x). Some WFS services return coordinates in (x,y) order, while others use (y,x) order. Setting this property to OgcAxisOrder.Swap results in all coordinates in geometries being swapped from what was sent by the server. Setting to OgcAxisOrder.NoSwap will cause coordinates to be interpreted as-is. The axis order can be changed on an already-loaded feature table, but the change will only affect future calls to WfsFeatureTable.populateFromService(QueryParameters, Boolean, MutableListImpl). Features that are already in the table will not be modified/swapped.

Link copied to clipboard

The mode defining when features are requested from the service. You must set the feature request mode to FeatureRequestMode.ManualCache before attempting to populate the table using WfsFeatureTable.populateFromService(QueryParameters, Boolean, MutableListImpl).

Link copied to clipboard

The filter axis order, which determines how coordinates are ordered when sent to the server as part of spatial queries. Some WFS services expect coordinates to be sent in (x,y) order, while others use (y,x). Use OgcAxisOrder.Swap to send coordinates in (y,x) order and OGCAxisOrder.noSwap to use (x,y) order.

Link copied to clipboard

Metadata describing the WFS layer, such as name and description.

Link copied to clipboard

The preferred spatial reference for the WFS feature table. If the service does not provide a preferred spatial reference, or you have not set it explicitly, then the table will fail to load. The preferred spatial reference cannot be changed once the table is loaded.

Link copied to clipboard
val url: String

The URL of the WFS feature table.

Inherited properties

Link copied to clipboard

A user-friendly name that can be displayed in the UI (for example, in a Table of Contents). If the table is displayed with a FeatureLayer, the FeatureTable.displayName is used as the FeatureLayer.name.

Link copied to clipboard

The geographic extent of features within the table. This is calculated differently for specific types and modes of feature tables:

Link copied to clipboard
open val fields: List<Field>

The collection of Field objects representing the fields of the feature table.

Link copied to clipboard

The type of geometry of the features stored in this table. If FeatureTable.hasGeometry is false, then the geometry type is GeometryType.Unknown.

Link copied to clipboard

True if the feature table supports geographic features, false otherwise.

Link copied to clipboard

True if the feature table supports geometries with M values, false otherwise.

Link copied to clipboard

True if the feature table supports geometries with Z values, false otherwise.

Link copied to clipboard

True if this feature table is editable, false otherwise. Underlying file permissions (for subclasses such as ShapefileFeatureTable and GeodatabaseFeatureTable) can be changed while the feature table is open. In these cases the value of this property may not be accurate.

Link copied to clipboard
open override var isPopupEnabled: Boolean

A flag indicating whether the PopupDefinition defined on the PopupSource is enable / disable. Will return false if an error occurs.

Link copied to clipboard
val layer: Layer?

The layer that displays this table, if any. The Layer type depends on how the feature table is created. For example, a Layer will be an AnnotationLayer if the FeatureTable is created from a table that supports annotation. See Layer for more information about the supported layer types.

Link copied to clipboard
open override val loadStatus: StateFlow<LoadStatus>

The load status.

Link copied to clipboard

The number of features in the table. If all the features are stored in the local table, for example with a GeodatabaseFeatureTable or a ShapefileFeatureTable, then the FeatureTable.numberOfFeatures will return the full number of features.

Link copied to clipboard
open override var popupDefinition: PopupDefinition?

The pop-up definition. The PopupDefinition associated with the popup source. A null if an error occurs or if the popup source is not associated with a pop-up definition.

Link copied to clipboard

The spatial reference of the table. A spatial reference defines how the coordinates of a feature's Geometry correspond to locations in the real world. For more information, see the SpatialReference class or the Spatial references[https://developers.arcgis.com/documentation/spatial-references/] documentation.

Link copied to clipboard

The name of the table in the source dataset.

Functions

Link copied to clipboard
suspend fun populateFromService(xmlRequest: String, clearCache: Boolean): Result<FeatureQueryResult>

Populates the table using an XML query. The schema of the query result must match or be a subset of the schema of the table. The XML query must be made against the same feature type represented by the WFS feature table.

suspend fun populateFromService(parameters: QueryParameters?, clearCache: Boolean, outFields: Iterable<String>): Result<FeatureQueryResult>

Populates the WFS feature table using the query parameters. Use the default (empty) QueryParameters to get all features from the service. If you specify a null or an empty collection for outfields, then the default set of outfields are used.

Inherited functions

Link copied to clipboard
suspend fun addFeature(feature: Feature): Result<Unit>

Adds a feature to the table. Adding a feature that contains a Geometry causes the geometry to become simplified. This may change a single part geometry to a multipart geometry, or round off X, Y, Z, and M coordinate values that are above the resolution set by the SpatialReference.

Link copied to clipboard
suspend fun addFeatures(features: Iterable<Feature>): Result<Unit>

Adds a collection of features to the table.

Link copied to clipboard

Determines whether you can add new features to the table. Although this method may state that the table allows new features to be added, the application may not be licensed to permit this. For example, a user cannot add features to a secured feature table if the application is licensed at the Lite level (LicenseLevel.Lite).

Link copied to clipboard
open override fun cancelLoad()

Cancels loading metadata for the Loadable object.

Link copied to clipboard
fun canDelete(feature: Feature): Boolean

Determines whether you can delete the feature from the table. Although this method may state that the table allows the feature to be deleted, the application may not be licensed to permit this. For example, a user cannot delete features from a secured feature table if the application is licensed at the Lite level (LicenseLevel.Lite).

Link copied to clipboard

Determines whether you can edit the geometry field in a table. Although this method may state that the table allows geometry fields to be edited, the application may not be licensed to permit this. For example, a user cannot update geometry in a secured feature table if the application is licensed at the Lite level (LicenseLevel.Lite).

Link copied to clipboard
fun canUpdate(feature: Feature): Boolean

Determines whether you can update the feature in the table. Although this method may state that the table allows the feature to be updated, the application may not be licensed to permit this. For example, a user cannot update features in a secured feature table if the application is licensed at the Lite level (LicenseLevel.Lite).

Link copied to clipboard

Creates a new empty feature. The new feature is only available in memory at this point. Execute FeatureTable.addFeature(Feature) to commit the new Feature to the table.

fun createFeature(attributes: Map<String, Any?>, geometry: Geometry?): Feature

Creates a new feature with the provided attribute values and, optionally, geometry. The new feature is only available in memory at this point. Execute FeatureTable.addFeature(Feature) to commit the new Feature to the table.

Link copied to clipboard
suspend fun deleteFeature(feature: Feature): Result<Unit>

Deletes a feature from the table. Deleting a feature from a GeodatabaseFeatureTable in a stand-alone mobile geodatabase created with ArcGIS Pro is not supported when the table participates in a controller dataset, such as a utility network or parcel fabric. Use FeatureTable.canDelete(Feature) to determine if this operation is allowed.

Link copied to clipboard
suspend fun deleteFeatures(features: Iterable<Feature>): Result<Unit>

Deletes a collection of features from the table.

Link copied to clipboard
fun getField(fieldName: String): Field?

Retrieves the field with the given fieldName.

Link copied to clipboard
open suspend override fun load(): Result<Unit>

Loads the metadata for the object.

Link copied to clipboard
suspend fun queryExtent(queryParameters: QueryParameters): Result<Envelope>

Determines the minimum bounding envelope that contains features satisfying the provided query parameters. If no features meet the query criteria, an empty envelope is returned.

Link copied to clipboard
suspend fun queryFeatureCount(queryParameters: QueryParameters): Result<Long>

Determines the count of features that satisfy the provided query parameters.

Link copied to clipboard

Submits a query against the table.

Link copied to clipboard
suspend fun queryStatistics(statisticsQueryParameters: StatisticsQueryParameters): Result<StatisticsQueryResult>

Calculates values for the requested statistics. Statistics query parameters may also define fields on which results are grouped or sorted.

Link copied to clipboard
open suspend override fun retryLoad(): Result<Unit>

Loads or retries loading metadata for the object.

Link copied to clipboard
suspend fun updateFeature(feature: Feature): Result<Unit>

Updates a feature in the table. If you update a feature that contains a Geometry, the geometry becomes simplified. This may change a single part geometry to a multipart geometry, or round X, Y, Z, and M coordinate values that are above the resolution set by the SpatialReference.

Link copied to clipboard
suspend fun updateFeatures(features: Iterable<Feature>): Result<Unit>

Updates a collection of features in the table.