目录:

一、相关技巧

二、工具说明


一、相关技巧

  技巧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)
 

====<<<< Description >>>>====

计算栅格数据集或镶嵌数据集的统计数据。需要对栅格和镶嵌数据集进行统计方可执行诸如应用对比度拉伸或分类数据等任务。
----------------------------------------------------------------------------------

====<<<< 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

Make XY Event Layer(Data Management)

 

====<<<< Description >>>>====

根据源表中定义的 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 坐标)。
◈  in_x_field:输入表中包含 X 坐标的字段。
◈  in_y_field:输入表中包含 Y 坐标的字段。
◈  out_layer:输出点事件图层的名称。

 
# 获取内部的数据
files_txt = arcpy.ListFiles() # 对数据进行遍历,并执行工具操作
for f in files_txt:
# 将txt数据导入
arcpy.MakeXYEventLayer_management(f, "Longitude", "Latitude", f)
 03 IDW
(Spatial Analyst)

====<<<< Description >>>>====

使用反距离加权法 (IDW) 将点插值成栅格表面。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

Idw (in_point_features, z_field, {cell_size}, {power}, {search_radius}, {in_barrier_polyline_features})
----------------------------------------------------------------------------------

====<<<< Parameter >>>>====

◈  in_point_features:包含要插值到表面栅格中的 z 值的输入点要素。
◈  z_field:存放每个点的高度值或量级值的字段。
◈  cell_size:要创建的输出栅格的像元大小。(可选)
◈  power:距离的指数。(可选)

----------------------------------------------------------------------------------

====<<<< 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)
 

====<<<< Description >>>>====

在类似计算器的界面中,使用 Python 语法构建和执行单个地图代数表达式。

注意:引用函数的名称为:arcpy.gp.RasterCalculator_sa
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

RasterCalculator (expression, output_raster)
----------------------------------------------------------------------------------

====<<<< Parameter >>>>====

◈  expression:“地图代数”表达式。(表达式通过单引号连接,因为双引号需要显示在SQL语句中,例如变量名称)
◈  output_raster:生成输出的信息。(不写扩展名的话会生成带有文件夹形式的栅格数据,如果写 *.tif,则直接生成 tif 文件)

 
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)
 

====<<<< Description >>>>====

提取与裁剪要素相重叠的输入要素。(切割矢量)
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

Clip_analysis (in_features, clip_features, out_feature_class, {cluster_tolerance})
----------------------------------------------------------------------------------

====<<<< Parameter >>>>====

◈  in_features:要裁剪的要素。(图层也可以)
◈  clip_features:用于裁剪输入要素的要素。(图层也可以)
◈  out_feature_class:待创建的要素类。

 

arcpy.env.workspace=r"D:\Working\2017"
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)
 

====<<<< Description >>>>====

提取所定义掩膜区域内的栅格像元。(切割栅格)

注意:引用函数的名称为:arcpy.sa.RasterCalculator_sa
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

ExtractByMask (in_raster, in_mask_data)
----------------------------------------------------------------------------------

====<<<< Parameter >>>>====

◈  in_raster:提取像元的输入栅格。(图层也可以)
◈  in_mask_data:用于定义提取区域的输入掩膜数据。(图层也可以)

----------------------------------------------------------------------------------

====<<<< 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  

====<<<< Description >>>>====

计算面要素类中每个要素的面积值。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

CalculateAreas_stats((Input_Feature_Class, Output_Feature_Class)
----------------------------------------------------------------------------------

====<<<< Parameter >>>>====

◈  Input_Feature_Class:输入面要素类。
◈  Output_Feature_Class:输出要素类。此要素类是输入要素类的副本,但添加(或更新)了字段 F_AREA。

 

>>> import arcpy
>>> arcpy.CalculateAreas_stats("WORLD_continent", "world_area.shp")
08 AddField_management  

====<<<< Description >>>>====

向表或要素类表、要素图层、栅格目录和/或带属性表的栅格添加新字段。
----------------------------------------------------------------------------------

====<<<< 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、栅格目录等)
◈  field_name:要添加到输入表的字段的名称。
◈  field_type:新字段的字段类型。(TEXT / FLOAT / DOUBLE / SHORT / LONG / DATE)
◈  field_precision:可存储在字段中的位数。所有位都将被计算在内,而无论其处于小数点的哪一侧。
◈  field_scale:可存储在字段中的小数位数。
◈  field_length:要添加的字段的长度。它为字段的每条记录设置最大允许字符数。
◈  field_alias:指定给字段名称的备用名称。
◈  field_is_nullable:指定该字段是否可包含空值。
  NON_NULLABLE:字段不允许空值。
  NULLABLE:字段允许空值。这是默认设置。
◈  field_is_required:指定要创建的字段是否是表的必填字段。
  NON_REQUIRED:字段不是必填字段。这是默认设置。
  REQUIRED:此字段是必填字段。
◈  field_domain:用于约束地理数据库中的表、要素类或子类型的任何特定属性的允许值。

 

# 添加文本字段
>>> arcpy.AddField_management(lyr, "Name", "TEXT",
... "", "", 10, "Name_alias", "NULLABLE", "NON_REQUIRED") # 添加双精度字段
>>> arcpy.AddField_management(lyr, "Area", "DOUBLE", 6)
 09 CalculateField_management  

====<<<< Description >>>>====

为要素类、要素图层或栅格计算字段的值。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

CalculateField_management (in_table, field, expression, {expression_type}, {code_block})
----------------------------------------------------------------------------------

====<<<< Parameter >>>>====

◈  in_table:包含将通过新的计算进行更新的字段的表。
◈  field:将通过新的计算进行更新的字段。
◈  expression:创建值以填充所选行的简单计算表达式。
◈  expression_type:指定要使用的表达式的类型。
  VB:表达式将使用标准 VB 格式编写。这是默认设置。
  PYTHON:表达式将使用标准 Python 格式编写。地理处理器方法和属性的使用与创建 9.2 版地理处理器相同。
  PYTHON_9.3:表达式将使用标准 Python 格式编写。地理处理器方法和属性的使用与创建 9.3 版地理处理器相同。
◈  code_block:允许为复杂表达式输入代码块。

----------------------------------------------------------------------------------

参考:【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  

====<<<< Description>>>>====

重命名字段和字段别名,或更改字段属性。
----------------------------------------------------------------------------------

====<<<< 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:包含待更改字段的输入表或要素类。
◈  field:待更改字段的名称。如果字段为必填字段 (isRequired=true),则只有字段别名是可更改的。
◈  new_field_name:字段的新名称。
◈  new_field_alias:字段的新字段别名。
◈  field_type:字段的新字段类型。
◈  field_length:字段的新长度。

----------------------------------------------------------------------------------

参考: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
 

====<<<< Description >>>>====

此工具用于将来自图层的符号系统应用到输入图层。此工具可应用于要素、栅格、网络分析以及 ArcMap 内容列表中的 TIN 地理统计层文件或图层。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

ApplySymbologyFromLayer_management (in_layer, in_symbology_layer)
----------------------------------------------------------------------------------

====<<<< Parameter >>>>====

◈  in_layer:将应用符号系统的图层。
◈  in_symbology_layer:将此图层的符号系统应用于输入图层。

 

# 获取图层
lyrs = arcpy.mapping.ListLayers(df)
# 将图层[1]的样式应用到图层[0]
arcpy.ApplySymbologyFromLayer_management(lyrs[0],lyrs[1])
12 CreateFeatureclass
_management
 

====<<<< Description >>>>====

在 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 地理数据库、文件地理数据库、个人地理数据库或文件夹。此工作空间必须已经存在。
◈  out_name:要创建的要素类的名称。(加与不加 .shp 都可以)
◈  geometry_type:要素类的几何类型。
  POINT、MULTIPOINT、POLYGON、POLYLINE。
◈  template:用作模板以定义要素类的属性方案的要素类。(相同的字段)

 

>>> import arcpy
>>> arcpy.CreateFeatureclass_management(r"D:\tmp", "point", "POINT")
<Result 'D:\\tmp\\point.shp'>
----
-------------------
 
--------------------------------------------------
   

【280】◀▶ ArcPy 常用工具说明的更多相关文章

  1. js常用工具类.

    一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...

  2. Linux 常用工具小结:(5) lftp工具使用

    Linux 常用工具小结:(1) lftp工具使用. 这里会按照一些比较常用的功能列出,并举一个具体的例子逐一解释功能. 通常使用ftp过程是登陆ftp,浏览ftp内容,下载ftp文件,或者上传ftp ...

  3. spring中常用工具类介绍

    http://www.cnblogs.com/langtianya/p/3875103.html 文件资源操作     Spring 定义了一个 org.springframework.core.io ...

  4. IOS开发--常用工具类收集整理(Objective-C)(持续更新)

    前言:整理和收集了IOS项目开发常用的工具类,最后也给出了源码下载链接. 这些可复用的工具,一定会给你实际项目开发工作锦上添花,会给你带来大大的工作效率. 重复造轮子的事情,除却自我多练习编码之外,就 ...

  5. Apache Commons 常用工具类整理

    其实一直都在使用常用工具类,只是从没去整理过,今天空了把一些常用的整理一下吧 怎么使用的一看就明白,另外还有注释,最后的使用pom引入的jar包 public class ApacheCommonsT ...

  6. Android 常用工具类之SPUtil,可以修改默认sp文件的路径

    参考: 1. 利用Java反射机制改变SharedPreferences存储路径    Singleton1900 2. Android快速开发系列 10个常用工具类 Hongyang import ...

  7. 封装一个简单好用的打印Log的工具类And快速开发系列 10个常用工具类

    快速开发系列 10个常用工具类 http://blog.csdn.net/lmj623565791/article/details/38965311 ------------------------- ...

  8. Java程序员常用工具集

    我发现很多人没办法高效地解决问题的关键原因是不熟悉工具,不熟悉工具也还罢了,甚至还不知道怎么去找工具,这个问题就大条了.我想列下我能想到的一个Java程序员会用到的常用工具. 一.编码工具 1.IDE ...

  9. 第二章 Qt常用工具的介绍

    第二章 Qt常用工具的介绍 (1)No.1 qmake 相信编写过Makefile的开发人员,随着工程中源码的级数递增和以类型.功能.模块组织源码的子目录的增多,都不愿意重复机械地手工编写这个工程管理 ...

随机推荐

  1. LeetCode OJ:Combination Sum II (组合之和 II)

    Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in ...

  2. react: menuService

    1.获取菜单对象 static findCurrentItem(items, currentState, currentItem) { _.forEach(items, function (item) ...

  3. 如何在JM8.6编码端提取QDCT?

    毫无疑问,编码端的QDCT和解码端的QDCT完全相同,下面从编码端提取QDCT. 为简便起见,仅提取第一帧第一个宏块第一个4*4块的QDCT.JM8.6编码器最核心的编码函数是encode_one_m ...

  4. ng 服务

    服务的本质是单例对象,封装一些方法和属性的. 单例模式:在实例化变量的时候,如果该变量已经存在,直接返回该变量:如果不存在,就创建一个新的变量再返回 ng自带的服务有很多,常用:$location $ ...

  5. GCC参数使用

    gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言, ...

  6. HDU - 3374:String Problem (最小表示法模板题)

    Give you a string with length N, you can generate N strings by left shifts. For example let consider ...

  7. hibernate的级联(hibernate注解的CascadeType属性)

    [自己项目遇到的问题]: 新增  删除都可以实现 ,就是修改的时候无法同步更新设计三个类:  问题类scask  正文内容类text类    查看数+回复数+讨论数的runinfo类 [正文类和查看数 ...

  8. SpringMVC 过滤器Filter使用解析

    SpringMVC框架是一个成熟的优秀java web开发框架,学习研究框架设计有助于我们更好的理解和掌握spring MVC,设计和写出更符合的结构和代码. 本节主要是研读SpringMVC框架中的 ...

  9. Write operations are not allowed in read-only mode 只读模式下(FlushMode.NEVER/MANUAL)写操作不

    org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read ...

  10. 剑指offer-第五章优化时间和空间效率(把数组排列成最小的数)

    题目:输入一个正整数数组,将所有的数,排列起来,组成一个最小的数.