FeatureSet

Resumen

FeatureSet objects are a lightweight representation of a feature class. They are a data element that contains not only schema, but also the data. The FeatureSet object is also how feature data is sent and received from the server.

Debate

  • Using the FeatureSet as input to a tool or function that modifies the input, such as Calculate Field or UpdateCursor, will modify the original feature class.
  • Loading a new feature class into a FeatureSet will not overwrite the original feature class. The load method will only change the reference to the feature class, not the original feature class itself.

Sintaxis

 FeatureSet ({table_path}, {where_clause}, {time_filter}, {renderer}, {is_renderer}, {geojson_geometry_type})
ParámetroExplicaciónTipo de datos
table_path

The features to load into the FeatureSet object.

The input can be a catalog path to a feature class, a URL to a hosted feature layer, a JSON with the syntax {"url":"<url>", "serviceToken":"<ServiceToken>"} to load data from external sources that require an access token, an Esri (featureSet) JSON string, or a GeoJSON string.

Esri JSON and GeoJSON are standards for encoding feature (geometry and attribute) data as a JSON (.json) file.

String
where_clause

An SQL expression used to select a subset of records.

For more information on SQL syntax, see SQL reference for query expressions used in ArcGIS.

(El valor predeterminado es None)

String
time_filter

The time instant or the time extent to query. The time filter can only be applied to hosted feature layers, and the layer must be time-enabled.

A time instant should be formatted as a string, for example, "1199145600000" (1 Jan 2008 00:00:00 GMT). A time extent should be a comma-delimited string, for example, "1199145600000, 1230768000000" (1 Jan 2008 00:00:00 GMT to 1 Jan 2009 00:00:00 GMT).

A null value specified for the start time or the end time will represent infinity for the start or the end time, respectively, for example, "null, 1230768000000".

(El valor predeterminado es None)

String
renderer

The output FeatureSet symbology can be set using a string or dictionary representation of either a JSON renderer or a JSON definition object.

Learn more about JSON renderers and JSON definition objects.

(El valor predeterminado es None)

String
is_renderer

Specifies the type of the value used with the renderer argument. Set to True if the value is a renderer object, and False if the value is a definition.

(El valor predeterminado es None)

Boolean
geojson_geometry_type

The geometry type of the GeoJSON file that will be loaded. A single GeoJSON file may contain multiple types of geometry records. Only the records of the specified geometry type will be loaded. By default, this is the geometry type of the first record.

This option is only supported if the table_path value is GeoJSON.

  • POINTTreat GeoJSON Point geometry type as point features.
  • MULTIPOINTTreat GeoJSON MultiPoint geometry type as multipoint features.
  • POLYLINETreat GeoJSON LineString and MultiLineString geometry types as polyline features.
  • POLYGONTreat GeoJSON Polygon and MultiPolygon geometry types as polygon features.

Only the listed GeoJSON geometry types are supported.

(El valor predeterminado es None)

String

Propiedades

PropiedadExplicaciónTipo de datos
JSON
(Sólo lectura)

Returns an Esri JSON representation of the geometry as a string.

Sugerencia:

The returned string can be converted to a dictionary using the json module's loads function.

String
GeoJSON
(Sólo lectura)

Returns a GeoJSON representation of the geometry as a string.

Sugerencia:

The returned string can be converted to a dictionary using the json module's loads function.

String

Descripción general del método

MétodoExplicación
load ({table_path}, {where_clause}, {time_filter}, {renderer}, {is_renderer}, {geojson_geometry_type})

Loads a table into the FeatureSet object.

save (table_path)

Export to a table.

Métodos

load ({table_path}, {where_clause}, {time_filter}, {renderer}, {is_renderer}, {geojson_geometry_type})
ParámetroExplicaciónTipo de datos
table_path

The features to load into the FeatureSet object.

The input can be a catalog path to a feature class, a URL to a hosted feature layer, a JSON with the syntax {"url":"<url>", "serviceToken":"<ServiceToken>"} to load data from external sources that require an access token, an Esri (featureSet) JSON string, or a GeoJSON string.

Esri JSON and GeoJSON are standards for encoding feature (geometry and attribute) data as a JSON (.json) file.

String
where_clause

An SQL expression used to select a subset of records.

For more information on SQL syntax, see SQL reference for query expressions used in ArcGIS.

(El valor predeterminado es None)

String
time_filter

The time instant or the time extent to query. The time filter can only be applied to hosted feature layers, and the layer must be time-enabled.

A time instant should be formatted as a string, for example, "1199145600000" (1 Jan 2008 00:00:00 GMT). A time extent should be a comma-delimited string, for example, "1199145600000, 1230768000000" (1 Jan 2008 00:00:00 GMT to 1 Jan 2009 00:00:00 GMT).

A null value specified for the start time or the end time will represent infinity for the start or the end time, respectively, for example, "null, 1230768000000".

(El valor predeterminado es None)

String
renderer

The output FeatureSet symbology can be set using a string or dictionary representation of either a JSON renderer or a JSON definition object.

Learn more about JSON renderers and JSON definition objects.

(El valor predeterminado es None)

String
is_renderer

Specifies the type of the value used with the renderer argument. Set to True if the value is a renderer object, and False if the value is a definition.

(El valor predeterminado es None)

Boolean
geojson_geometry_type

The geometry type of the GeoJSON file that will be loaded. A single GeoJSON file may contain multiple types of geometry records. Only the records of the specified geometry type will be loaded. By default, this is the geometry type of the first record.

This option is only supported if the table_path value is GeoJSON.

  • POINTTreat GeoJSON Point geometry type as point features.
  • MULTIPOINTTreat GeoJSON MultiPoint geometry type as multipoint features.
  • POLYLINETreat GeoJSON LineString and MultiLineString geometry types as polyline features.
  • POLYGONTreat GeoJSON Polygon and MultiPolygon geometry types as polygon features.

Only the listed GeoJSON geometry types are supported.

(El valor predeterminado es None)

String
save (table_path)
ParámetroExplicaciónTipo de datos
table_path

The output table to be created.

String

Muestra de código

FeatureSet example 1

Load data into a feature class and insert into a FeatureSet object.

import arcpy

arcpy.env.overwriteOutput = True

arcpy.ImportToolbox("http://flame7/arcgis/services;BufferByVal",
                    "servertools")

# List of coordinates
coordinates = [[-117.196717216, 34.046944853],
               [-117.186226483, 34.046498438],
               [-117.179530271, 34.038016569],
               [-117.187454122, 34.039132605],
               [-117.177744614, 34.056765964],
               [-117.156205131, 34.064466609],
               [-117.145491191, 34.068261129],
               [-117.170825195, 34.073618099],
               [-117.186784501, 34.068149525],
               [-117.158325598, 34.03489167]]

# Create an in_memory feature class to initially contain the coordinate pairs
feature_class = arcpy.CreateFeatureclass_management(
    "in_memory", "tempfc", "POINT")[0]

# Open an insert cursor
with arcpy.da.InsertCursor(feature_class, ["SHAPE@XY"]) as cursor:
    # Iterate through list of coordinates and add to cursor
    for (x, y) in coordinates:
        cursor.insertRow([(x, y)])

# Create a FeatureSet object and load in_memory feature class
feature_set = arcpy.FeatureSet(feature_class)

results = arcpy.BufferPoints_servertools(feature_set)
FeatureSet example 2

Load a subset of data from ArcGIS Living Atlas of the World into a FeatureSet object and set the symbology.

import arcpy

# Set data
in_data = "https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/services/USA_States_Generalized/FeatureServer/0"
query = "STATE_NAME = 'California'"
renderer = '''{
    "renderer": {
        "type": "simple",
        "symbol": {
            "type": "esriSFS",
            "style": "esriSFSSolid",
            "color": [
                255,
                0,
                0,
                255
            ],
            "outline": {
                "type": "esriSLS",
                "style": "esriSLSSolid",
                "color": [
                    110,
                    110,
                    110,
                    255
                ],
                "width": 2
            }
        },
        "label": "",
        "description": "",
        "rotationType": "geographic",
        "rotationExpression": ""
    }
}'''

# Create FeatureSet with query and renderer
feature_set = arcpy.FeatureSet(in_data, query, renderer=renderer, is_renderer=True)
FeatureSet example 3

Create a FeatureSet object from an Esri JSON string.

import arcpy

# Set data
esri_json = '''{
 "objectIdFieldName": "objectid",
 "globalIdFieldName": "globalid",
 "geometryType": "esriGeometryPoint",
 "spatialReference": {
  "wkid": 102100,
  "latestWkid": 3857
 },
 "fields": [
  {
   "name": "objectid",
   "alias": "OBJECTID",
   "type": "esriFieldTypeOID"
  },
  {
   "name": "requestid",
   "alias": "Service Request ID",
   "type": "esriFieldTypeString",
   "length": 25
  },
  {
   "name": "requesttype",
   "alias": "Problem",
   "type": "esriFieldTypeString",
   "length": 100
  },
  {
   "name": "comments",
   "alias": "Comments",
   "type": "esriFieldTypeString",
   "length": 255
  }
 ],
 "features": [
  {
   "geometry": {
    "x": -9809161.170230601,
    "y": 5123045.5266209831
   },
   "attributes": {
    "objectid": 246362,
    "requestid": "1",
    "requesttype": "Sidewalk Damage",
    "comments": "Pothole"
   }
  },
  {
   "geometry": {
    "x": -9074857.9234435894,
    "y": 4982391.2604217697
   },
   "attributes": {
    "objectid": 246382,
    "requestid": "2",
    "requesttype": "Pothole",
    "comments": ""
   }
  }
 ]
}'''

# Create FeatureSet from Esri JSON
feature_set = arcpy.FeatureSet(data_json)
FeatureSet example 3

Create a FeatureSet object from an GeoJSON string.

import arcpy

geo_json = '''{
    "crs": {
        "properties": {
            "name": "EPSG: 3857"
        },
        "type": "name"
    },
    "features": [
        {
            "geometry": {
                "coordinates": [
                    -9809161.170230601,
                    5123045.526620984
                ],
                "type": "Point"
            },
            "id": 246362,
            "properties": {
                "comments": "Pothole",
                "objectid": 246362,
                "requestid": "1",
                "requesttype": "Sidewalk Damage"
            },
            "type": "Feature"
        },
        {
            "geometry": {
                "coordinates": [
                    -9074857.923443586,
                    4982391.260421775
                ],
                "type": "Point"
            },
            "id": 246382,
            "properties": {
                "comments": "",
                "objectid": 246382,
                "requestid": "2",
                "requesttype": "Pothole"
            },
            "type": "Feature"
        }
    ],
    "type": "FeatureCollection"
}'''

# Create FeatureSet from Geo JSON
feature_set = arcpy.FeatureSet(geo_json, geojson_geometry_type="POINT")

Temas relacionados