python in arcgis_通过 Python 使用工具

每个地理处理工具都具有一组固定的参数,这些参数为工具提供执行所需的信息。工具通常包含多个输入参数以定义一个或多个数据集,这些数据集一般用于生成新的输出数据。参数具有几个重要属性:每个参数具有一种或多种特定的数据类型,如要素类、整型、字符串或栅格。

参数可为输入值或输出值。

参数要么需要输入某一值,要么是可选项。

每个工具参数都具有一个唯一名称。

在 Python 中使用工具时,必须正确设置工具的参数值,以便在脚本运行时工具可以执行。一旦提供了一组有效的参数值,工具即准备好执行。参数将被指定为字符串或对象。

字符串是唯一标识参数值的文本,如数据集的路径或关键字。在下面的代码示例中,为缓冲区工具定义了输入和输出参数。请注意,工具名称要追加其工具箱的别名。在该示例中,两个字符串变量用于定义输入和输出参数,以便对工具的调用更容易阅读。import arcpy

roads = "c:/base/data.gdb/roads"

output = "c:/base/data.gdb/roads_Buffer"

# Run Buffer using the variables set above and pass the remaining

# parameters in as strings

arcpy.Buffer_analysis(roads, output, "distance", "FULL", "ROUND", "NONE")

对于部分参数(如空间参考),还可以指定对象。在下面的代码示例中,使用其可选“坐标系”参数的 创建要素类工具。import arcpy

in_workspace = "c:/temp"

output_name = "rivers.shp"

# Create a spatial reference object

spatial_ref = arcpy.SpatialReference('North America Equidistant Conic')

# Run CreateFeatureclass using the spatial reference object

arcpy.CreateFeatureclass_management(

in_workspace, output_name, spatial_reference=spatial_ref)

大部分地理处理工具同时包含必选参数和可选参数。通常,在许多情况下都存在多个不需要进行指定的可选参数。有两种方法可以处理这些未使用的参数。一种方法是保持所有可选参数有序,然后将您不需要的参数引用为空字符串 ""、井号 "#" 或类型为 None 的参数。另一种方法是使用关键字参数,并使用参数名称来分配值。使用关键字参数可以跳过未使用的可选参数或以不同的顺序指定它们。使用空字符串跳过可选参数。

import arcpy

arcpy.AddField_management("schools", "school_id", "LONG", "", "", "", "", "NON_NULLABLE")更好的办法是使用关键字参数跳过可选参数。

import arcpy arcpy.AddField_management("schools", "school_id", "LONG", field_is_nullable="NON_NULLABLE")工具输出

当作为

下面的示例说明了如何在执行地理处理工具后获取结果对象的输出。import arcpy

arcpy.env.workspace = "c:/city/data.gdb"

# Geoprocessing tools return a result object of the derived output dataset.

result = arcpy.CopyFeatures_management("roads", "urban_roads")

# A print statement will display the string representation of the output.

print(result)

# A result object can be indexed to get the output value. Note: a result object

# also has a getOutput() method that can be used for the same purpose.

result_value = result[0]

如果为结果对象建立索引或使用其 getOutput() 方法,那么返回值为字符串。当使用派生输出参数运行诸如获取计数(提供表中的记录数)或计算默认拓扑容差(提供拓扑容差值)之类的工具时,需要重点考虑这一点。要转换为所需类型,可使用 int() 或 float() 等内置 Python 函数。

注:

派生参数不需要用户的交互,并且不会在工具对话框上或作为 Python 中的工具的参数出现。输出参数通常是“派生”类型。import arcpy

import types

arcpy.env.workspace = "c:/base/data.gdb"

# Many geoprocessing tools return a result object of the derived output dataset.

result = arcpy.GetCount_management("roads")

result_value = result[0]

# The result object's getOutput method returns values as a unicode string. To

# convert to a different Python type, use built-in Python functions: str(),

# int(), float()

count = int(result_value)

print(count)

print(type(count))

如果创建的输出仅为大型工作流的一个中间阶段,那么输出参数可以省略,以便工具为输出创建唯一路径和名称。可以通过将输出设置为“#”或“None”来完成此操作,或如果输出是所使用的最后一个参数,则可以完全跳过此操作。在每种情况中,返回值都是新数据源的完整路径。import arcpy

arcpy.env.workspace = "c:/city/data.gdb"

result = arcpy.CopyFeatures_management("roads", "#")

result = arcpy.CopyFeatures_management("roads", "")

result = arcpy.CopyFeatures_management("roads")ArcPy 中的工具组织

地理处理工具以两种方法进行组织。所有工具均以 ArcPy 函数的形式提供,但也可以通过匹配工具箱别名的模块调用。尽管帮助中的大多数示例都以 ArcPy 函数的形式显示工具,但两种方法同样有效。使用哪一种方法具体取决于个人喜好和编码习惯。在下面的示例中,使用两种方法显示获取计数工具。import arcpy

in_features = "c:/temp/rivers.shp"

# Tools can be accessed as functions on the arcpy module

arcpy.GetCount_management(in_features)

# Or from modules matching the toolbox name

arcpy.management.GetCount(in_features)

通过模块使用工具时,您有时可能要注意标识模块的方式,以便脚本具有更好的可读性。在这种情况下,可以使用格式 from - import - as。# Clean up street centerlines that were digitized without

# having set proper snapping environments

import arcpy

from arcpy import edit as EDIT

from arcpy import management as DM

streets = "c:/data/streets.gdb/majorrds"

streets_copy = "c:/output/Output.gdb/streetsBackup"

DM.CopyFeatures(streets, streets_copy)

EDIT.TrimLine(streets, "10 Feet", "KEEP_SHORT")

EDIT.ExtendLine(streets, "15 Feet", "EXTENSION")

许可:

为适应“地图代数”,Spatial Analyst 和 Image Analyst 工具的处理方式有所不同,这些工具只能通过 arcpy.sa 和 arcpy.ia 模块调用,而不以 ArcPy 函数的形式提供。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值