在 Python 中使用类

类的作用类似于建筑设计蓝图。蓝图为如何创建事物提供了一个框架, 类可用于创建对象,即通常所说的实例。ArcPy 类,如 SpatialReferenceExtent 类,通常用作地理处理工具参数设置的快捷方式,否则的话,这些参数会使用更加复杂的字符串。

ArcPy 包括多个类,例如 SpatialReferenceValueTablePoint。 一旦实例化,就可以使用类的属性和方法。 类包括一个或多个称为构造器的方法。 构造器是用于初始化新的类实例的方法。 在以下示例中,SpatialReference(prjFile) 是类构造器,它通过读取投影文件创建 spatialRef 对象。


import arcpy

prjFile = "c:/projections/North America Equidistant Conic.prj"
spatialRef = arcpy.SpatialReference(prjFile)

与大多数其他类一样,SpatialReference 包含许多方法和属性。 在前面的示例的基础上,您可以访问 spatialRef 的属性。


import arcpy

prjFile = "c:/projections/North America Equidistant Conic.prj"
spatialRef = arcpy.SpatialReference(prjFile)

# Print the SpatialReference's name, and type
#
print(spatialRef.name)
print(spatialRef.type)

类可以重复使用。 在以下示例中,使用 Point 类创建两个唯一点对象:


import arcpy

pointA = arcpy.Point(2.0, 4.5)
pointB = arcpy.Point(3.0, 7.0)
注:

CreateObject 函数还可以用于创建许多可以使用类创建的对象。 但是,使用类更加简单且更具可读性。

将类与地理处理工具一起使用

工具参数通常使用简单文本字符串定义。 可以使用带引号的字符串指定数据集名称、路径、关键字、字段名称、容差和域名。

对于需要多个属性的较复杂参数,难以使用简单字符串对其进行定义。 这种情况下,可使用类(例如,SpatialReferenceValueTablePoint 类)来定义这些参数,而不必输入复杂的长文本字符串。 每个工具的文档均包含一个脚本示例,说明如何定义和使用每个工具参数。

在下例中,SpatialReference 对象被创建并用于定义由创建要素类工具创建的新要素类的输出坐标系。


import arcpy

inputWorkspace = "c:/temp"
outputName =  "rivers.shp"

prjFile = "c:/projections/North America Equidistant Conic.prj"
spatialRef = arcpy.SpatialReference(prjFile)

# Run CreateFeatureclass using the spatial reference object
arcpy.CreateFeatureclass_management(inputWorkspace, outputName, "POLYLINE", 
                                    spatial_reference=spatialRef)

此参数的等效字符串与此相似:PROJCS["North_America_Equidistant_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-96.0],PARAMETER["Standard_Parallel_1",20.0],PARAMETER["Standard_Parallel_2",60.0],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]];IsHighPrecision

相关主题