(三)Arcpy 点数据插值

文章详细描述了如何利用Arcpy库在地理信息系统中对江苏省县区级行政区域的人口数据进行插值,包括IDW、Kriging和Spline插值方法,并提供了从Arcmap复制代码片段的步骤。后续将展示如何制作人口分布图和地级市裁剪应用。
摘要由CSDN通过智能技术生成


前言:

本系列Arcpy实验包含以下内容:

  1. 提取江苏省县区级行政区域的质心,形成一个点类型shape文件,至少含有县区名称属性;
  2. 将2021年各区数据整理为excel数据,两列,一列为县区名称,一列为2021年县区常住人口;
  3. 编写一个脚本工具,将县区常住人口数据作为属性值附加到县区质心点数据上;
  4. 编写脚本工具,对江苏2021年常住人口数据进行插值,插值方法任选;
  5. 制作一个绘图模版,绘制江苏各地级市2021年人口分布图(注意是地级市,需要用地级数据分别裁剪人口分布数据)。

Arcpy 提取面要素文件的质心

Arcpy 从Excel(县区常住人口数据)获取属性值并附加到质心点数据上

通过之前的文章,已经有了江苏省县区级行政区域的质心点矢量shape文件,并且给这个点矢量数据增加了人口数量属性,现在需要对其进行插值,以期得到江苏2021年人口分布图。

Arcmap中的插值方法有很多,不同插值方法需要设置的参数不一样,对应于代码如何写,其中的参数有哪些可能对我们编写代码是一个挑战。

解决办法也很简单,直接从Arcmap中复制代码片段。大致步骤为先在软件上试运行一次,然后在结果窗口中,在当前会话找到刚刚的操作,右键-复制为 Python 代码片段,最后根据实际情况略微调整参数即可,这种方法同样适合其它工具。
在这里插入图片描述

04-人口数量点数据插值

【目的要求】:

编写脚本工具,对江苏2021年常住人口数据进行插值,插值方法任选。

【主要思路】:

插值方法主要是其参数的设置,可以先在Arcmap中找到对应插值工具试运行一次。
接着在菜单栏:【地图处理】-【结果】的当前会话中找到试运行记录,右键-【复制为python代码片段】,然后根据实际情况略微修改代码。

【实现步骤】:

  • 为了将插值结果自动添加到当前图层查看效果,先定义添加文件到当前图层的函数add_currentMxd()
    在这里插入图片描述
  • 插值需提前设置掩膜文件,这样的结果才不会是矩形,这一步相当于在环境设置进行掩膜。
    在这里插入图片描述
  • IDW插值-反距离权重法与Kriging插值-克里金法的参数设置:
    在这里插入图片描述
  • 人口数据插值脚本工具的界面如下所示:
    在这里插入图片描述

【实验结果】:

【脚本使用说明】:人口数据进行插值脚本工具,需要输入属性表中含有人口数量的质心点数据,设置输出文件夹路径,掩膜文件。在插值方法中可自由选择IDW、Kriging、Spline插值方法,默认使用IDW插值方法。
填写相关参数,在Arcmap中运行该脚本,IDW、Kriging、Spline插值结果分别如下所示:
在这里插入图片描述

源代码(仅供参考):

# -*- coding: GB2312 -*-
# (4)编写脚本工具,对江苏2021年常住人口数据进行插值,插值方法任选;
import arcpy


# 定义添加文件到当前图层的函数add_currentMxd()
def add_currentMxd(fileDir):
    mxd = arcpy.mapping.MapDocument("CURRENT")
    df = arcpy.mapping.ListDataFrames(mxd)[0]
    addLayer = arcpy.mapping.Layer(fileDir)
    arcpy.mapping.AddLayer(df, addLayer, "AUTO_ARRANGE")
    # 图层刷新
    arcpy.RefreshActiveView()
    arcpy.RefreshTOC()
    del mxd


arcpy.env.overwriteOutput = True
# 文件路径设置
pointFile = arcpy.GetParameterAsText(0)  # 插值点文件
outFolder = arcpy.GetParameterAsText(1)  # 输出文件夹
outFile = outFolder + "/JS_County_Point3_"
# 环境设置
maskFile = arcpy.GetParameterAsText(2)  # 掩膜文件
arcpy.env.workspace = "D:/Geo_Task/WorkSpace"  # 设置工作空间
arcpy.env.mask = maskFile  # 设置掩膜文件
arcpy.env.extent = maskFile  # 设置处理范围
arcpy.CheckOutExtension("Spatial")

IDW_Flag = arcpy.GetParameterAsText(3)
Kriging_Flag = arcpy.GetParameterAsText(4)
Spline_Flag = arcpy.GetParameterAsText(5)

# 插值参数设置
zField = "Num"  # 插值字段:Z值字段
# 输出文件名称设置
IDW_outFileName = "IDW_1.tif"
Kriging_outFileName = "Kriging_1.tif"
Spline_outFileName = "Spline_1.tif"
# 输出像元大小设置
cellSize = "1.74676370500002E-02"

# IDW插值-反距离权重法
if IDW_Flag == 'true':
    arcpy.AddWarning("IDW插值中……")
    arcpy.gp.Idw_sa(pointFile,  # 输入点要素
                    zField,  # Z值字段
                    # 输出栅格路径
                    outFile + IDW_outFileName,
                    cellSize,  # 输出像元大小
                    "2",
                    "VARIABLE 12",  # 搜索半径点数
                    "")
    arcpy.AddMessage("IDW插值完成!")
    add_currentMxd(outFile + IDW_outFileName)

# Kriging插值-克里金法
if Kriging_Flag == 'true':
    arcpy.AddWarning("Kriging插值中……")
    arcpy.gp.Kriging_sa(pointFile,
                        zField,
                        outFile + Kriging_outFileName,
                        # 半变异模型-球面函数,步长大小
                        "Spherical 0.015495",
                        cellSize,
                        "VARIABLE 12",  # 搜索半径点数
                        "")
    arcpy.AddMessage("Kriging插值完成!")
    add_currentMxd(outFile + Kriging_outFileName)

# Spline插值-样条函数法
if Spline_Flag == 'true':
    arcpy.AddWarning("Spline插值中……")
    arcpy.gp.Spline_sa(pointFile,
                       zField,
                       outFile + Spline_outFileName,
                       cellSize,
                       "TENSION",  # 样条函数类型
                       "0.1",  # 权重
                       "12"  # 点数
                       )
    arcpy.AddMessage("Spline插值完成!")
    add_currentMxd(outFile + Spline_outFileName)

arcpy.AddMessage("插值结束!")
arcpy.AddWarning("生成文件已添加至当前图层!")	

结语

总结

本文主要介绍了如何利用Arcpy对点矢量数据进行插值,介绍了如何从Arcmap中复制代码片段的方法。

下文预告:

获取了江苏省的人口分布图,下面就是出图了。
接下来的文章会介绍如何绘制江苏各地级市2021年人口分布图并批量导出各地级市的人口分布图。(注意是地级市,需要用地级数据分别裁剪人口分布数据)。

如果对你有所帮助,还请顺手点个赞,感谢你看到这,祝你生活愉快!

  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lucky_云佳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值