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.接口有改动的,如果开发人员没有及时告知或没有详细告知,会增加 ...
随机推荐
- 详细解读go语言中的map
Map map底层是由哈希表实现的 Go使用链地址法来解决键冲突. map本质上是一个指针,指向hmap 这里的buckets就是桶,bmap 每一个bucket最多可以放8个键值对,但是为了让内存排 ...
- 「萌新指南」SOA vs. 微服务:What’s the Difference?
实话实说,在我还没有实习之前,我是连 SOA 是啥都不知道的,只听说过微服务,毕竟微服务实在太火了,想不知道都难,我觉得实习的时候肯定也是微服务,进组之后发现是 SOA 架构,当时都懵了,看了很多文档 ...
- 实例说明C++的virtual function的作用以及内部工作机制初探
C++为何要引入virtual function? 来看一个基类的实现: 1 class CBase 2 { 3 public: 4 CBase(int id) : m_nId(id), m_pBas ...
- 【XSS】XSS修炼之独孤九剑
题目地址 xcao.vip/test 题目作者给出的解题思路 http://xcao.vip/test/xss/XSS修炼之独孤九剑.pdf 独孤九剑-第一式 题目 过滤了等号 =.小括号 (),要求 ...
- Tars | 第3篇 Tars中期汇报测试文档(Java语言实现Subset路由规则)
目录 前言 1. 任务介绍 2. 测试模拟方案 2.0 *前置工作 2.1 添加路由规则 2.2 添加存活节点 2.3 [输出]遍历输出当前存活节点 2.4 [核心]对存活节点按subset规则过滤 ...
- 推荐一款编程字体:Iosevka
最近发现一款很好用的编程字体:Iosevka.它是一款现代化的编程字体集合,除了等宽.oO0 iIl1明显区分等基本特性外,还有很多非常现代的特性,比如: 多种风格:有非常多的字形可供选择,衬线/非衬 ...
- unity2021游戏引擎安装激活并汉化
今天重新搭建了下unity的开发环境,也踩了不少坑,还有就是看了一些unity3d的教程,越看越不可思议,unity居然能做这么多好玩的东西,像枪战类,模拟类,角色扮演,动作冒险都很震撼. 但是震撼归 ...
- C# 获得当前方法 和 方法调用链 的 方法
一个获得方法名的方法,depth表示调用此方法的回溯深度. 比如,A方法调用B方法,B方法调用GetCurrentMethodFullName(2),那么得到的结果是A方法的全名(namespace+ ...
- freeswitch刷新网关方法
1.freeswitch xml配置文件新增网关后,使其生效,可以重启freeswitch或者使用命令方式 fs_cli -H 127.0.0.1 -P 8021 -p hmzj -x sofia p ...
- K8s Master当作Node使用的方法
1.使用下面的命令操作使得master 可以作为node使用 承载pod kubectl taint nodes --all node-role.kubernetes.io/master- 可能会出现 ...