Summary
FeatureSet objects are a lightweight representation of a feature class. They are a special 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.
Discussion
Note:
If you're loading a feature class into a new FeatureSet and modifying the FeatureSet with a geoprocessing tool that modifies the input such as Calculate Field or a function such as UpdateCursor, the original feature class will also be modified.
Syntax
FeatureSet ({table})
Parameter | Explanation | Data Type |
table | 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, or an Esri (FeatureSet) JSON string. An Esri JSON (.json) is a standard for encoding feature (geometry and attribute) data as a JSON object. | String |
Properties
Property | Explanation | Data Type |
JSON (Read Only) | Returns an Esri JSON representation of the geometry as a string. Tip:The returned string can be converted to a dictionary using the json module's loads function. | String |
Method Overview
Method | Explanation |
load (table_path, {where_clause}, {time_filter}, {renderer}, {is_renderer}) | Imports a table into the FeatureSet object. |
save (table_path) | Export to a table. |
Methods
load (table_path, {where_clause}, {time_filter}, {renderer}, {is_renderer})
Parameter | Explanation | Data Type |
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, or an Esri JSON string. | 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. (The default value is 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". (The default value is 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. (The default value is 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. (The default value is None) | Boolean |
The optional arguments are positional only; they cannot be passed by named arguments. For example, if the intent is to only specify symbology, the optional arguments where_clause and time_filter must be skipped using None.
save (table_path)
Parameter | Explanation | Data Type |
table_path | The output table to be created. | String |
Code sample
Load data into a feature class and insert into a FeatureSet.
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_set.load(feature_class)
results = arcpy.BufferPoints_servertools(feature_set)
Load a subset of data from ArcGIS Living Atlas of the World into a FeatureSet 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 empty FeatureSet
feature_set = arcpy.FeatureSet()
# Load data into FeatureSet with query
feature_set.load(in_data, query, None, renderer, True)
Create a FeatureSet from an Esri JSON string.
import arcpy
# Set data
data_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": "Jhh"
}
}
]
}'''
# Create FeatureSet from Esri JSON
feature_set = arcpy.FeatureSet(data_json)