一、背景

各地区经济协调发展是保证国民经济健康持续稳定增长的关键。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实现)的更多相关文章

  1. 国内app快速生成平台对比

     泰格老虎 2013-03-07 00:39:10 这是海恒CEO高鹏写的一篇国内app快速生成平台对比文章,介绍了国内快速生成APP的平台与自己平台的对比,很有参考价值. 同类网站 安米网 http ...

  2. UIImage类方法总结及UIImage生成方法对比

    http://mp.weixin.qq.com/s/A900w0Y5pGjuaB4j9Os9ww1.UIImage 生成方法的对比 Apple官方的文档为生成一个UIImage对象提供了两种方法: 1 ...

  3. 从生成文件对比两种创建虚拟机的方式:boot from image和boot from bootable-volume

    1. 创建bootable-volume(参考:http://docs.openstack.org/grizzly/openstack-compute/admin/content/instance-c ...

  4. 使用Jmeter聚合报告生成对比图表

    背景 最近在帮别的项目组执行性能测试,使用的工具是Jmeter.接口录制和参数化前一个人已经做好了,我主要的工作就是执行脚本,撰写测试报告.事情并不复杂,可做起来却极为耗时. 首先,由于有6组账号,分 ...

  5. 生成模型(Generative Model)和 判别模型(Discriminative Model)

    引入 监督学习的任务就是学习一个模型(或者得到一个目标函数),应用这一模型,对给定的输入预测相应的输出.这一模型的一般形式为一个决策函数Y=f(X),或者条件概率分布P(Y|X). 监督学习方法又可以 ...

  6. SpringMvc项目中使用GoogleKaptcha 生成验证码

    前言:google captcha 是google生成验证码的一个工具类,其原理是将随机生成字符串保存到session中,同时以图片的形式返回给页面,之后前台页面提交到后台进行对比. 1.jar包准备 ...

  7. C# 处理Word自动生成报告 一、概述

    经常遇到这样的需求, 生成Word格式的报告, 而不是单纯的一张表格的报表.  就像体检报告一样. 数据来源部分决定采用一个存储过程返回Dataset的方式, 整张报告的数据来源于此Dataset的多 ...

  8. C# 处理Word自动生成报告 三、设计模板

    C# 处理Word自动生成报告 一.概述 C# 处理Word自动生成报告 二.数据源例子 C# 处理Word自动生成报告 三.设计模板 C# 处理Word自动生成报告 四.程序处理 既然是模板就少不了 ...

  9. swagger 自动生成接口测试用例

    ---整体更新一波--- 1.实际工作中,因为要动手输入的地方比较多,自动生成的异常接口用例感觉用处不大,就先去掉了,只保留了正常的: 2.接口有改动的,如果开发人员没有及时告知或没有详细告知,会增加 ...

随机推荐

  1. 整型:int

    整型:int 整型变量的定义和输出 注意://short<=int<=long<=longlong   代码示例一:   #include<stdio.h> int ma ...

  2. 为什么Class实例可以不是全局唯一的——自定义类加载器

    为什么Class实例可以不是全局唯一的 通过定义两个类加载器加载同一字节码文件来证明Class实例为什么不是全局唯一的 1.将一个名为Demo(没有后缀)的字节码文件放在D盘根目录 2.定义两个类加载 ...

  3. noip模拟47

    原版在 \(linux\) 本地写完没保存关机给没了-- 再简单写一下 \(t2\) 用 \(dp\) 转移 \(f[i]=\sum _ {j=last[a[i]]}^{i-1} f[j]\) 用前缀 ...

  4. Appium问题解决方案(9)- Original error: Failed to launch Appium Settings app: Condition unmet after 5090 ms

    背景 执行代码报错 解决方法 该问题并不常见,主要是手机操作系统的问题 程序无法无法自动打开appiumsettings,那么我们可以手动打开appiumsettings服务(程序没有界面,会出现打开 ...

  5. npm 淘宝镜像与官方源 切换

    1.临时使用 npm --registry https://registry.npm.taobao.org install 包名 2.永久设置为淘宝镜像 npm config set registry ...

  6. 数据导出生成Excel附件使用POI的HSSFWorkbook对象

    比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel.Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多组 ...

  7. Linux残留的EFI启动项删除后又恢复的问题

    电脑Windows + Fedora双系统,UEFI启动,共用同一个EFI分区.现在删除了Fedora系统,那么应该将EFI分区中的Fedora启动项也删除之. 按照网上的办法,在Windows上,尝 ...

  8. JEECG代码审计之文件上传

    JEECG代码审计之文件上传 0x01 简述 JEECG(J2EE Code Generation)是一款基于代码生成器JEE的智能开发平台.引领新的开发模式(Online Coding->代码 ...

  9. [Linux系列]DNS系列理论笔记与DNS服务器配置

    0x01 基础术语 DNS(Domain Name System,域名系统),域名和IP地址相互映射的一个分布式数据库,简而言之就是通过更易记忆的域名代替IP去访问一个网站. FQDN(Fully Q ...

  10. 定时器及PWM

    1 定时器 1.1 定时器分类 对于STM32来说,定时器可分为基本定时器.通用定时器.高级定时器三类,后者包括前者的全部功能.以stm32f1系列为例,TIM6和TIM7为基本定时器,TIM2~TI ...