目录:
技巧1:将工具从工具箱拖拽到 Python 窗体中自动会生成相应的函数,于是可以快速定位函数名称!
技巧2:将通过工具箱实现的操作结果拖拽到 Python 窗体,可以自动生成处理的代码,于是可以快速了解相关参数含义!
01 | CalculateStatistics | 计算栅格数据集或镶嵌数据集的统计数据。 | |
02 | MakeXYEventLayer | 根据源表中定义的X和Y坐标创建新的点要素图层。 | |
03 | Idw | 使用反距离加权法 (IDW) 将点插值成栅格表面。 | |
04 | RasterCalculator | 使用 Python 语法构建和执行单个地图代数表达式。 |
|
05 | Clip_analysis | 提取与裁剪要素相重叠的输入要素。 | |
06 | ExtractByMask | 提取所定义掩膜区域内的栅格像元。 | |
07 | CalculateAreas_stats | 计算面要素类中每个要素的面积值。 | |
08 | AddField | 向表或要素类表、要素图层等添加新字段。 | |
09 | CalculateField | 为要素类、要素图层或栅格计算字段的值。 | |
10 | AlterField | 重命名字段和字段别名,或更改字段属性。 | |
11 | ApplySymbologyFromLayer | 此工具用于将来自图层的符号系统应用到输入图层。 | |
12 | CreateFeatureclass | 创建空要素类。 | |
--------------- |
序号 | 函数名称 |
功能说明 |
语法 & 举例 | ||
01 | Calculate Statistics (Data Management) |
计算栅格数据集或镶嵌数据集的统计数据。需要对栅格和镶嵌数据集进行统计方可执行诸如应用对比度拉伸或分类数据等任务。 ====<<<< Syntax >>>>==== CalculateStatistics_management (in_raster_dataset, {x_skip_factor}, {y_skip_factor}, {ignore_values}, {skip_existing}, {area_of_interest}) ====<<<< Parameter >>>>==== ◈ in_raster_dataset:输入栅格数据集或镶嵌数据集。 |
# 获取内部的栅格数据
files_raster = arcpy.ListRasters()
# 对数据进行遍历,并执行工具操作
for f in files_raster:
arcpy.CalculateStatistics_management(f)
|
||
02 |
根据源表中定义的 X 和 Y 坐标创建新的点要素图层。如果源表包含 Z 坐标(高程值),则可以在创建事件图层时指定该字段。由此工具创建的图层是临时图层。相当于 File -> Add Data -> Add XY Data ====<<<< Syntax >>>>==== MakeXYEventLayer_management (table, in_x_field, in_y_field, out_layer, {spatial_reference}, {in_z_field}) ====<<<< Parameter >>>>==== ◈ table:定义要创建的点要素位置的表(包含 X 和 Y 坐标)。 |
# 获取内部的数据
files_txt = arcpy.ListFiles()
# 对数据进行遍历,并执行工具操作
for f in files_txt:
# 将txt数据导入
arcpy.MakeXYEventLayer_management(f, "Longitude", "Latitude", f)
|
|||
03 | IDW (Spatial Analyst) |
|
使用反距离加权法 (IDW) 将点插值成栅格表面。 ====<<<< Syntax >>>>==== Idw (in_point_features, z_field, {cell_size}, {power}, {search_radius}, {in_barrier_polyline_features}) ====<<<< Parameter >>>>==== ◈ in_point_features:包含要插值到表面栅格中的 z 值的输入点要素。 ---------------------------------------------------------------------------------- ====<<<< Return Value >>>>====
◈ out_raster:输出插值后的表面栅格。(不写扩展名的话会生成带有文件夹形式的栅格数据,如果写 *.tif,则直接生成 tif 文件,参考:Raster 类)
|
# 获取内部的数据
files_txt = arcpy.ListFiles()
# 对数据进行遍历,并执行工具操作,注意加扩展名 tif,否则容易出错
# 不将文件返回到变量直接保存,否则无法遍历
for f in files_txt:
(arcpy.sa.Idw(f, "sd")).save("D:/IDW/" + f + ".tif")
|
|
04 | Raster Calculator (Spatial Analyst) |
在类似计算器的界面中,使用 Python 语法构建和执行单个地图代数表达式。 注意:引用函数的名称为:arcpy.gp.RasterCalculator_sa ====<<<< Syntax >>>>==== RasterCalculator (expression, output_raster) ====<<<< Parameter >>>>==== ◈ expression:“地图代数”表达式。(表达式通过单引号连接,因为双引号需要显示在SQL语句中,例如变量名称) |
lyrs = arcpy.mapping.ListLayers(mxd)
# 注意写表达式的时候不能有字符串函数什么的,而且变量名需要用双引号
# 因此可以先print下效果
# SQL函数很无语(先通过工具实现,再将结果拖入获取代码)
for i in range(9, 21):
arcpy.gp.RasterCalculator_sa('8.64012 - 14.84545*Log10("'
+ lyrs[i].name + '") + 10.54793*Power(Log10("' + lyrs[i].name
+ '"), 2) - 3.45375 * Power(Log10("' + lyrs[i].name + '"), 3)
+ 0.4254 * Power(Log10("' + lyrs[i].name + '"), 4)', lyrs[i].name + "_sd.tif")
|
||
05 | Clip (Spatial Analyst) |
提取与裁剪要素相重叠的输入要素。(切割矢量) ====<<<< Syntax >>>>==== Clip_analysis (in_features, clip_features, out_feature_class, {cluster_tolerance}) ====<<<< Parameter >>>>==== ◈ in_features:要裁剪的要素。(图层也可以) |
arcpy.env.workspace=r"D:Working2017"
for i in range(0, 85-5):
arcpy.Clip_analysis(lyrs[i], "Wenzhou", "mwz_wz_" + lyrs[i].name + ".shp")
|
||
06 | Extract by Mask (Spatial Analyst) |
提取所定义掩膜区域内的栅格像元。(切割栅格) 注意:引用函数的名称为:arcpy.sa.RasterCalculator_sa ====<<<< Syntax >>>>==== ExtractByMask (in_raster, in_mask_data) ====<<<< Parameter >>>>==== ◈ in_raster:提取像元的输入栅格。(图层也可以) ---------------------------------------------------------------------------------- ====<<<< Return Value >>>>==== ◈ out_raster:输出插值后的表面栅格。(不写扩展名的话会生成带有文件夹形式的栅格数据,如果写 *.tif,则直接生成 tif 文件,参考:Raster 类) |
# mon 用来命名文件
# 将栅格数据通过给定的矢量文件剪切
# 并将数据按照月份顺序保存
mon = 0
for i in range(8,20):
mon = mon + 1
(arcpy.sa.ExtractByMask(lyrs[i], lyrs[0])).save("D:/M_"+str(mon) + ".tif")
|
||
07 | CalculateAreas_stats |
计算面要素类中每个要素的面积值。 ====<<<< Syntax >>>>==== CalculateAreas_stats((Input_Feature_Class, Output_Feature_Class) ====<<<< Parameter >>>>==== ◈ Input_Feature_Class:输入面要素类。 |
>>> import arcpy >>> arcpy.CalculateAreas_stats("WORLD_continent", "world_area.shp") |
||
08 | AddField_management |
向表或要素类表、要素图层、栅格目录和/或带属性表的栅格添加新字段。 ====<<<< Syntax >>>>==== AddField_management (in_table, field_name, field_type, {field_precision}, {field_scale}, {field_length}, {field_alias}, {field_is_nullable}, {field_is_required}, {field_domain}) ====<<<< Parameter >>>>==== ◈ in_table:要添加指定字段的输入表。(shapefile、栅格目录等) |
# 添加文本字段 >>> arcpy.AddField_management(lyr, "Name", "TEXT", ... "", "", 10, "Name_alias", "NULLABLE", "NON_REQUIRED") # 添加双精度字段 >>> arcpy.AddField_management(lyr, "Area", "DOUBLE", 6) |
||
09 | CalculateField_management |
为要素类、要素图层或栅格计算字段的值。 ====<<<< Syntax >>>>==== CalculateField_management (in_table, field, expression, {expression_type}, {code_block}) ====<<<< Parameter >>>>====
◈ in_table:包含将通过新的计算进行更新的字段的表。 ---------------------------------------------------------------------------------- 参考:【311】Python 构建 ArcMap 标注表达式 注意:两者的表达式形式略有不同,推荐的方法是先通过 ArcMap 实现,然后将代码添加到 ArcPy 中。 参考:计算字段示例(官方帮助) |
代码块说明:在 code_block 对应参数的部分编写函数,用三引号,在 expression 对应参数进行调用 # 默认用中括号作为参数 >>> arcpy.CalculateField_management(lyr, "name", "[CONTINENT]") # 通过python代码实现 >>> arcpy.CalculateField_management(lyr, "name", "!CONTINENT!.upper()", "PYTHON_9.3") # 通过python代码块实现 >>> arcpy.CalculateField_management(lyr, "name", "changeName(!CONTINENT!)", "PYTHON_9.3", """ ... def changeName(con): ... if len(con) < 8: ... return "Alex" ... else: ... return "Alex Lee" ... """) |
||
10 | AlterField_management |
重命名字段和字段别名,或更改字段属性。 ====<<<< Syntax >>>>==== AlterField_management (in_table, field, {new_field_name}, {new_field_alias}, {field_type}, {field_length}, {field_is_nullable}, {clear_field_alias}) ====<<<< Parameters >>>>==== ◈ in_table:包含待更改字段的输入表或要素类。 ---------------------------------------------------------------------------------- 参考:Parameters not valid in batch Alter field Arcpy 参考:Change field names with Python 说明:在 ArcGIS 10.4.1 版本测试的时候一直提示 Invalid input,目前没解决。(2018-4-25) |
|||
11 | ApplySymbology FromLayer_management |
此工具用于将来自图层的符号系统应用到输入图层。此工具可应用于要素、栅格、网络分析以及 ArcMap 内容列表中的 TIN 地理统计层文件或图层。 ====<<<< Syntax >>>>==== ApplySymbologyFromLayer_management (in_layer, in_symbology_layer) ====<<<< Parameter >>>>==== ◈ in_layer:将应用符号系统的图层。 |
# 获取图层 lyrs = arcpy.mapping.ListLayers(df) # 将图层[1]的样式应用到图层[0] arcpy.ApplySymbologyFromLayer_management(lyrs[0],lyrs[1]) |
||
12 | CreateFeatureclass _management |
在 ArcSDE 地理数据库、文件地理数据库或个人地理数据库中创建空要素类;在文件夹中此工具将创建 shapefile。 ====<<<< Syntax >>>>==== 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}) ====<<<< Parameter >>>>==== ◈ out_path:将在其中创建输出要素类的 ArcSDE 地理数据库、文件地理数据库、个人地理数据库或文件夹。此工作空间必须已经存在。 |
>>> import arcpy >>> arcpy.CreateFeatureclass_management(r"D: mp", "point", "POINT") <Result 'D:\tmp\point.shp'> |
||
---- |
------------------- |
-------------------------------------------------- |