ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS for Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

处理要素集和记录集

  • 创建和使用 FeatureSet 和 RecordSet 对象
  • 示例:使用光标和内存中的要素类将数据加载到要素集

FeatureSet 对象是要素类的轻量化表示。它们是一种既包含方案(几何类型、字段和空间参考)也包含数据(包括几何)的特殊数据元素。RecordSet 对象与上述对象类似,但其功能可与表相媲美。在脚本工具中使用时,要素集和记录集可用于以交互方式定义要素和记录。

注:

服务器工具使用要素集和记录集进行通信,这意味着在使用服务器工具时必须使用这些对象来创建数据或将数据加载到这些对象中。

FeatureSet 和 RecordSet 类包含两个相同的方法。

属性说明

load

将要素类导入到 FeatureSet 对象中。

save

导出到地理数据库要素类或 shapefile。

FeatureSet 类

属性说明

load

将表导入到 RecordSet 对象中。

save

导出到地理数据库表或 dBASE 文件。

RecordSet 类

创建和使用 FeatureSet 和 RecordSet 对象

根据需求和应用,可以通过多种方法创建 FeatureSet 和 RecordSet 对象。load 方法可用于将新要素或行添加到对象,而 save 方法可用于将要素或行保留在磁盘中。此外,还可将输入要素类或表作为参数提供给类。FeatureSet 和 RecordSet 对象还可以直接作为地理处理工具的输入来使用。

创建空要素集。

import arcpy

# Create an empty FeatureSet object
feature_set = arcpy.FeatureSet()

根据输入要素类构造要素集。

import arcpy

# Construct a FeatureSet from a feature class
feature_set = arcpy.FeatureSet("c:/base/roads.shp")

GetParameterValue 函数

如果要创建具有工具输入特定方案的要素集或记录集,请使用 GetParameterValue() 创建具有相应方案的空 FeatureSet 或 RecordSet 对象。

import arcpy

# Add a custom server toolbox
arcpy.ImportToolbox("http://flame7/arcgis/services;BufferByVal", "servertools")

# Get the default input from a tool
in_recordset = arcpy.GetParameterValue("bufferpoints", 0)

使用 GetParameter 函数

使用脚本工具时,可使用 GetParameter() 函数通过工具来获取 FeatureSet 和 RecordSet 对象。

import arcpy

# Get the RecordSet from a script tool
in_recordset = arcpy.GetParameter(0)

了解有关 GetParameter 函数的详细信息

Result 类 getInput 和 getOutput 方法

使用服务器工具时,明确请求其输出。当输出是要素集或记录集时,可使用 Result 类的 getOutput() 方法以 FeatureSet 或 RecordSet 对象的形式返回工具的输出。还可以使用 Result 对象的 getInput 方法获取输入 FeatureSet 或 RecordSet 对象。

import time
import arcpy

# Add a toolbox from a server
arcpy.ImportToolbox("http://flame7/arcgis/services;GP/BufferByVal",
                    "servertools")

# Use GetParameterValue to get a featureset object with the default
# schema of the first parameter of the tool 'bufferpoints'
in_featureset = arcpy.GetParameterValue("bufferpoints", 0)

# Load a shapefile into the featureset
in_featureset.load("c:/base/roads.shp")

# Run a server tool named BufferPoints with featureset created above
result = arcpy.BufferPoints_servertools(in_featureset, "5 feet")

# Check the status of the result object every 0.2 seconds until it
# has a value of 4 (succeeded) or greater
while result.status < 4:
    time.sleep(0.2)

# Get the output FeatureSet back from the server and save to a
# local geodatabase
out_featureset = result[0]
out_featureset.save("c:/temp/base.gdb/towers_buffer")

示例:使用光标和内存中的要素类将数据加载到要素集

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 Desktop

  • 主页
  • 文档
  • 支持

ArcGIS 平台

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2019 Esri. | 隐私政策 | 法律声明