arcpy知识点摘录

主要摘录自http://desktop.arcgis.com/zh-cn/arcmap/latest/analyze/main/what-is-geoprocessing.htm
容易忘记,挑重点看看
1、ArcPy 按工具、环境、函数、类和模块进行组织。
2、执行地理处理工具时,工具的结果会返回到 Result 对象中。通常,该对象是由工具生成或更新的输出数据集的路径。在其他情况下,它可能会包含其他类型的值,如数值或布尔值。如果工具的输出是多值参数,则这些值可在列表中以列表的形式返回。
以下代码示例显示了如何捕获返回值以及这些值的具体内容:
返回输出要素类的路径。该结果可用作其他函数的输入。
>>> result = arcpy.Buffer_analysis("rivers", "riverBuf", "50 METERS")
>>> print result
C:PortlandPortland_OR.gdb iverBuf
>>> arcpy.Clip_analysis("streets", result, "streets_50m_of_rivers")

返回要素数目。
>>> result = arcpy.GetCount_management("streets_50m_of_rivers")
>>> print result.getOutput(0)
54

返回要素类的默认空间格网索引列表。
>>> result = arcpy.CalculateDefaultGridIndex_management("streets_50m_of_rivers")
>>> for i in range(0, result.outputCount):
... print result.getOutput(i)
...
560
200
0

3、可通过 env 类来获得属性形式的环境设置。这些属性可用于检索和设置当前环境值。
4、导入整个模块 import arcpy
5、导入单个模块 import arcpy.mapping
6、建议导入所有模块的两种情况
from arcpy.sa import *
from arcpy.mapping import *
7、大部分地理处理工具同时包含必选参数和可选参数。通常,在许多情况下都存在多个不需要进行指定的可选参数。有两种方法可以处理这些未使用的参数。一种方法是保持所有可选参数有序,然后将您不需要的参数引用为空字符串 ""、井号 "#" 或类型为 None 的参数。另一种方法是使用关键字参数,并使用参数名称来分配值。使用关键字参数可以跳过未使用的可选参数或以不同的顺序指定它们。
使用空字符串跳过可选参数。
arcpy.AddField_management("schools", "school_id", "LONG", "", "", "", "", "NON_NULLABLE")
更好的办法是使用关键字参数跳过可选参数。
arcpy.AddField_management("schools", "school_id","LONG",field_is_nullable="NON_NULLABLE")
8、工具运行结果Result对象的getOutput返回unicode字符串,可以用python内置类型如int()、float()等转换为其它类型。
9、如果创建的输出仅为大型工作流的一个中间阶段,那么输出参数可以省略,以便工具为输出创建唯一路径和名称。可以通过将输出设置为“#”或“None”来完成此操作,或如果输出是所使用的最后一个参数,则可以完全跳过此操作。在每种情况中,返回值都是新数据源的完整路径。

import arcpy
arcpy.env.workspace = "c:/city/data.gdb"
result = arcpy.CopyFeatures_management("roads", "#")
result = arcpy.CopyFeatures_management("roads", "")
result = arcpy.CopyFeatures_management("roads")
10、函数的一般形式与工具类似;它接受参数(可能需要也可能不需要)并返回某些结果。非工具函数的返回值可以为各种类型 - 从字符串到地理处理对象。工具函数会始终返回 Result 对象,并提供地理处理消息支持。
11、工具参数通常使用简单文本字符串来定义。数据集名称、路径、关键字、字段名称、容差、属性域名称可通过带引号的字符串指定。对于需要多个属性的较复杂参数,难以使用简单字符串对其进行定义。这种情况下,可使用类(例如,SpatialReference、ValueTable 和 Point 类)来定义这些字符串,而不必输入复杂的长文本字符串。
12、只有在独立脚本中才必须设置产品和扩展模块。如果从 Python 窗口运行工具或者使用脚本工具,产品已在应用程序内进行设置,激活的扩展模块取决于“扩展模块”对话框。
13、List*函数中,ListFields返回的是字段Field类型的列表,ListIndexes返回索引对象列表,其它返回的是字符串列表。
14、多值输入三种方式:列表,逗号分割的字符串,值表
15、字段映射
16、服务器工具使用要素集和记录集进行通信,这意味着在使用服务器工具时必须使用这些对象来创建数据或将数据加载到这些对象中。
17、SQL 表达式中使用的字段分隔符因所查询数据的格式而异。例如,文件地理数据库和 shapefile 使用双引号 (" "),个人地理数据库使用方括号 ([ ]),而 ArcSDE 地理数据库不使用字段分隔符。
18、在 Python 中,在游标释放前保持锁定状态。否则,将会阻止所有其他应用程序或脚本访问数据集,而这是毫无必要的。可通过以下其中一种方法来释放游标:
在 with 语句中加入游标,这样可以确保无论游标是否成功完成,都将释放锁
在游标上调用 reset()
完成游标
使用 Python 的 del 语句显示删除游标
19、二进制大对象 (BLOB) 是一种存储为长度较长的一系列二进制数的数据。ArcGIS 会将注记和尺寸存储为 BLOB,图像、多媒体或编码的位等项也可存储在此类型的字段中。可使用游标来加载或查看 BLOB 字段的内容。在 Python 中,BLOB 字段可接受字符串 bytearray 和 memoryviews。当读取 BLOB 字段时,返回 memoryview 对象。
import arcpy
data = open("c:/images/image1.png", "rb").read()
ic = arcpy.da.InsertCursor("c:/data/fgdb.gdb/fc", ['imageblob'])
ic.insertRow([data])


sc = arcpy.da.SearchCursor("c:/data/fgdb.gdb/fc", ["imageblob"])
memview = sc.next()[0]
open("c:/images/image1_copy.png", "wb").write(memview.tobytes())
20、如果一个面包含多个洞,它将由多个环组成。针对面返回的点对象数组将包含外部环及所有内部环的点。外部环总是先返回,接着是内部环,其中以空点对象作为环之间的分隔符。当脚本在地理数据库或 shapefile 中读取面的坐标时,它应包含用于处理内部环的逻辑(如果脚本需要此信息);否则,将只读取外部环。顺时针环是外部环,逆时针环则定义内部环。
21、从坐标列表创建几何,仅限于单部件要素,及面要素的外部环。
22、有空洞的面要素,Multipart=1,partCount=1

未完待续……

原文地址:https://www.cnblogs.com/geosnoob/p/11586250.html