python 2.7导入arcpy_导入 ArcPy

导入模块

模块为通常包含函数和类的 Python 文件。ArcPy 由一系列模块提供支持,其中包括以下模块:数据访问模块 (arcpy.da)

制图模块 (arcpy.mp)

元数据模块 (arcpy.metadata)

共享模块 (arcpy.sharing)

Network Analyst 模块(arcpy.nax 和 arcpy.na)

要导入整个模块,请使用“导入”模块:# Import only arcpy.mp

import arcpy.mp

当然,Python 还具有很多其他核心模块和第三方模块。如果还想使用 Python 的核心 os 和 sys 模块,可以使用相似的导入方式:# Import arcpy, os and sys

import arcpy

import os

import sys

在很多情况下,用户可能不想使用整个模块或无需使用整个模块。如果只导入某一模块的一部分,可以使用 from-import 语句。在下例中,将导入 env 类(env 类包含所有地理处理环境)。现在无需以 arcpy.env 的形式访问环境,而可以将其简化为 env。# Import env from arcpy and set the workspace environment

from arcpy import env

env.workspace = 'c:/data'

遵循相同的思路,有时用户可能需要注意:如何对模块或模块的一部分进行标识以使脚本更具可读性,以及对于首选项来说默认名称可能过长。在上述任一情况下,均可以使用 from-import-as 的形式。与先前的示例相同,下面的示例中也将导入 env 类,但会将其指定为 ENV 的名称:# Import env from arcpy as ENV and set the workspace environment

from arcpy import env as ENV

ENV.workspace = 'c:/data'

可以使用相同方式导入制图模块:# Import the mapping module from arcpy as MAP and create an ArcGISProject

# object

from arcpy import mp as MAP

aprx = MAP.ArcGISProject('c:/Projects/YosemiteNP/Yosemite.aprx')

其他版本的导入操作使用 from-import-* 的形式。模块的内容将被直接导入到命名空间中,这表示用户随后可以直接使用所有这些内容,而无需为它们添加前缀。例如:# Import management from arcpy as *

from arcpy.management import *

但是,使用此方法存在一些风险。具有相同名称的其他对象、变量、模块等将被覆盖,另外在使用大型模块时,命名空间可能会变得异常拥挤和杂乱。可以此方式考虑该问题:在下例中,管理模块和分析模块都将被导入为 *。这两个模块都具有裁剪工具。如果现在尝试使用裁剪工具,那么实际使用的会是哪种裁剪工具? 答案是后者,但是此方法可能导致在阅读脚本时出现不确定或难以阅读的情况。# Import the management and analysis modules from arcpy as *

from arcpy.management import *

from arcpy.analysis import *

# Which Clip is it?

Clip('standb4', 'clipcov', 'standby_clip', 1.25)

但是在某些情况下,from-import-* 可以简化代码,例如,在使用 ArcGIS Spatial Analyst extension 的 sa 模块的情况下。sa 模块的优势之一在于,可以在一行中嵌套多个类和函数以生成输出栅格对象。

许可:

以下两个实例都需要 ArcGIS Spatial Analyst extension 来运行。# Import arcpy and the sa module as *

import arcpy

from arcpy.sa import *

# Get input parameters

inRaster1 = arcpy.GetParameterAsText(0)

inRaster2 = arcpy.GetParameterAsText(1)

inRaster3 = arcpy.GetParameterAsText(2)

outRaster = (Raster(inRaster1) + (Raster(inRaster2) - Raster(inRaster3)))

现在比较下一个代码块,此代码块使用常规 import-from 语句。现在假设再向代码中添加一些类和函数。即使为每个函数和类添加 sa,代码的体积也将迅速增加,这将破坏可读性并且使代码行变得更加庞大。# Import arcpy and the sa module

import arcpy

from arcpy import sa

# Get input parameters

inRaster1 = arcpy.GetParameterAsText(0)

inRaster2 = arcpy.GetParameterAsText(1)

inRaster3 = arcpy.GetParameterAsText(2)

outRaster = (sa.Raster(inRaster1) + (sa.Raster(inRaster2) - sa.Raster(inRaster3)))

你可能感兴趣的:(python,2.7导入arcpy)