【287】◀▶ arcpy 常用类说明
01 | Raster | 创建一个可在 Python 脚本或地图代数表达式中使用的栅格对象。 | |
02 | Cursor | Cursor 是一种数据访问对象,可用于在表中迭代一组行或者向表中插入新行。 | |
03 | Row | 行对象表示表中的某一行。行对象会从 InsertCursor、SearchCursor 和 UpdateCursor 中返回。 | |
04 | Array | 数组对象中可包含点和数组,它用于构造几何对象。 | |
05 | Point | 点对象经常与光标配合使用。点要素将返回单个点对象而不是点对象数组。 | |
06 | Polyline | 折线对象是由一个或多个路径定义的形状,其中路径是指一系列相连线段。 | |
07 | Polygon | 面对象是指由一系列相连的 x,y 坐标对定义的闭合形状。 | |
08 | Extent | 范围是在地图单位下提供左下角和右上角坐标指定的一个矩形。 |
序号 | 类名称 |
功能说明 |
语法 & 举例 | ||
01 | Raster |
创建一个可在 Python 脚本或地图代数表达式中使用的栅格对象。 ====<<<< Syntax >>>>==== Raster (inRaster) ====<<<< Parameters >>>>==== ◈ inRaster:输入栅格数据集。 ====<<<< Properties >>>>==== ◈ height:行数。(只读) ====<<<< Methods >>>>==== ◈ save ({name}):永久保存栅格对象引用的数据集。 |
# 获取栅格数据
arcpy.env.workspace=r"D:\01-Working\2017\20171204-IDL_Average\temp\TSM"
rs = arcpy.ListRasters()
# 遍历栅格数据获取统计信息
# 首先需要建立栅格文件
# 将数据结果保留两位小数
# 输出到txt文档中
fo = open("D:\\01-Working\\2017\\20171204-IDL_Average\\temp\\tsm_stats.txt", "w+")
for r in rs:
ro = arcpy.Raster(r)
fo.writelines(ro.name + "\n")
fo.writelines("MAX: " + str(round(ro.maximum, 2)) + "\n")
fo.writelines("MIN: " + str(round(ro.minimum, 2)) + "\n")
fo.writelines("MEAN: " + str(round(ro.mean, 2)) + "\n\n")
fo.close()
|
||
02 | Cursor |
Cursor 是一种数据访问对象,可用于在表中迭代一组行或者向表中插入新行。游标有三种形式:搜索、插入或更新。游标通常用于读取和更新属性。(不同于arcpy.da.SearchCursor) ---------------------------------------------------------------------------------- ====<<<< Methods >>>>==== ◈ deleteRow (row):删除数据库中的某一行。将删除与游标当前所在位置相对应的行。 |
import arcpy
mxd = arcpy.mapping.MapDocument("CURRENT")
lyr = arcpy.mapping.ListLayers(mxd)[0]
# 获取指定图层的游标
cursor = arcpy.UpdateCursor(lyr)
# 遍历
for row in cursor:
# 添加数值
row.setValue("AREA", 200)
# 将数据进行更新
cursor.updateRow(row)
# 将其删除
del cursor, row
cursor = arcpy.SearchCursor(lyr)
for row in cursor:
name = row.getValue("NAME")
print name
# 将其删除
del cursor, row
cursor = arcpy.InsertCursor(lyr)
for i in range(1, 10):
row = cursor.newRow()
row.setValue("NAME", "阿拉斯加")
row.setValue("ID", i)
cursor.insertRow(row)
# 将其删除
del cursor, row
|
||
03 | Row |
|
行对象表示表中的某一行。行对象会从 InsertCursor、SearchCursor 和 UpdateCursor 中返回。 ====<<<< Methods >>>>==== ◈ getValue (field_name):获取字段值。 |
||
04 | Array |
数组对象中可包含点和数组,它用于构造几何对象。 ====<<<< Syntax >>>>==== Array ({items}) ====<<<< Parameters >>>>==== ◈ items:项目可以包含列表、点对象或另一个数组对象。 ====<<<< Methods >>>>==== ◈ add (value):将点或数组对象添加到数组的结尾处。 ====<<<< Attributes >>>>==== ◈ count:数组的元素个数。 |
# 创建以元组为元素的列表 >>> coords = [(1, 2), (1, -2), (-1, -2), (-1, 2), (1, 2)] # 创建空的数组对象 >>> ar = arcpy.Array() >>> ar <Array []> # 通过循环,将列表信息以点的形式添加到数组对象中 >>> for x, y in coords: ... ar.add(arcpy.Point(x, y)) ... # 查看数组对象 >>> ar <Array [<Point (1.0, 2.0, #, #)>, <Point (1.0, -2.0, #, #)>, <Point (-1.0, -2.0, #, #)>, <Point (-1.0, 2.0, #, #)>, <Point (1.0, 2.0, #, #)>]> # 创建列表 >>> coords = [(1, 2), (1, -2), (-1, -2), (-1, 2), (1, 2)] # 转化为含有 Point 对象的列表 >>> points = [arcpy.Point(x, y) for x, y in coords] # 定义数组对象并显示 >>> ar1 = arcpy.Array(points) >>> ar1 <Array [<Point (1.0, 2.0, #, #)>, <Point (1.0, -2.0, #, #)>, <Point (-1.0, -2.0, #, #)>, <Point (-1.0, 2.0, #, #)>, <Point (1.0, 2.0, #, #)>]>
|
||
05 |
Point |
点对象经常与光标配合使用。点要素将返回单个点对象而不是点对象数组。而其他要素类型(面、折线和多点)都将返回一个点对象数组,并且当这些要素具有多个部分时,则返回包含多个点对象数组的数组。 ====<<<< Syntax >>>>==== Point ({X}, {Y}, {Z}, {M}, {ID}) ====<<<< Parameters >>>>==== ◈ X:点的 X 坐标。 ====<<<< Methods >>>>==== ◈ clone ():克隆点对象。 ====<<<< Attributes >>>>==== ◈ ID:唯一标识点的整数。 |
# 通过元组列表创建 Point 数组 >>> coords = [(1, 2), (1, -2), (-1, -2), (-1, 2), (1, 2)] # 通过这样的形式创建 Point >>> points = [arcpy.Point(x, y) for x, y in coords] # 创建 Point 数组并显示 >>> arr = arcpy.Array(points) >>> arr <Array [<Point (1.0, 2.0, #, #)>, <Point (1.0, -2.0, #, #)>, <Point (-1.0, -2.0, #, #)>, <Point (-1.0, 2.0, #, #)>, <Point (1.0, 2.0, #, #)>]> # 通过列表列表创建Point数组 >>> coords = [[1, 2], [1, -2], [-1, -2], [-1, 2], [1, 2]] # 通过这样的形式创建 Point >>> points = [arcpy.Point(*p) for p in coords] # 创建 Point 数组并显示 >>> arr = arcpy.Array(points) >>> arr <Array [<Point (1.0, 2.0, #, #)>, <Point (1.0, -2.0, #, #)>, <Point (-1.0, -2.0, #, #)>, <Point (-1.0, 2.0, #, #)>, <Point (1.0, 2.0, #, #)>]> # 另外一种读取方法 >>> coords = [[1, 2], [1, -2], [-1, -2], [-1, 2], [1, 2]] >>> points = [arcpy.Point(x, y) for x, y in coords]
|
||
06 | Polyline |
折线对象是由一个或多个路径定义的形状,其中路径是指一系列相连线段。 ====<<<< Syntax >>>>==== Polyline (inputs, {spatial_reference}, {has_z}, {has_m}) ====<<<< Parameters >>>>==== ◈ inputs:用来创建对象的坐标。数据类型可以是点或者数组对象。 ====<<<< Methods >>>>==== ◈ boundary ():构造几何边界。面→线、线→点、点→空 ====<<<< Attributes >>>>==== ◈ extent:几何范围。 |
|||
07 | Polygon |
面对象是指由一系列相连的 x,y 坐标对定义的闭合形状。 ====<<<< Syntax >>>>==== Polygon (inputs, {spatial_reference}, {has_z}, {has_m}) ====<<<< Parameters >>>>==== ◈ inputs:用来创建对象的坐标。数据类型可以是点或者数组对象。 ====<<<< Methods >>>>==== ◈ boundary ():构造几何边界。面→线、线→点、点→空 ====<<<< Attributes >>>>==== ◈ area:面要素的面积。 |
Polygon 解析: 一个 Polygon 含有多个部分,需要通过 for 循环读取,每个部分是一个 Array 对象 一个 Array 对象内部包括 N 个 Point,需要通过 for 循环读取每个 Point # 获取 China 所对应的 Geometry >>> cursor = arcpy.da.SearchCursor("CNTRY92", "SHAPE@", "NAME = 'China'") # 读取符合条件的 Geometry 为一个列表,只有一个元素 >>> polygons = [row[0] for row in cursor] >>> len(polygons) 1 # 获取 China 对应的 Polygon >>> china = polygons[0] # 判断 China 对应的 Polygon 是否为多部分的 >>> china.isMultipart True >>> china.partCount 2 >>> china.pointCount 839 # 获取每一部分为一个列表,part 对应 Array 对象 >>> lands = [part for part in china] >>> lands # 包括 2 个部分,每个部分都是包含 Point 的 Array 对象 >>> len(lands) 2 # 将 Array 转换为 list >>> points = [pnt for pnt in lands[0]] # 通过 Array 建立新的 Polygon 并输出 >>> mainland = arcpy.Polygon(lands[1]) >>> arcpy.CopyFeatures_management(mainland, "mainland.shp") <Result 'D:\\McDelfino\\Documents\\ArcGIS\\mainland.shp'>
|
||
08 | Extent |
范围是在地图单位下提供左下角和右上角坐标指定的一个矩形。 ====<<<< Syntax >>>>==== Extent ({XMin}, {YMin}, {XMax}, {YMax}, {ZMin}, {ZMax}, {MMin}, {MMax}) ====<<<< Parameters >>>>==== ◈ XMin:范围 XMin 值。 ====<<<< Methods >>>>==== ◈ contains / crosses / disjoint / equals / overlaps / touches / within ====<<<< Attributes >>>>==== ◈ XMin:范围 XMin 值。 |
>>> e2 = df.extent >>> e2.XMax 149.1029612143459 >>> e2.XMin 64.02167430592488 >>> e2.YMax 50.20513847572508 >>> e2.YMin 18.71509185629973 >>> e2.MMax >>> e2.ZMax >>> pnt = e2.lowerLeft >>> pnt <Point (64.0216743059, 18.7150918563, #, #)> >>> e2.height 31.49004661942535 >>> e2.width 85.08128690842102 |
||
- |
---- |
-------------------------------------------------- |
posted on 2018-01-10 08:35 McDelfino 阅读(1210) 评论(0) 编辑 收藏 举报