描述
FeatureSet 对象是要素类的轻量级表示。它们是一种既包含方案又包含数据的特殊数据元素。而且,FeatureSet 对象也表示通过服务器发送和接收要素数据的方式。
讨论
注:
如果要将某个要素类加载到新的 FeatureSet,并使用可对诸如计算字段等输入或诸如 UpdateCursor 等函数进行修改的地理处理工具来修改 FeatureSet,那么也将对原始要素类进行修改。
语法
FeatureSet ({table})
参数 | 说明 | 数据类型 |
table | 要加载到 FeatureSet 对象中的要素数据。 | String |
属性
属性 | 说明 | 数据类型 |
JSON (只读) | 返回一个字符串形式的几何 Esri JSON 制图表达。 提示:通过 Python 的 json.loads 函数,返回的字符串可转换至字典。 | String |
方法概述
方法 | 说明 |
load (table_path, {where_clause}, {time_filter}, {renderer}, {is_renderer}) | 从表导入。 |
save (table_path) | 导出到表。 |
方法
load (table_path, {where_clause}, {time_filter}, {renderer}, {is_renderer})
参数 | 说明 | 数据类型 |
table_path | 要导入的表。 输入可以为要素类的目录路径、托管要素图层的 URL 或具有语法 {"url":"<url>", "token":"<token", "referer":"<referer>"} 的 URL JSON,用于从需要访问令牌的外部源加载数据。 | String |
where_clause | 用于选择记录子集的 SQL 表达式。 有关 SQL 语法的详细信息,请参阅在 ArcGIS 中使用的查询表达式的 SQL 参考。 (默认值为 None) | String |
time_filter | 要查询的时间点或时间范围。时间过滤器只能应用于托管要素图层,并且该图层必须启用时间。 时间点应设置为字符串格式,例如,"1199145600000"(2008 年 1 月 1 日 00:00:00 GMT)。时间范围应为逗号分隔的字符串,例如:"1199145600000, 1230768000000"(2008 年 1 月 1 日 00:00:00 GMT 至 2009 年 1 月 1 日 00:00:00 GMT)。 为开始时间或结束时间指定的空值将分别表示开始时间或结束时间为无穷大,例如:"null, 1230768000000"。 (默认值为 None) | String |
renderer | 可以使用字符串或者 JSON 渲染器或 JSON 定义对象的字典表示来设置输出 FeatureSet 符号系统。 了解有关 JSON 渲染器和 JSON 定义对象的详细信息。 (默认值为 None) | String |
is_renderer | 指定与 renderer 参数配合使用的值类型。如果值为渲染器对象,则设置为 True;如果值为定义对象,则设置为 False。 (默认值为 None) | Boolean |
可选参数仅为位置参数;无法通过关键字来传递可选参数。例如,如果意图为仅指定符号系统,则必须使用 None 跳过可选参数 where_clause 和 time_filter。
save (table_path)
参数 | 说明 | 数据类型 |
table_path | 要创建的输出表。 | String |
代码示例
将数据加载到 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)
将 ArcGIS Living Atlas of the World 中的数据子集加载到 FeatureSet 中并设置符号系统。
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)