第八章 执行空间分析
数据库的建立工作现在已经完成, 该开始进行空间分析了. 你的任务是在研究区范围内寻找适合的地点来建立研究所. 数据库中的每个层都包含要确定地址所需的特定信息. 要确定这些数据层之间的新的联系, 你就需要进行进一步的事件操作.
本节中你将看到如何通过空间分析来确定可能适合的地址, 并生成表格显示每块地需要的费用. 这些信息将提供给一个委员会来选择决定最终的地址.
本章介绍空间分析的基本概念, 讲述如何使用一些空间分析操作来得到有意义的结果. 具体地,
本章结束时, 所有可能的地址将已经被找出, 用于制作最后地图和报告的数据也准备好了.
空间分析介绍
空间分析使你可以通过发展模型并应用它来研究真实世界中发生的过程.这样的模型可以阐明地理数据背后潜在的趋势, 生成新的信息. GIS通过提供一系列的可以用来发展模型的工具来促进对这些过程的分析.通过这些模型, 我们可以发现数据集内或之间的新的或没有觉察到的关系, 从而增加对现实世界的认识.
空间分析的结果可以通过地图和/或报告来展示. 地图最适于用来显示地理关系, 而报告实用于总结表格数据和引证计算结果. 通过地图和报告, 别人可以共享你数据库中的数据资料.
空间分析的步骤: 在进行空间分析之前, 你需要确定你手中的问题, 确立你的目标, 先做一个通盘考虑. 对你的数据和模型提出问题; 详细考虑每一步骤, 规划出你的总目标. 本章中空间分析的步骤纲要如下:
确定分析目标和准则
在你进行空间分析操作之前, 你必须定义好你的问题, 确立操作步骤来得到有用的结果. 回忆我们实验项目的问题: 寻找一个适合的水产实验室地址. 其要求限定为:
下面我们逐一讨论准则所需要的空间操作.
最好是灌木地: 我们的土地利用类型COVERAGE上总共有76个多边形, 根据土地利用类型赋予代号. 其中26块地是灌木地, 其LU-CODE为300.
适宜于建筑的土壤类型: 土壤COVERAGE中包含43个多边形, 根据类型及其稳定性进行适宜性编码.适宜性一般的和很好的编码为2和3, 因此适宜的土壤可以表达为"SUIT > = 2". 共有28个多边形适合要求.
在已有排污管道的300米之内: 为满足这个条件, 你必须确定哪些区域在排污管道系统的300米之内. 利用BUFFER空间分析操作, 你可以生成满足这一条件的多边形.
离河20米以上: 同样通过建立河流的缓冲区, 然后选择缓冲区之外的部分即可以满足这一要求.
面积大于200平方米: 你必须将前面的数据层合并起来, 再识别所有满足条件的多边形中是否有大于2000平方米的地块. 注意, 有可能是相邻的地块加起来满足面积条件.
准备分析所用的数据
如果你的数据库设计和实行得很好, 所有的COVERAGE现在应该都可以用于空间分析了. 更多的情况下, 你的COVERAGE还需要进一步的处理. 或者, 你重新回顾分析准则后, 会发现你需要给你的COVERAGE添加一些属性.
在这之前你的COVERAGE分散在不同的工作空间, 而以后的空间分析需要操作合并不同的COVERAGE, 所以我们需要建立一个新的工作空间,并拷贝所有需要的数据.
ARC: &WORKSPACE /YOURNAME/DATA
ARC: &STAT 9999
ARC: LC //下面是你所需要的COVERAGE名称
LANDUSE ROADS SEWERS
SOILS SREAMS TEMPLATE
执行空间分析
所有数据准备好后, 你就可以开始进行空间分析了. 特别地, 这里BUFFER缓冲区操作和COVERAGE叠加操作.
生成缓冲区:当需要确定距离某些特征一定范围的区域, 你需要执行BUFFER操作. BUFFER操作生成围绕所选择的地理特征的多边形区域, 称为缓冲区. 你可以对点线面进行缓冲操作. 不管COVERAGE特征是什么, 所生成的COVERAGE总是多边形COVERAGE.
下面生成排污管道的300米缓冲区:
ARC: USAGE BUFFER
USAGE: BUFFER <in_cover> <out_cover>
ARC: BUFFER SEWERS SEWERBUF # # 300
BUFFERING...
SORTING...
INTERSECTING...
ASSEMBLING POLYGONS...
CREATING NEW LABELS...
FINDING INSIDE POLYGONS...
DISSOLVING...
BUILDING NODES...
CREATING SEWERBUF.PAT...
ARC: ARCPLOT //在ARCPLOT下观看生成的结果
ARCPLOT: MAPEXTENT SEWERBUF
ARCPLOT: ARCS SEWERS
ARCPLOT: LINECOLOR RED
ARCPLOT: POLYGONS SEWERBUF
ARCPLOT: ITEMS SEWERBUF POLY
COLUMN ITEM MANE WIDTH OUTPUT TYPE N.DEC
1 AREA 4 12 F 3
5 PERIMETER 4 12 F 3
9 SEWERBUF# 4 5 B -
13 SEWERBUF-ID 4 5 B -
17 INSIDE 4 5 B -
注意PAT表中的INSIDE项, 其值为100(表示在生成的缓冲区之内)和1(生成的缓冲区之外)
ARCPLOT: LIST SEWERBUF POLY
RECORD AREA PERIMETER SEWERBUF# SEWERBUF-ID INSIDE
1 -1907939.375 6836.023 1 0 1
2 1907939.375 6836.023 2 1 100
生成河流的20米缓冲区
ARCPLOT: ARC BUFFER STREAMS STRMBUT # # 20
ARCPLOT: RESET
ARCPLOT: MAPEXTENT STRMBUF
ARCPLOT: POLYGONS STRMBUF
ARCPLOT: LIST STRMBUF POLY
利用COVERAGE来操作空间特征
可以根据另外一个COVERAGE的边界来选择和识别COVERAGE中的地理特征. 这使我们可以叠加, 剪切,替换和合并地理特征.前面已经使用到CLIP命令. 下面我们介绍其他的一些类似命令.
UPDATE: 采用剪-贴的方法来合并COVERAGE. A-(A^B)+B
CLIP:切除多出的部分. A^B
SPLIT: 将一个COVERAGE分成几个COVERAGE.B相当于分幅图框.
ERASE: 删除在COVERAGE范围内的部分. A-B
下面, 我们利用ERASE操作来生成满座排污条件和河流20米外条件的COVERAGE:
ARCPLOT: ARC USAGE ERASE
USAGE: ERASE
ARCPLOT: ARC ERASE SEWERBUF STRMBUF BUFFCOV
ERASING SEWERBUF WITH STRMBUF TO CREATE BUFFCOV.
SORTING...
INTERECTING...
ASSEMBLING POLYGONS...
CREATING NEW LABELS...
CREATING BUFFCOV.PAT...
ARCPLOT: CLEAR
ARCPLOT: MAPEXTENT SERERBUF
ARCPLOT: POLYGONS SEWERBUF
ARCPLOT: LINECOLOR RED
ARCPLOT: POLYGONS STRMBUF
ARCPLOT: RESELCT BUFFCOV POLY INSIDE = 100
ARCPLOT: POLYGONSHADE BUFFCOV 7
ARCPLOT: QUIT
执行多边形叠加操作
多边形叠加操作中, 多边形的位置以及它们的属性被合并起来生成新的COVERAGE.
常用的多边形叠加操作命令有三个. 它们的用法和作用都是极其相似的, 只是在生成的COVERAGE中保存的空间区域特征有所不同而已.
UNION: 叠加多边形COVERAGE并保留所有的区域.
IDENTITY: 在多边形COVERAGE上叠加点线面, 保留所有输入COVERAGE的区域.
INTERSECT: 作用与IDENTITY相同, 但保存二者的共同区域.
特征表格项目:
OUT_COVER ITEMS AREA
PERIMETER
OUT_COVER INTERNAL NUMBER
OUT_COVER USER-ID
IN_COVER ITEMS IN_COVER INTERNAL NUMBER
IN_COVER USER-ID
ALL SUBSEQUENT IN_COVER PAT ITEMS ......
OVERLAY_COVER ITEMS OVERLAY_COVER INTERNAL NUMBER
OVERLAY_COVER USER-ID
ALL SUBSEQUENT OVERLAY-COVER PAT ITEMS......
用IDENTITY来合并LANDUSE和SOILS:
ARC: USAGE IDENTITY
USAGE: IDENTITY
ARC: IDENTITY LANDUSE SOILS LANDSOIL
PRODUCING IDENTITY OF LANDUSE WITH SOILS TO CREATE LANDSOIL
SORTING...
INTERSECTING...
ASSEMBLING POLYGONS...
CREATING NEW LABELS...
CREATING LANDSOIL.PAT...
** ITEM 'AREA' DUPLICATED, JOIN FILE VERSION DROPPED**
**ITEM 'PERIMETER' DUPLICATED, JOIN FILE VERSION DROPPED**
** ITEM 'AREA' DUPLICATED, JOIN FILE VERSION DROPPED**
**ITEM 'PERIMETER' DUPLICATED, JOIN FILE VERSION DROPPED**
ARC:ARCPLOT
ARCPLOT: MAP LES08MAP
ARCPLOT: MAPEXTENT LANDSOIL
ARCPLOT: POLYGONS LANDSOIL
ARCPLOT: RESELECT LANDSOIL POLY LU-CODE = 300 AND SUIT GE 2
ARCPLOT: POLYGONSHADES LANDSOIL 3
ARCPLOT: MAP END
ARCPLOT: KILLMAP LES08MAP
ARCPLOT: QUIT
在上面的过程中, 你可以通过ZOOM IN来观察细部, 可以看到叠加产生的碎多边形.
使用IDENTITY来叠加LANDSOIL和BUFFCOV
ARCPLOT: ARC IDENTITY LANDSOIL BUFFCOV FINALCOV
ARCPLOT: CLEAR
ARCPLOT: MAPEXTENT FINALCOV
ARCPLOT: POLYGONS FINALCOV
ARCPLOT: ITEMS FINALCOV POLY
COLUMN ITEM NAME WIDTH OUTPUT TYPE N.DEC
1 AREA 4 12 F 3
5 PERIMETER 4 12 F 3
9 FINALCOV# 4 5 B -
13 FINALCOV-ID 4 5 B -
17 LANDSOIL# 4 5 B -
21 LANDSOIL-ID 4 5 B -
25 LANDUSE# 4 5 B -
29 LANDUSE-ID 4 5 B -
33 LU-CODE 3 3 I -
36 COST/HA 6 6 I -
42 SOILS# 4 5 B -
46 SOILS-ID 4 5 B -
50 SOIL-CODE 3 3 C -
53 SUIT 1 1 I -
54 BUFFCOV# 4 5 B -
58 BUFFCOV-ID 4 5 B -
62 INSIDE 4 5 B -
ARCPLOT: QUIT
准备表格分析的数据:
下面的重点将是如何利用算术和逻辑表达式来对天真属性表进行表格分析.在进行分析之前, 你需要保证新产生的值在你的表格中有存储的位置.
ADDITEM命令用来向特征属性表(或任何INFO表)中添加新的项. 其它的命令, 如DROPITEM, PULLITEM都是用来管理表格的. 通过下面的例子来进行学习.
PAT中面积是以平方米表示, 而地价是以公顷计价的, 因此我们需要添加用公顷表示的面积项(HA)和地块价格项(COST). 同样, 我们添加SUITABLE来区分地块的适宜性.
ARC: USAGE ADDITEM
USAGE: ADDITEM
ARC: ADDITEM FINALCOV.PAT FINALCOV.PAT HA 4 6 F 2
ARC: ADDITEM FINALCOV.PAT FINALCOV.PAT COST 4 7 B
ARC: ADDITEM FINALCOV.PAT FINALCOV.PAT SUITABLE 1 1 I
ARC: ITEMS FINALCOV.PAT
COLUMN ITEM NAME WIDTH OUTPUT TYPE N.DEC
1 AREA 4 12 F 3
5 PERIMETER 4 12 F 3
9 FINALCOV# 4 5 B -
13 FINALCOV-ID 4 5 B -
17 LANDSOIL# 4 5 B -
21 LANDSOIL-ID 4 5 B -
25 LANDUSE# 4 5 B -
29 LANDUSE-ID 4 5 B -
33 LU-CODE 3 3 I -
36 COST/HA 6 6 I -
42 SOILS# 4 5 B -
46 SOILS-ID 4 5 B -
50 SOIL-CODE 3 3 C -
53 SUIT 1 1 I -
54 BUFFCOV# 4 5 B -
58 BUFFCOV-ID 4 5 B -
62 INSIDE 4 5 B -
66 HA 4 6 F 2
70 COST 4 7 B -
74 SUITABLE 1 1 I -
ARC: LIST FINALCOV.PAT HA, COST, SUITABLE
RECORD HA COST SUITABLE
1 0.00 0 0
2 0.00 0 0
.......
ARC:
执行表格分析 首先我们要进行选择, 即对满足条件的记录进行操作:
这样所需要用到的命令有:
ARCPLOT: RESELECT ...... AREA > 2000 //REDUCE SELECT 当你选择一个表格时, 所有的记录处于选中状态, 你需要在其中选择一些...
ARCPLOT: ASELECT //ADD SELECT 将满足条件的记录添加到选择集中. 如果后面没有跟逻辑表达式, 则选择所有的记录(没有选择到的+所有已选择的)
逻辑表达式:
逻辑运算符有:
EQ 或 = KUCODE = 300
NE 或 <> SUIT GE 2
LT 或 < LABEL CN 'MODERATE' OR LABEL CN 'HIGH'
GT 或 > AREA / 10000 GE 2000 ANDv INSIDE = 100
GE 或 >= COST IN (10000->20000)
LE 或 <=
CN 包含指定的字符串
IN 包含于指定的值中
CALCULATE命令: 计算并将结果赋与当前选择的记录的指定项
USAGE: CALCULATE
CALCULATE .... SUITABLE = 1
CALCUALTE .... ACRES = AREA / 43560
算术运算符: ** 乘方 * / + -
下面是项目中具体执行表格分析:
ARC: ARCPLOT
ARCPLOT: RESELCT FINALCOV POLY LU-CODE = 300 AND SUIT GE 2 AND INSIDE = 100 AND AREA GE 2000
FINALCOV POLYS: 8 OF 628 SELECTED
ARCPLOT: CALCUALTE FINALCOV POLY SUITABLE = 1
ARCPLOT: LIST FINALCOV POLY LU-CODE, SUIT, INSIDE, AREA, SUITABLE
RECORD LU-CODE SUIT INSIDE AREA SUITABLE
173 300 2 100 5640.191 1
228 300 2 100 5495.015 1
286 300 2 100 7125.877 1
309 300 2 100 7546.493 1
323 300 2 100 2653.453 1
333 300 2 100 3087.506 1
347 300 2 100 2701.034 1
473 300 2 100 2573.669 1
ARCPLOT: CALCULATE FINALCOV POLY HA = AREA / 10000
ARCPLOT: CALCUALTE FINALCOV POLY COST = HA * COST/HA
ARCPLOT: LIST FINALCOV POLY AREA, HA, COST/HA, COST
RECORD AREA HA COST/HA COST
173 5640.191 0.56 20000 11280
228 5495.015 0.55 20000 10990
286 7125.877 0.71 10000 7125
309 7546.493 0.75 15000 11319
323 2653.453 0.27 10000 2653
333 3087.506 0.31 10000 3087
347 2071.034 0.27 10000 2701
473 2573.669 0.26 10000 2573
评价和解释结果
我们前面的分析工作已经得到了一些结果, 现在就该检查这些结果, 确定它们是否有效. 底土地图和报告可以帮助你评价这些结果.
目前这个时候, 你需要确定怎样才能接受你的结果. 然后你可能要亲自到某些地点去看看, 确认它们是否满足你的准则要求.如果满足要求, 很显然其它地方也会满足要求. 在进行进一步处理之前, 这样评价是非常有必要的.
你可以提出一些问题, 如:
如果你认为自己选择的准则确实合理, 所做的分析正确无误, 你可以去实地参观检查所选择的地址, 或者进行进一步深入的分析.
练习: 显示分析结果
ARCPLOT: MAPEXTENT FINALCOV
ARCPLOT: POLYGONSHADES FIANLCOV SUITABLE
ARCPLOT: LINECOLOR GREEN
ARCPLOT: ARCS TEMPLATE //研究区边界, 也即地图边框
ARCPLOT: LINECOLOR RED
ARCPLOT: ARCS ROADS
ARCPLOT: IDENTIFY FINALCOV POLY * 用鼠标来选择潜在的地址, 观察其属性项.
ARCPLOT: RESELECT FINALCOV POLY SUITABLE = 1
ARCPLOT: POLYGONTEXT FINALCOV FINALCOV#
ARCPLOT: LIST FINALCOV POLY SUITABLE, COST, COST/HA, HA
根据屏幕显示, 我们可以发现一个问题: 有的地址是相邻的, 只是土壤类型不同而已. 我们可以将之合并为一个图斑.
下面是对所找到的地址的一些评价:
根据最后一点, 我们再次进行进一步的分析.
ARCPLOT: CLEARSELECT
ARCPLOT: CLEAR
ARCPLOT: RESELECT FINALCOV POLY LU-CODE = 300 AND SUIT GE 2 AND INSIDE = 100
FINALCOV POLYS : 15 OF 628 SELECTED.
ARCPLOT: LIST FINALCOV POLY AREA, HA, COST, SUITABLE
RECORD AREA HA COST SUITABLE
173 5640.191 0.56 11280 1
184 48.577 0.00 0 0
193 14.432 0.00 0 0
206 37.532 0.00 0 0
228 5495.015 0.55 10990 1
286 7125.877 0.71 7125 1
309 7546.493 0.75 11319 1
313 1721.481 0.00 0 0
323 2653.453 0.27 2653 1
327 580.889 0.00 0 0
333 3087.506 0.31 3087 1
347 2701.034 0.27 2701 1
349 3.948 0.00 0 0
473 2573.669 0.26 2573 1
513 646.508 0.06 0 0
可以看到, 其中一些很小的图斑(小于50平方米)是所谓的碎多边形, 由于叠加操作而产生的. 而另外一些面积大于500小于2000的地块, 则是我们下面要考虑的, 因为它们可能是相邻的.
ARCPLOT: MAPEXTENT POLY FINALCOV
ARCPLOT: POLYGONS FINALCOV //只有被选择的才会现实出来
ARCPLOT: RESELECT FINALCOV POLY SUITABLE = 0
ARC: CALCULATE FINALCOV POLY HA = AREA / 10000
ARC: LIST FINALCOV POLY AREA HA COST/HA SUITABLE
RECORD AREA HA COST/HA SUITABLE
184 48.577 0.00 20000 0
193 14.432 0.00 20000 0
206 37.532 0.00 20000 0
313 1721.481 0.17 10000 0
327 580.889 0.06 15000 0
349 3.948 0.00 10000 0
513 646.508 0.06 15000 0
这些就是所有其它条件都符合, 只是没有满足面积要求的地块. 其中有三块地面积较大, HA不为零.
ARCPLOT: RESELECT FINALCOV POLY AREA GT 500
ARCPLOT: LIST FINALCOV POLY AREA, HA, COST/HA, SUITABLE
ARCPLOT: POLYGONSHADES FINALCOV 1
可以看到, 其中一块地与选中的一个地块相连, 另外两块都是单独分开的.即排除了假设的可能性.
消除碎多边形
ARC下的ELIMINATE命令允许你设定准则来确认将要被消去的多边形. 显然, 准则可以设置为面积小于50平方米.被选中的多边形将与其长边相连的多边形合并.
ARCPLOT: ARC USAGE ELIMINATE
USAGE: ELIMINATE <in_cover> <out_cover>
ARCPLOT: ARC ELIMINATE FINALCOV ELIMCOV
ELIMINATING POLYGONS IN FINALCOV TO CREATE ELIMCOV
ENTER A LOGICAL EXPRESSION. (ENTER A BLANK LINE WHEN FINISHED)
>: RES AREA LT 50
>: <CR>
DO YOU WISH TO RE-ENTER EXPRESSION? (Y/N) N
DO YOU WISH TO ENTER ANOTHER EXPRESSION? (Y/N) N
125 FEATURES OUT OF 628 SELECTED.
NUMBER OF POLYGONS (INPUT, OUTPUT) = 628 504
NUMBER OF ARCS (INPUT, OUTPUT) = 1388 1262
CREATING ELIMCOV.PAT
ARC:
现在重新进行选择.
ARCPLOT: CLEARSELECT
ARCPLOT: RESELECT ELIMCOV POLY LU-CODE = 300 AND SUIT GE 2 AND INSIDE = 100
ELIMCOV POLYS: 11 OUT OF 504 SELECTED
ARCPLOT: MAPEXTENT POLY ELIMCOV
ARCPLOT: POLYGONS ELIMCOV
ARCPLOT: POLYGONSHADES ELIMCOV SUITABLE
ARCPLOT: SEARCHTOLERANCE 1
ARCPLOT: RESELCT ELIMCOV POLY ONE *
ENTER POINT //选择那个与原有选择相邻的那个小多边形
ARCPLOT: POLYGONSHADES ELIMCOV 2
********
如果你有选择错误, 可以重新设置选择集, 再进行选择;
ARCPLOT: ASELECT ELIMCOV POLY //选择所有的多边形
ARCPLOT: RESELCT ELIMCOV POLY LU-CODE = 300 AND SUIT GE 2 AND INSIDE = 100
ARCPLOT: CLEAR //清屏
ARCPLOT: POLYGONSHADES ELIMCOV SUITABLE
ARCPLOT: POLYGONS ELIMCOV
然后你就可以再次重复前面的RESELCT了.
********
ARCPLOT: CALCULATE ELIMCOV POLY SUITABLE = 1 //设置所选择的多边形的SUITABLE值
ARCPLOT: CLEAR //清屏, 重新显示并验证结果
ARCPLOT: ASELECT ELIMCOV POLY SUITABLE = 1
ARCPLOT: POLYGONSHADES ELIMCOV 2
ARCPLOT: LINESYMBOL 1
ARCPLOT: POLYGONS ELIMCOV //绘制这些多边形的边界
ARCPLOT: CALCULATE ELIMCOV POLY HA = AREA / 10000
ARCPLOT: CALCUALTE ELIMCOV POLY COST = HA * COST/HA
ARCPLOT: LIST ELIMCOV POLY AREA, HA, COST/HA, COST
RECORD AREA HA COST/HA COST
112 5688.768 0.57 20000 11377
154 5495.015 0.55 20000 10990
196 7125.877 0.71 10000 7125
218 7546.493 0.75 15000 11319
231 2653.453 0.27 10000 2653
235 580.889 0.06 15000 871
240 3087.506 0.31 10000 3087
254 2071.034 0.27 10000 2701
369 2573.669 0.26 10000 2573
ARCPLOT: QUIT