GDP区域分布图的生成与对比(ArcPy实现)
阅读原文时间:2023年07月08日阅读:2

一、背景

各地区经济协调发展是保证国民经济健康持续稳定增长的关键。GDP是反映各地区经济发展状况的重要指标。科学准确分析各地区GDP空间分布特征,对制定有效措施,指导经济协调发展具有重要参考价值。

二、目的

ArcGis中提供了中提供了三种空间插值方法,每种插值方法在原理上和应用上都大不相同,在此通过具体实例练习如何利用内插方法和卸内插方法进行GDP空间分布特征的分析,以此来引导读者对空间插值有一个更深刻的认识。

三、数据

某地区的统计GDP数据(GDP.shp),数据范围:4601万~132630万元。(\Chp8\Ex4\)

四、要求

*1) 经济的发展具有一定的连带效应和辐射作用。以该地区各区域年GDP数据为依据,采用IDW和Spline内插方法创建该地区GDP空间分异栅格图。

*2)分析每种插值方法中主要参数的变化对内插结果的影响。

*3)分析两种内插方法生成的GDP空间分布图的差异性,简单说明形成差异的主要原因。

*4)通过该练习,熟练掌握两种插值方法的适用条件。

五、流程图

  • (1)反距离权重(IDW)内插方法流程:

  • (2)样条函数(Spline)内插方法流程:

  • (3)两种方法之间的对比,通过空间分析中【栅格计算器】命令来进行分析。选择反距离权重(Power=2),样条函数(Regularized,Weight=0.01)。在【栅格计算器】中计算Abs (IDW-Spline),比较二者产值变化空间分异特征。

六、模型构建器

七、ArcPy实现

注:栅格计算器工具专门用于 ArcGIS for Desktop 应用程序(仅作为 GP 工具对话框)或模型构建器。它不适用于脚本的编写,而且也不能用于 ArcPy Spatial Analyst 模块。所以给模型里的栅格计算器里的运算全部分成两部,即相减并取绝对值。

# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------
# 8-4GDP区域分布图的生成与对比.py
# Created on: 2021-10-10 20:21:39.00000
#   (generated by ArcGIS/ModelBuilder)
# Description:
# ---------------------------------------------------------------------------

# Import arcpy module
import arcpy
from arcpy import Raster
from arcpy.sa import Abs
import os
import shutil

path = raw_input("请输入数据所在的绝对路径:").decode("utf-8")
paths = os.path.split(path)[0] + "\\result"
if not os.path.exists(paths):
    os.mkdir(paths)
else:
    shutil.rmtree(paths)
    os.mkdir(paths)

# Local variables:
GDP = path + "\\GDP.shp"
IDW2 = "IDW2"
IDW5 = "IDW5"
Spr0 = "Spr0"
Spr01 = "Spr01"
Spt0 = "Spt0"
Spt5 = "Spt5"

# Set Geoprocessing environments
print "Set Geoprocessing environments"
arcpy.env.workspace = paths
arcpy.env.scratchWorkspace = paths
arcpy.env.mask = path + "\\bound.shp"

# Process: 反距离权重法
print "Process: 反距离权重法"
arcpy.gp.Idw_sa(GDP, "GDP", IDW2, "500", "2", "VARIABLE 12", "")

# Process: 反距离权重法 (2)
print "Process: 反距离权重法 (2)"
arcpy.gp.Idw_sa(GDP, "GDP", IDW5, "500", "5", "VARIABLE 12", "")

# Process: Process: IDW2_IDW5相减并取绝对值
print "Process: IDW2_IDW5相减并取绝对值"
# arcpy.gp.RasterCalculator_sa("Abs(\"%IDW2%\" - \"%IDW5%\")", IDW2_IDW5)
Abs(Raster(IDW2) - Raster(IDW5)).save("IDW2_IDW5")

# Process: 样条函数法
print "Process: 样条函数法"
arcpy.gp.Spline_sa(GDP, "GDP", Spr0, "500", "REGULARIZED", "0", "12")

# Process: 样条函数法 (2)
print "Process: 样条函数法 (2)"
arcpy.gp.Spline_sa(GDP, "GDP", Spr01, "500", "REGULARIZED", "0.01", "12")

# Process: Process: Spr0_Spr01相减并取绝对值
print "Process: Spr0_Spr01相减并取绝对值"
# arcpy.gp.RasterCalculator_sa("Abs(\"%Spr0%\" - \"%Spr01%\")", Spr0_Spr01)
Abs(Raster(Spr0) - Raster(Spr01)).save("Spr0_Spr01")

# Process: 样条函数法 (3)
print "Process: 样条函数法 (3)"
arcpy.gp.Spline_sa(GDP, "GDP", Spt0, "500", "TENSION", "0", "12")

# Process: 样条函数法 (4)
print "Process: 样条函数法 (4)"
arcpy.gp.Spline_sa(GDP, "GDP", Spt5, "500", "TENSION", "5", "12")

# Process: Spt0_Spt5相减并取绝对值
print "Process: Spt0_Spt5相减并取绝对值"
# arcpy.gp.RasterCalculator_sa("Abs(\"%Spt0%\" - \"%Spt5%\")", Spt0_Spt5)
Abs(Raster(Spt0) - Raster(Spt5)).save("Spt0_Spt5")

# Process: Process: IDW2_Spr01相减并取绝对值
print "Process: IDW2_Spr01相减并取绝对值"
# arcpy.gp.RasterCalculator_sa("Abs(\"%IDW2%\" - \"%Spr01%\")", IDW2_Spr01)
Abs(Raster(IDW2) - Raster(Spr01)).save("IDW2_Spr01")

rasters = arcpy.ListRasters()
for raster in rasters:
    if u"_" not in raster:
        print u"正在删除{}图层".format(raster)
        arcpy.Delete_management(raster)
print "运行完毕~~~"

八、结果

实验结束 byebye~

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章