文章目录
1. 导入arcpy
import arcpy
在导入ArcPy之后,可以运行随ArcGIS安装的标准工具箱中的所有地理处理工具。如:分析工具箱、制图工具箱、转换工具箱、数据管理工具箱、编辑工具箱、地理编码工具箱、线性参考工具箱、多维工具箱、空间统计工具箱。
2. 导入模块
import arcpy. mapping
模块通常是一个包含函数和类的Python文件。一系列模块支持ArcPy,包括:
- 数据访问模块(arcpy.da)
- 制图模块(arcpy.mapping)
- ArcGIS Spatial Analyst扩展模块(arcpy.sa)
- ArcGIS Network Analyst扩展模块(arcpy.na)
3. 导入第三方模块
import arcpy
import os
import sys
当然,Python还具有很多其他核心模块和第三方模块。如果还想使用Python的核心os和sys模块,可以使用相似的导入方式:
4. 部分导入模块
1. 在很多情况下,用户可能不想使用整个模块或无需使用整个模块。如果只导入某一模块的一部分,可以使用from-import语句。在下例中,将导入env类(env类包含所有地理处理环境)。现在无需以arcpy.env的形式访问环境,而可以将其简化为env。
from arcpy import env
env. Workspace = "c:/data"
2. 遵循相同的思路,有时用户可能需要注意:如何对模块或模块的一部分进行标识以使脚本更具可读性,以及对于首选项来说默认名称可能过长。在上述任一情况下,均可以使用from-import-as的形式。与先前的示例相同,下面的示例中也将导入env类,但会指定ENV作为env类的名称:
from arcpy import env as ENV
ENV. Workspace = "c:/data"
3. 操作使用from-import-*的形式。模块的内容将被直接导入到命名空间中,这表示用户随后可以直接使用所有这些内容,而无需为它们添加前缀。例如:
from arcpy. env import *
Workspace = "c:/data"
但是,使用此方法存在一些风险。具有相同名称的其他对象、变量、模块等将被覆盖,另外在使用大型模块时,命名空间可能会变得异常拥挤和杂乱。
5. 栅格数据操作
5.1 读取栅格数据
Raster(inRaster) # 数据类型:Raster
// eg:
r = Raster("c:/data/dem") # 绝对路径
r = Raster("19960909.img") # 相对路径,当不是ArcGIS的栅格数据时,要加上后缀
5.2 保存栅格数
RasterObj.save("路径字符串")
// eg:
r.save("c:/data/dem_1") # 绝对路径保存
5.3 读取栅格波段
Band_RED = arcpy.Raster(inTifPath + '/Band_3') # 读取红外波段
5.4 栅格转其他格式
RasterToOtherFormat_conversion(Input_Rasters, Output_Workspace)
6. 创建栅格图层
// {可选}
MakeRasterLayer_management (in_raster, out_rasterlayer, {where_clause}, {envelope}, {band_index})
配合SaveToLayerFile_management导出.lyr 或者Int_3d导出为栅格
// {可选}
SaveToLayerFile_management (in_layer, out_layer, {is_relative_path}, {version})
Int_3d (in_raster_or_constant, out_raster) # 转为整型
7. 创建要素类
// {可选}
CreateFeatureclass_management(out_path, out_name, {geometry_type}, {template}, {has_m}, {has_z}, {spatial_reference}, {config_keyword}, {spatial_grid_1}, {spatial_grid_2}, {spatial_grid_3})
8. 文件和文件夹操作
主要利用os包
8.1 遍历文件夹
os.walk(_inFolder): # 返回文件夹下 当前路径,文件夹名,文件名
os.listdir(inPath) # 返回文件夹下文件名
8.2 文件为.mxd后缀
f.endswith(".mxd")
8.3 路径拼接
os.path.join(a,b)
9. 定义工作空间
脚本中最为常用的环境变量设置就是arcpy.env.workspace,该变量用于定义当前脚本的工作目录(或者称为工作空间)
arcpy.env.workspace = 'F:/MODIS_Snow_Cover/Snow_Cover_Hdf/'+ i
10. 获取ArcGIS输入信息
获取界面输入得第一个,第二个路径
field_name = arcpy.GetParameterAsText(0)
arcpy.env.workspace = arcpy.GetParameterAsText(1)
11. 设置数据路径
wild_card | 通配符可限制返回的结果,例如匹配前面有A的文件名(“A*”) | String |
raster_type | 栅格格式 | String |
# 列出工作目录下的所有栅格
arcpy.ListRasters({wild_card},{raster_type})
# 在列表末尾添加新的对象
list.append(end)
12. 运算-条件函数
位置栅格数据的值用于确定要从输入栅格列表中的哪一个栅格获取输出像元值。
Pick (in_position_raster, in_rasters_or_constants)
根据指定条件将所识别的像元位置设置为 NoData。如果条件评估为真,则返回 NoData;如果条件评估为假,则返回由另一个栅格指定的值
SetNull (in_conditional_raster, in_false_raster_or_constant)
针对输入栅格的每个输入像元执行 if/else 条件评估,Arcpy.sa.con(真,赋值,假)
Arcpy.sa.con(NDVI < -1.0, -1.0, Con(NDVI > 1.0, 1.0, NDVI))
13. 运算-加减乘除
- Divide (in_raster_or_constant1, in_raster_or_constant2) 除
- Minus (in_raster_or_constant1, in_raster_or_constant2) 减
- Plus (in_raster_or_constant1, in_raster_or_constant2) 加
- Times (in_raster_or_constant1, in_raster_or_constant2) 乘
14 .mxd文件操作
- 打开.mxd文件
mxd = arcpy.mapping.MapDocument(mxdPath)
- 另存为操作
saveACopy(file_name, {version})