首页 百科知识 定级因素计算的软件系统

定级因素计算的软件系统

时间:2022-11-10 百科知识 版权反馈
【摘要】:定级因素计算的计算机软件系统,是基于地理信息系统的数据库语言系统。每一个三级定级因素计算时,都有其对应的基础数据,这些数据均是实际调查,绘在“底图”上,在ARC/INFO软件中通过空间分析而产生的。某些三级定级因素是由若干次级因素计算得到的,因此各次级因素对三级定级因素的影响和作用是不相同的,故需建立权系数数据库。三级定级因素分值计算一共由11个因素组成。

第二节 定级因素计算的软件系统

一、软件的开发思路

定级因素计算的计算机软件系统,是基于地理信息系统(GIS)的数据库语言系统。地理信息系统是一个集成系统,其集成的内容包括信息、软件、硬件、用户以及地理信息系统项目的组织。通常,地理信息分为两大类,即空间信息和属性信息。前者是指制图和地理的信息,它是用来描述地理要素的位置,如道路、河流、居民地等;后者是指专门描述地理要素的文字报告和文件。本课题选择的地理信息系统支持软件,是由美国环境系统研究所(Euvironmental systen Research Institute,简称ESRI)研制的产品——ARC/INFO GIS和其桌面系统ARCVIEW GIS。

本课题选择的数据库语言系统主要是FOXbas。软件开发的基本思路是:第一步,软件系统的分解;第二步,程序框图设计;第三步,编程和程序调试;第四步,程序界面开发与修饰。

二、软件系统的分解

根据层次分析法和结构化方法,我们首先对定级软件进行了如下的结构化分解。

1.结构分解(见图2—1):

img88

图2—1

2.说明。

(1)P1:数据转换。这是将ARC/INFO的空间分析数据,转换成为高级语言可以处理的数据。例如:Fox中的.DBF数据。

其中:基本数据,是ARC/INFO产生的网格坐标的转换。其中含“单元号”,X,Y坐标值及每一个单元(网格)的道路“方向”数和处于河流与高速公路的“方位”标志。这些数据是每一个因素计算时都要用到的数据(见表2—11)。

三级定级因素数据。每一个三级定级因素计算时,都有其对应的基础数据,这些数据均是实际调查,绘在“底图”上,在ARC/INFO软件中通过空间分析而产生的。为了增加数据与程序的独立性,对每一个三级定级因素均建立相应的数据库(见表2—12)。

表2—11 Sa3.DBF

img89

表2—12 Sa1.DBF

img90

权系数数据。某些三级定级因素是由若干次级因素计算得到的,因此各次级因素对三级定级因素的影响和作用是不相同的,故需建立权系数数据库。这些数据来源于“专家评估”(见表2—13)。

表2—13 龙山镇公用设施权系数

img91

二级数据。二级数据库是在“三级因素数据”基础上,经过计算产生的,例如商服繁华度与道路通达度分值在计算过程中,均要在原始数据基础上按照“规程”要求,由程序计算并建立“二级数据库”。故“数据转换”组成如图2—2所示。

img92

图2—2

这里,四级功能模块由20个程序组成,三级模块由四个程序组成,其程序可采用结构分解中所给名字(也可另选)。

(2)P2:定级因素分值计算。三级定级因素分值计算一共由11个因素组成。其分值计算是在完成“基本数据转换”之后开始逐一进行,其结构分解如图2—3所示。

img93

图2—3

这里分别由一个对应的程序模块完成其作用分值的计算。共11个处理功能模块。

(3)P3:定级分值及其计算。在完成三级因素分值计算后,经过下列步骤便可初步完成定级作用分的计算。

第一,建立二级因素数据库。在三级因素(11个)基础上,按照各类因素所占的权重,建立二级因素(五个)数据库(图2—4)。

img94

图2—4

第二,建立定级分值数据库。在二级因素(五个)数据库基础上,按照各自的权重值,计算出每个网格的定级分,并确定出最高分值、最小分值。

第三,在定级分值数据基础上打印出总分值频率图。该频率图以“定级分”为一百个区段,即从0—100分,统计每个分值的网格个数,并以图形方式打印频率图(在最小与最大分值之间),见图2—5。

第四,确定等级。在频率图基础上确定其等级数和每个等级分值的区间,然后计算出每一个网格应属哪一级,对每一个等级统计出网格数和面积。

(4)P4:结果输出。作为定级计算软件,全部定级工作到此结束,最后输出本阶段的最后结果。结构如图2—6所示。

img95

图2—5 龙山镇城区土地定级总分值频率图

img96

图2—6

其中,各类因素作用分值与定级总分值频率统计表,是将数据分为10个区段,在表中分别打印出“区段”,个数(网络),及百分比(精确到第四个小数);各类权系数的数据库,即包括四级、三级和二级以及计算定级分的所有权系数值(见表2—14)。

表2—14 龙山镇二级因素权重值

img97

三、程序框图举例

程序框图又称流程图。作为有经验的程序员有了程序框图,即可立即输入程序。因此,一般认为只要有了程序框图,程序设计也就认为已经完成。本软件涉及大量的程序模块,这里仅举数据转换程序流程图为例供参考(如图2—7所示)。

1.功能:该软件是将ARC/INFO空间分析数据转换为高级语言(例如FOX)处理的数据软件。其空间分析数据为面状。

2.变量说明:n为评估范围内单元(网格)数;grid为ID—单元(网格)号(空间分析数据库中);K为记数器;aa为面积;XX为等级;YY为高级语言库中的单元号;aal为面积;xxl为等级;yyl为单元(网格)号。

3.数据库文件:Sa3为单元(网格)坐标数据库文件;SH1为生活设施数据库文件;PATI为ARC/INLO空间分析数据文件按照grid-ID排序后的文件。

img98

img99

图2—7 程序框图

4.程序算法

(1)在单元坐标数据库文件Sa3.DBF中读出单元个数n。

(2)对空间分析数据文件按grid-ID排序(升序)。

(3)从1到n循环做。

第一,排序文件中,读出“面积”、“等级”和“grid-ID”号。

第二,在排序文件中重复地读出一个“面积”、“等级”和“grid-ID”号。

第三,对于重复读出的内容,每次同第一次读出的“grid-ID”号进行比较,并取“面积”最大者加以保存。直到“grid-ID”与第一个不相同时,结束重复读取数据。这样便得一个“面积”最大的“等级”与“grid-ID”号。

第四,在SH1数据文件中,分别写入因素(如排水)的分值。

第五,重复执行A、B、C、D直到n次。

(4)结束。

四、主要定级因素程序框图和程序清单举例

(一)生活设施完善度

程序框图如前述。程序清单为:

程序清单1

img100

img101

img102

img103

(二)道路通达度

1.功能:本程序建立道路通达度二级数据库。在屏幕上通过键盘输入道路的等级、长度、作用指数;从而计算出各级道路的相对半径,作用分(功能分)等。

2.变量说明:n为处理城镇评估范围内的单元(网格)数;s为评估范围面积;mo为评估城镇道路等级数;L1为道路长度(m);Kj为各级道路作用指数;d为作用半径(服务半径);dd为支路作用半径;fj为各级道路功能分。

3.数据库文件:Sd1为道路经过的所有单元的“单元号”、X1,Y1,“等级”和“方位”;Sd2为拟建立的二级数据库文件,包括道路“等级”,“长度”,“影响半径”,“作用指数”,“作用分(或功能分)”。

4.程序算法。

(1)从Sa3中统计记录个数(单元个数),放入n中。

(2)输入道路的等级mo。

(3)循环从1到mo,重复进行:①清屏及赋初值。②输出道路等级,输入对应级别的“长度”,“作用指数”,计算d与功能分值。③当循环变量等于mo时,输入支路影响半径dd(在0.3—0.75公里之间),并使d=dd。④在Sd2中写入“级数”,“长度”,“影响半径”,“作用指数”和“作用分值”,并重复执行A)、B)、C)、D)。见表2—15。

表2—15 Sd2.DBF

img104

(4)结束(见图2—8)。

5.程序清单。该程序从评估区域内道路经过的所有单元格数据库文件基础上,计算出各级道路的影响半径、功能,并建立新的数据文件Sd2.DBF。见程序清单2。

程序清单2(建立包括影响半径的数据文件Sd2程序)

set status off

set talk off

clear

clear memory

(输入道路通度度基本数据)

STORE 0.0TO D,DD

store 0to xx,yy,n,n0,g0

usr Sa3

count all to n

close database

s=100*100*n/(1000*1000)

use Sd1

count all to n0

close database

img105

input’输入道路总的级别个数’to mo

img106

rep1影响半径with d,作用指数with kj,作用分值with fj

img107

6.道路通达度作用分计算程序。

(1)功能:计算道路对每一个单元(网格)的作用分值。

(2)变量说明:n为城镇评估范围内的单元(网格)数;I1为单元号循环控制变量;I2为等级循环控制变量;d为影响半径;F2为作用分(功能分);F为中间变量(作用分值);ai为道路“方向”数;Fi为道路对某一单元的作用分值。

(3)数据库:Sa3为基本数据文件,有“单元号”;坐标X,Y;“方向”数,“方位”标志;Sd2为道路的二级数据库。存放影响半径,功能分等,见表2—15;FINZ为存放11个因素的分值,见表2—16。

表2—16 FINZ.DBF

img108

续表

img109

(4)程序方法。

第一,准备。

第二,循环变量I1从1开始,到n(单元数)为止进行循环,并显示是在“计算的单元号”;有关变量赋初值。

第三,内循环变量I2从1到n2(等级数)为止进行循环。①变量赋初值。②查询Sd1,见表2—17。如果找到单元号=I1和=I2记录,则直接在Sa2中读出作用分值,否则调用子程序计算相对距离,计算出作用分值。③各级道路对同一单元的作用分取最大者。④每个单元的作用分值乘以“方向”数对应的系数值,即为作用分的“修正值”。修正之后,即为这个单元的“作用分值”,写入FINZ数据库文件中。

表2—17 Sd1.DBF

img110

续表

img111

(5)结束(见图2—9)。

(6)程序框图。

第一,功能:计算相对距离和道路通达度作用分值。

第二,变量说明:r2——相对半径;nn——Sd1中记录数;jo——循环半径;X2——X坐标;Y2——Y坐标;

img112

k——级数;Kj——作用分(道路);f21——单元的路通作用分。

第三,数据库:Sd1——道路通过的单元及作用指数、级数,作用分等。Sd2——道路的二级数据库。Sd3——评估范围各单元的单元号、坐标、方向、方位等。

第四,程序方法:①统计Sd1中记录数,存入nn中。②在Sa3中,读出计算单元的坐标值。③循环变量J0从1到nn循环。

Ⅰ.Sd1中查找级数=K的记录。查到后读出“记录号”,坐标,计算相对半径值,在同级道路中取r2最小者。重复A。否则结束查找,即退出循环。

Ⅱ.在Sd2中,Kj=作用分。

Ⅲ.根据r2的值计算道路单元的作用分。

r2≥1时f21=0

0≤r2<1时f21=Kj(1-r)

Ⅳ.返回调用程序,并返回F21的值给调用程序变量F2。

Ⅴ.程序框图(见图2—10)。

Ⅵ.程序清单。其中“程序清单3”是计算相对半径,并取最小值(同一级道路对同一个单元格)的子程序。“程序清单4”是计算道路通达度作用分值的主程序。见程序清单3、程序清单4。

程序清单3

img113

img114

img115

程序清单4(这是计算道路通达度作用分的程序)

img116

img117

img118

img119

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈