基于python(arcpy模块)对栅格数据求取加权重心(MeanCenter)

您所在的位置:网站首页 arcgis重心迁移距离 基于python(arcpy模块)对栅格数据求取加权重心(MeanCenter)

基于python(arcpy模块)对栅格数据求取加权重心(MeanCenter)

2024-07-16 07:47| 来源: 网络整理| 查看: 265

加权重心是研究区域中所有要素的平均 x 坐标和 y 坐标。平均中心对于追踪分布变化,以及比较不同类型要素的分布非常有用。在ARCGIS中我们可以利用平均中心这一工具轻松实现这一操作。但当文件较多时,arcgis耗时耗力,借助arcpy便可轻松实现这一过程。首先来了解一下平均中心的算法。

这是arcgis官方使用说明,在arcpy中我们用MeanCenter()函数来实现。不过需要注意的是,此函数的输入数据格式为shp数据,故我们手里的栅格数据还不能直接进行输入,需经过处理。可以将栅格数据转换成点数据,也可以转换成面数据。本文将栅格转化成点数据。同样使用arcgis中的栅格转点工具,批量操作可以使用arcpy调用转点函数。代码如下:

 

# -*- coding:utf-8 -*- import arcpy from arcpy import env from arcpy.sa import * import os arcpy.CheckOutExtension("spatial") arcpy.env.workspace = r"/你的文件路径/" Rasters = arcpy.ListRasters("*","tif") outpath = r"/保存路径/" for raster in Rasters: out_point = outpath + str(raster).split('.')[0] + ".shp"#定义输出文件名字 arcpy.RasterToPoint_conversion(raster, out_point, "Value") print(out_point + "has done") print("over")

转换完毕之后便可以进行求取平均中心操作

# -*- coding:utf-8 -*- import arcpy from arcpy import env from arcpy.sa import * import os arcpy.CheckOutExtension("spatial") arcpy.env.workspace =r"文件路径" files = arcpy.ListFeatureClasses("*.shp") outpath = r"输出路径" for f in files: outname = os.path.join(outpath,str(f).split('.')[0]+"center" + ".shp") arcpy.MeanCenter_stats(f, outname, "grid_code") print(outname + " has done") print("over")

ok,搞定。arcpy功不可没,用最简单的代码实现了复杂的操作。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3