arcgis pro之arcpy使用记录

所有函数在使用前应该在ArcGIS Pro Python 参考—ArcGIS Pro | 文档查看详细的功能说明以及对应的参数解释,本文只记录实现特定功能时所需调用的函数以及使用过程中的注意事项,避免在遇到某些需求时像无头苍蝇一样。

读取文件

栅格数据

# 读取哨兵2号文件,可以直接读取xml文件,默认返回10m分辨的栅格
s2_10m = arcpy.Raster("E:\\S2B_MSIL2A_*_*_*_*_*.SAFE\\MTD_MSIL2A.xml")
# 获取s2_10m在x方向的cell size
cellsizex = arcpy.management.GetRasterProperties(s2_10m, 'CELLSIZEX').getOutput(0)

shapefile

​ 不需要显式的读取shp,给出shp的路径,在需要shp时,直接传入路径即可

path_shp = "E:\\roi.shp"
s2_clip = arcpy.sa.ExtractByMask(s2_10m, path_shp, "INSIDE")  # 利用roi提取s2_10m的对应区域

创建要素

​ 目前用到了创建点、圆、圆的外接矩形

创建点

​ 给出的点坐标要与坐标系对应,比如给出了点的经纬度,点的坐标系就应该是合适的地理坐标系,不能为如UTM等投影坐标系,即点的真实坐标系与属性坐标系一致,理解不同坐标系之间的区别,参考科学网—ArcGIS中的坐标系:基本概念和常用操作 - 李郎平的博文 (sciencenet.cn)

pnt = arcpy.Point(125.2, 44.7)  # 创建点,不是点要素
pnt_fc = arcpy.PointGeometry(pnt_93, spatial_reference=sr)  # sr为点坐标对应的坐标系
arcpy.management.CopyFeatures(pnt_fc, path_dst)  # 保存为shp

创建圆

​ 创建圆要用Buffer实现

circle_fc = arcpy.management.CreateFeatureclass(dir_save, name_save, 'POLYGON', spatial_reference=sr)  # 创建一个面要素类
circle = arcpy.analysis.Buffer(pnt_fc, circle_fc, "3000 Meters")  # 以pnt_fc为圆心,画一个半径为3000m的圆,结果保存到circle_fc

创建外接矩形

arcpy.management.MinimumBoundingGeometry(circle, path_dst, "ENVELOPE", "NONE", None, "MBG_FIELDS")

一些操作

按mask提取

​ 用ExtractByMask会在工作空间自动生成tif文件,目前没找到如何自定义生成文件的名称,利用save可以自定义保存路径及文件名

with arcpy.EnvManager(cellSize=s2_10m):  # 设置cellsize与s2_10m一致
    rect_raster = arcpy.sa.ExtractByMask(raster, mask, "INSIDE")
    rect_raster.save(path_save)

创建渔网

# origin_coord为渔网的原点,可以自定义或者从模板栅格中读取一个顶点作为原点;
# y_coord为y轴的方向,不能与origin_coord相同,如果渔网不旋转,x可以与origin_coord相同,y在y轴正向加一个值即可
# origin_coord,y_coord均为字符串格式,如"123.3333 44.444"
# 如果规定了cell_width, cell_height,则number_rows,number_columns应该留空,反之亦然
arcpy.management.CreateFishnet(path_save, origin_coord, y_coord, cell_width, cell_height, number_rows, number_columns, template=rect_raster, labels='LABELS', geometry_type="POLYGON")

生成近邻表

# 计算near中元素到origin中元素的距离
arcpy.analysis.GenerateNearTable(origin, near, path_dst, None, "LOCATION", "NO_ANGLE", "ALL", 0, "GEODESIC")
# 保存为dbf格式,arcgis可以读取
arcpy.conversion.TableToTable(src_table, dir_dst, name_dst)

表与属性表关联

# 按照src_table里的NEAR_FID字段与dst_table里的FID字段的对应关系,将src_table数据关联到dst_table
joined = arcpy.management.JoinField(dst_table, "FID", src_table, "NEAR_FID")

shapefile转栅格

# 将src转为栅格,利用NEAR_DIST字段给栅格文件赋值,保存到dst
arcpy.conversion.PolygonToRaster(src, "NEAR_DIST", dst, "CELL_CENTER", "NONE", 10, "BUILD")

读取栅格为numpy array

array = arcpy.RasterToNumPyArray(raster,nodata_to_value=1000)

你可能感兴趣的:(arcgis,pro使用记录,arcgis,python)