通过 Python 使用类
类的作用类似于建筑设计蓝图。蓝图为如何创建事物提供框架,而类则可用来创建对象,即通常所称的实例。ArcPy 类,如 SpatialReference 和 Extent 类,通常用作地理处理工具参数设置的快捷方式,否则的话,这些参数会使用更加复杂的字符串。
ArcPy 包含多个类,包括 SpatialReference、ValueTable 和 Point。类实例化之后,其属性和方法便可使用。类包含一个或多个方法,称为构造函数。构造函数用于初始化类的新实例。在下例中,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 函数来创建。但是,通过类创建这种方法更加易用且更易读取。
将类与地理处理工具配合使用
工具参数通常使用简单文本字符串来定义。数据集名称、路径、关键字、字段名称、容差、域名可通过带引号的字符串指定。
对于需要多个属性的较复杂参数,难以使用简单字符串对其进行定义。这种情况下可使用类(例如,SpatialReference、ValueTable 和 Point 类)来定义这些字符串,而不必输入复杂的长文本字符串。每个工具的文档中都包含一个脚本实例,介绍如何定义和使用各个工具参数。
在下例中,SpatialReference 对象被创建并用来定义由 CreateFeatureClass 工具创建的新要素类的输出坐标系。
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", "", "", "", 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