第八章 ArcGIS地理建模DOC.docx
《第八章 ArcGIS地理建模DOC.docx》由会员分享,可在线阅读,更多相关《第八章 ArcGIS地理建模DOC.docx(29页珍藏版)》请在冰豆网上搜索。
第八章ArcGIS地理建模DOC
第八章ArcGIS地理建模
空间分析具有对空间信息的提取和传输功能,作为各类综合性地学分析模型的基础,空间分析为建立复杂的模型提供了基本工具。
空间分析模型是指用于GIS空间分析的数学模型,空间分析建模是指运用GIS空间分析建立数学模型的过程,其过程包括:
明确问题、分解问题、组建模型、检验模型结果和应用分析结果。
本章主要介绍如下内容:
◆空间分析建模的概念和过程
◆图解模型的形成过程
◆模型生成器基本操作
◆脚本文件的编写与运行
◆空间建模操作过程
8.1空间分析模型与建模
8.1.1空间分析模型及其分类
模型是对现实世界中的实体或现象的抽象或简化,是对实体或现象中最重要的构成及其相互关系的表述。
建模的过程中,需要用到各种各样的工具。
作为各类综合性地学分析模型的基础,空间分析为人们建立复杂的模型提供了基本工具。
空间分析是地理信息系统的主要特征,也是评价一个地理信息系统功能的主要指标之一。
它是基于地理对象的位置和形态特征的数据分析技术,其目的在于提取和传输可见信息。
空间分析模型是对现实世界科学体系问题域抽象的空间概念模型,与广义的模型既有联系,又有区别:
(1)空间定位是空间分析模型特有的性质,构成空间分析模型的空间目标(点、弧段、网络、面域、复杂地物等)的多样性决定了空间分析模型建立的复杂性。
(2)空间关系也是空间分析模型的一个重要特征,空间层次关系、相邻关系以及空间目标的拓扑关系也决定了空间分析模型建立的特殊性。
(3)包含坐标、高程、属性以及时序特征的空间数据极其庞大,大量的空间数据通常用图形的方式来表示,这样由空间数据构成的空间分析模型也具有了可视化的图形特征。
空间分析模型可以分为以下几类:
1.空间分布模型
用于研究地理对象的空间分布特征。
主要包括:
空间分布参数的描述,如分布密度和均值、分布中心、离散度等;空间分布检验,以确定分布类型;空间聚类分析,反映分布的多中心特征并确定这些中心;趋势面分析,反映现象的空间分布趋势;空间聚合与分解,反映空间对比与趋势。
2.空间关系模型
用于研究基于地理对象的位置和属性特征的空间物体之间的关系。
包括距离、方向、连通和拓扑四种空间关系。
其中,拓扑关系是研究得较多的关系;距离是内容最丰富的一种关系;连通用于描述基于视线的空间物体之间的通视性;方向反映物体的方位。
3.空间相关模型
用于研究物体位置和属性集成下的关系,尤其是物体群(类)之间的关系。
在这方面,目前研究得最多的是空间统计学范畴的问题。
统计上的空间相关、覆盖分析就是考虑物体类之间相关关系的分析。
4.预测、评价与决策模型
用于研究地理对象的动态发展,根据过去和现在推断未来,根据已知推测未知,运用科学知识和手段来估计地理对象的未来发展趋势,并做出判断与评价,形成决策方案,用以指导行动,以获得尽可能好的实践效果。
8.1.2空间分析建模
空间分析建模是指运用GIS空间分析方法建立数学模型的过程,运用数学分析方法建立表达式,模拟地理现象的形成过程的模型称为过程模型,也叫处理模型。
过程模型的类型很多,用于解决各种各样的实际问题。
例如:
适宜性建模:
农业应用、城市化选址、道路选择等;
水文建模:
水的流向;
表面建模:
城镇某个地方的污染程度;
距离建模:
从出发点到目的地的最佳路径的选择、邮递员的最短路径等;
这类模型的建立过程如下,流程如图12.1所示:
1.明确问题:
分析的问题的实际背景,弄清建立模型的目的,掌握所分析的对象的各种信息,即明确实际问题的实质所在,不仅要明确所要解决的问题是什么,要达到什么样的目标,还要明确实际问题的具体解决途径和所需要的数据;
2.分解问题:
找出与实际问题有关的因素,通过假设把所研究的问题进行分解、简化,明确模型中需要考虑的因素以及它们在过程中的作用,并准备相关的数据集;
3.组建模型:
运用数学知识和GIS空间分析工具来描述问题中的变量间的关系;
4.检验模型结果:
运行所得到的模型、解释模型的结果或把运行结果与实际观测进行对比。
如果模型结果的解释与实际状况符合或结果与实际观测基本一致,这表明模型是符合实际问题的。
如果模型的结果很难与实际相符或与实际很难一致,则表明模型与实际不相符,不能将它运用到实际问题。
如果图形要素、参数设置没有问题的话,就需要返回到建模前关于问题的分解。
检查对于问题的分解、假设是否正确,参数的选择是否合适,是否忽略了必要的参数或保留了不该保留的参数,对假设做出必要的修正,重复前面的建模过程,直到模型的结果满意为止。
5.应用分析结果:
在对模型的结果满意的前提下,可以运用模型来得到对结果的分析。
8.2图解建模
8.2.1基本概念及类型
1.基本概念
(1)图解建模
图解建模是指用直观的图形语言将一个具体的过程模型表达出来。
在这个模型中,分别定义不同的图形代表输入数据、输出数据、空间处理工具,它们以流程图的形式进行组合并且可以执行空间分析操作功能。
当空间处理涉及到许多步骤时,建立模型可以让用户创建和管理自己的工作流,明晰其空间处理任务,为复杂的GIS任务建立一个固定有序的处理过程。
(2)模型生成器
模型生成器(ModelBuilder)是ArcGIS9所提供的构造地理处理工作流和脚本的图形化建模工具,简化复杂地理处理模型的设计和实施。
最初的模型生成器出现在ArcView3的空间分析模块中,它同样是为地理处理的工作流和脚本提供图形化的建模工具。
加载模型生成器:
在ArcGIS中可以通过以下方式启动模型生成器:
1)打开ArcMap,启动ArcToolbox;
2)右键单击ArcToolbox,选择Newtoolbox命令,生成Toolbox1;
3)
右键单击Toolbox1,在New中选择Model,,生成model;
如图12.2所示,模型生成器窗口由菜单条、工具条和图形窗口3部分组成。
模型生成器菜单包含了文件操作、编辑操作、视图操作、窗口操作和帮助共5个下拉菜单,每个菜单又由一系列相关命令及功能组成。
模型生成器工具面板中包含了17个常用的图形编辑工具。
(3)模型的基本组成
图解模型主要由三部分组成:
输入数据、输出数据和空间处理工具。
输入数据和输出数据的类型多种多样,可以是栅格数据集、shapefile、coverage等。
不同空间处理工具要求的数据不同,不同的应用目的也会得到不同类型的输出数据。
空间处理工具包括ArcToolbox中所有的工具集,也可以是模型(models)、由脚本(scripts)定制的工具或者其他工具箱(toolbox)中的系统工具。
只有将以上模型要素有机的连接起来,才能组成一个完整的图解模型。
因此,连接也是模型中一个不可或缺的要素。
连接指定了数据与操作间的关系,因此符合条件的要素才能被连接。
2.图解模型的基本类型
一个模型由一个或多个过程组成。
每个过程都有一个共同的基本结构:
输入→函数→输出,不同模型所包含的输入、函数、输出的数量可以不同,但整体的结构保持不变。
同时,在模型运行前,所有的组成部分必须彼此连接。
(1)
按其包含过程的数量可以分为单过程模型和多过程模型,如图12.3所示。
(a)图中模型只有一个过程,(b)图中模型则包括多个过程,且第一个过程所产生的输出数据作为第二个过程中的输入数据,在实际运用中多过程模型包括的过程会更多,更复杂。
(2)按照模型中过程的种类可以分为单一处理工具模型和复杂处理工具模型,如图12.4所示。
(a)图中单一处理工具模型所用工具仅为空间分析工具一种,(b)图中复杂处理工具模型所用模型则为空间分析和转换两种工具,在实际运用中复杂模型所用的工具会更加的多样化。
8.2.2图解模型的形成过程
模型的形成过程实际上就是解决问题的过程,不论是简单的或复杂的模型,都需要经过以下几个步骤(流程如图12.5所示),同时,为了便于交换使用,还可以为模型添加注释、转换模型为脚本。
1.添加输入数据
有两种方法可向模型界面添加数据:
方法一:
在ArcMap或ArcCatalog中打开数据,直接把数据拖拽至图解模型界面即可。
方法二:
(1)在模型生成器中点击右键,选择createvariable,在变量列表中选择所要的数据类型。
此时的图形没有颜色,表示此变量还未赋值;
(2)双击新建的变量,选择所要添加的输入数据,或直接输入数据的值。
根据数据的类型不同,选择不同的操作。
由于变量已赋值,此时的图形便有颜色填充。
2.添加空间处理工具
添加空间处理工具相对简单,只要将所需的添加的工具拖拽至图解模型界面即可。
但是处理的工具是多种多样的,可以是ArcToolbox中任何工具、脚本、模型,也可以是用户在应用程序中的共享工具,比如用模型(models)或由脚本(scripts)定制的工具或者其他工具箱(Toolbox)中的系统工具。
由于空间处理工具的功能决定了输出数据的类型,因此输出数据也就随着空间处理工具的添加而自动产生。
3.添加连接
只有将一个个的空间模型要素有机的连接起来,才能组成一个完整的图解模型。
然而对象间的连接是有前提的,若不符合连接的条件,两个图形则无法连接。
添加连接后,模型要素便有原来的无颜色填充,变为有颜色填充。
有两种方法添加连接:
方法一:
单击模型生成器界面工具面板的Addconnection图标
连接目标图形。
方法二:
双击空间处理工具,在对话框中选择所要处理的数据,单击OK按钮,即为数据和工具添加了连接
4.保存模型
在ModelBuilder的菜单条中单击File下的Save命令,保存模型当前的状态;同时在ArcToolbox中保存设置,以便下次打开。
方法如下:
右键ArcToolbox,选择SaveSettings命令,保存为文件,则该设置被保存.xml格式,如图12.6所示。
下次打开时,只要右键单击ArcToolbox,选择LoadSettings命令,以文件形式打开(FromFile)(如图12.7所示),选择所要打开的设置即可。
5.添加注释
为了更好地了解模型的结构和功能、更彻底地理解模型和处理过程。
同时也为了更好地组织项目,明确多过程之间的关系,可以给输入、输出、空间处理工具添加注释,还可以对连接添加注释。
操作如下:
选择所要添加注释的图形要素,右键选中createlabel命令,双击矩形框输入注释。
6.设置参数
为模型设置参数,在打开模型的时就会出现参数输入对话框。
直接输入数据、常数、输出数据的路径。
有两种方法设置参数:
方法一:
右键单击所要设置为参数的图形要素,选择ModelParameter命令,所设置的要素右上角便出现一个"P"表示设置成功,如图12.8(a)所示,图中DEM和SOAofDEM设为模型参数;
方法二:
右键单击模型
图标,选择Properties命令,进入Parameter选项卡,单击
图标,增加所要设置为参数的要素,如图12.8(b)所示,选择DEM和SOAofDEM设为参数即可。
7.运行图解模型
模型建好后,需要运行模型以检查结果是否满意。
有两种方法可以运行图解模型:
方法一:
在工具条上,点击
运行模型。
方法二:
在菜单条中,单击Model下的Run命令,模型被启动运行。
模型运行后,模型运行状态条可以显示出模型是否成功地被执行。
8.转换程序模型
图11.6保存对话框
建立好的模型可以转换为脚本使用,脚本的形式有:
Python、JScript和VBScript。
在Model下拉菜单中单击Export命令,选择ToScript命令,保存为Python、JScript或是VBScript即可。
8.2.3实例分析
下面以一个实例——利用DEM提取水系,来具体说明如何利用ArcGIS9图解建模工具建模的过程。
1.建立概念模型
问题:
过去,水系的分布通常是通过数字化地形图或其他图件中的水流线来获得,工作量巨大,且存在水系等级的人为确定以及低等级的水流线被省略等问题。
随着GIS的日益普及和应用,以及精确而详细的DEM数据的方便获取,为从DEM直接提取水系提供了可能。
分析:
1)问题的抽象和简化:
模拟地表径流在地表的流动来产生水系。
2)前提、假设:
DEM的洼地均为可填充型洼地。
3)涉及的参数和变量:
填充后的无洼地DEM、DEM每个栅格单元的水流方向、每个栅格上游汇水面积、确定水系的阈值大小。
4)数据类型的转换:
由于基于DEM的计算是栅格数据,故需要转换为矢量数据,便于分析应用。
数据:
DEM
2.形成图解模型
自然条件下,水流向低处流动,遇到洼地,首先将其填满,然后再从该洼地的某一最低出口流出。
但由于地形洼地的存在,导致依据水流方向矩阵所提取的排水网络不连续,使自然水流不能畅通无阻地流至区域边缘。
因此,对已有的DEM数据,首先要进行洼地填充,生成无洼地DEM。
在此基础上计算出水流方向矩阵、水流汇集矩阵,对水流汇集设置不同的阈值,来提取不同级别的河网。
最后,用转换工具转换成矢量格式,完成水系的自动提取。
其流程如图12.9所示。
3.操作步骤
(1)放置输入数据:
1)打开ArcMap,启动ArcToolbox;
2)右键单击ArcToolbox,选择newtoolbox,生成toolbox1;
3)右键单击toolbox1,在new命令中选择model命令,生成model;
4)单击model,右键选择Rename命令,如图12.10所示,输入waternet;
5)
在模型生成器中点击右键,选择createvariable命令,弹出选择变量类型对话框,在变量列表中选择数据类型为Rasterlayer,如图12.11所示。
(2)
放置空间处理工具
在ArcToolbox中按顺序分别在模型编辑器中加入SpatialAnalystTools工具集中surface命令下的Fill、FlowDirection、FlowAccumulation工具和Math命令下的GreaterThan工具,以及ConventionTools中FromRaster命令下的RastertoPolyline工具。
(3)设置连接与参数
按照数据流的先后顺序,连接相应图形要素。
同时设置RaterLayer、Outputpolylinefeature和Inputrasterorconstant为参数模型,如图12.12所示。
模型如图12.13所示。
(4)验证模型
以山区分辨率为50m的DEM为输入数据。
双击waternet模型,弹出提取水系的对话框。
如图12.14所示,设置输入数据、输出路径和阈值的大小,单击OK按钮完成操作。
在Arcmap中打开生成的水系,分析结果是否满意,如果对结果不满意就需要对模型进行调整。
提取结果如图12.15所示,分别为汇流累积为200和1000的水系。
(5)运行和使用模型
经过模型验证并对模型结果满意后,即可双击模型图标
,实现基于DEM的水系自动提取。
8.3脚本文件
8.3.1简介
空间数据的处理常常是复杂而费时的,而且其过程具有很强的重复性,有必要进行自动化的处理。
任何可以支持COM的脚本语言都可以执行ArcGIS9的地理处理工具,如Python、Jscript和VBScript等。
这些脚本语言都是公开的,而且易学易用。
脚本可以通过一个工具或多个工具实现一个简单或者复杂的处理,也可以通过循环操作对输入数据进行批处理。
因为数据不是特定的,所以脚本可以重用。
脚本的高效性还体现在可以独立于ArcGIS9桌面程序执行。
熟悉ArcInfoWorkstation的AML用户转而使用一种新的脚本语言是非常容易的。
在ArcGIS9中AML不仅可以执行Arc命令,而且任何AML程序都可以作为脚本添加到ArcToolbox中。
对不熟悉脚本语言的用户,模型生成器是构建脚本的方便工具,只要先构建一个模型再输出成脚本即可。
但是模型不可以独立于ArcToolbox运行,脚本却可以脱离ArcGIS的环境独立运行。
而这个脚本可以是任何支持COM的脚本语言。
8.3.2脚本编写基础
通过脚本调用ArcToolbox进行空间处理,实际上是通过GPDispatch组件类来实现的。
⏹GPDispatch组件类的作用就是调用和执行各种地理处理工具。
它实现了IGPComHelper接口和IGPDispatch接口。
关于这两个接口的具体使用可以参考ArcGIS的在线帮助。
⏹在VBS脚本中通过WScript.CreateObject("esriGeoprocessing.GPDispatch.1");语句可以创建一个GPDispatch对象。
其中esriGeoprocessing指的是GPDispatch所在的类型库。
后面的“1”表示的是版本号。
GPDispatch最常用的方法是CheckOutExtension()检查扩展许可、AddToolbox()添加工具、RemoveToolbox()移除工具、Execute()执行工具。
⏹其中Execute()用法较为特殊下面为它的函数原型:
Setvariable=object.Execute(ToolName,params,trackcancel)
ToolName为工具名称,params为工具的一系列参数参数,trackcancel用于跟踪cancel键是否被按下。
但是在vbs中一般的用法为:
Object.toolname(toolparams1,toolparams2,……),toolparams1,toolparams2分别为工具参数。
例如等高线工具的执行:
gp.Contour_sa(input,output,"50","0","1");
8.3.3创建脚本文件
1.单数据处理
所谓单数据处理,是指处理过程中只涉及到单个数据集的处理,数据可以是Geodatabase中的要素类、栅格数据集、ArcView的shapefile,也可以是Arc/Info的coverage等。
在土地利用中,坡度是很重要的信息,特别是对一些坡度的分类具有很重要的意义。
以从DEM中自动提取坡度大于15度的栅格为例,练习单数据的脚本处理。
(1)编写脚本
新建一个文本文档,改文件名和类型为slope.vbs,文本内容如下:
'建立处理对象
setgp=WScript.CreateObject("esriGeoprocessing.GPDispatch.1")
'检查扩展模块的license
gp.CheckOutExtension"spatial"
'加载必要的Toolbox,因为本例中用到的提取坡度和栅格计算命令均在SpatialAnalyst扩展模块中,因此要加载这个模块。
gp.AddToolbox"D:
/ProgramFiles/ArcGIS/ArcToolbox/Toolboxes/SpatialAnalystTools.tbx"
'定义脚本变量
Raster_Dataset=wscript.arguments.item(0)
Output_raster__2_=wscript.arguments.item
(1)
ifOutput_raster__2_="#"then
Output_raster__2_="E:
/Chp12/LessTha_slop1"如果没有指定路径的话,采用默认的路径
endif
slope__2_="E:
/ChP12/slope"
Input_raster_or_constant_value_2="15"
'提取坡度
gp.Slope_saRaster_Dataset,slope__2_,"DEGREE","1"
'提取坡度大于15度的栅格
gp.LessThan_saslope__2_,Input_raster_or_constant_value_2,Output_raster__2_
(2)添加script
1)右键单击ArcToolbox,选择newtoolbox,生成toolbox2;
2)右键单击toolbox2,在add中选择script,则生成script;
(3)设置script属性
1)右键单击script,选择properties命令,输入名字、标签、描述、风格,单击“下一步”按钮;
2)浏览到你所要选择运行的脚本,点击“下一步”按钮;
3)设置属性。
在提取坡度大于15度的栅格这个例子中需要输入一个栅格文件,输出一个栅格文件,因此属性设置如图12.16所示。
(4)
运行脚本
设置完属性后,双击脚本图标
,在文本对话框中(图12.17)设置好路径后,点击OK按钮,会出现结果运行状态栏,如图12.18所示,显示脚本是否成功的被执行,运行结果如图12.19所示,其中白色为坡度大于15度的区域,黑色为坡度小于15度的区域。
2.批处理
所谓批处理就是成批处理文件或操作,是一次操作多个同样格式数据的过程。
脚本提供了一种便捷的方式用于批处理,只要在脚本中加入循环语句即可。
下面以两幅DEM提取坡度大于15度的栅格为例子详细说明在VBScript中的实现过程。
其中DEM数据存储在“E:
\ChP12\tutor3\DEM\dem50”和“E:
\ChP12\tutor3\DEM\dem100”;坡度文件存储在“E:
\ChP12\tutor3\slope\slope_50”,“E:
\ChP12\tutor3\slope\slope_100”;结果存储在“E:
\ChP12\tutor3\result\result_50”,“E:
\ChP12\tutor3\result\result_100”。
(1)第一步:
新建一个文本。
新建一个文本文档,改文件名和类型为b_soa.vbs;
(2)第二步:
建立处理对象;
Setgp=CreateObject("esriGeoprocessing.GPDispatch.1")
(3)第三步:
检查扩展模块的license;
gp.CheckOutExtension"spatial"
(4)第四步:
加载必要的Toolbox。
因为本例中提取等高线命令和将矢量数据转为栅格命令均在SpatialAnalyst扩展模块中,因此要引用这个模块;
gp.AddToolbox"D:
/ProgramFiles/ArcGIS/ArcToolbox/Toolboxes/SpatialAnalystTools.tbx"
(5)定义变量;
listdem=Array("E:
\ChP12\tutor3\DEM\dem50","E:
\ChP12\tutor3\DEM\dem100")
listslope=Array("E:
\ChP12\tutor3\slope\slope_50","E:
\ChP12\tutor3\slope\slope_100")
listresult=Array("E:
\ChP12\tutor3\result\result_50","E:
\ChP12\tutor3\result\result_100")
Input_raster_or_constant_value_2="15"
(6)循环语句处理;
Fori=LBound(ele)toUBound(ele)
gp.