第二章 确定性区域间拓扑关系的分析与实现
确定区域拓扑关系又由于输入数据类型的不同分为:栅格区域层次拓扑关系模型,矢量区域层次拓扑关系模型(蛋黄模型)。首先研究栅格数据问题。
第一节 栅格区域层次拓扑关系
1.1栅格数据结构
栅格数据的概念:
栅格数据:栅格数据结构实际就是像元阵列,每个像元由行列确定它的位置。由于栅格结构是按一定的规则排列的,所表示的实体位置很容易隐含在网络文件的存储结构中,且行列坐标可以很容易地转为其它坐标系下的坐标。在网络文件中每个代码本身明确地代表了实体的属性或属性的编码。
栅格数据的优点:
在栅格数据结构中,点实体表示为一个像元;线实体则表示为在一定方向上连接成串的相邻像元集合;面实体由聚集在一起的相邻像元结合表示。这种数据结构很适合计算机处理,因为行列像元阵列非常容易存储、维护和显示。
栅格数据的缺点:
用栅格数据表示的地表是不连续的,是量化和近似离散的数据,是地表一定面积内(像元地面分辨率范围内)地理数据的近似性,如平均值、主成分值或按某种规则在像元内提取的值等;另一方面,栅格数据的比例尺就是栅格大小与地表相应单元大小之比。像元大小相对于所表示的面积较大时,对长度、面积等的度量有较大影响,这种影响还与计算长度、面积的方法有关。
1.2栅格数据的取值方法:
栅格数据的取得,可在专题地图上均匀地划分网格(相当于将一透明方格纸覆盖在地图上),每一单位格子覆盖部分的属性数据便成为图中各点的值,最后形成栅格数字地图文件。
中心点法:用处于栅格中心处的地物类型或现象特性决定栅格代码。
面积占优法:以占栅格最大的地物类型或现象特征决定栅格代码。
长度占优法:当覆盖的格网过中心部位时,横线占据该格中的大部分长度的属性值定为该栅格的代码。
重要性法:根据栅格内不同地物的重要性,选取最主要的地物类型决定相应的栅格单元代码。对于特别重要的地理实体,其所在的区域尽管面积很小或不在中心,也采取保留的原则。
为了逼近原始数据精度,除了采用上述几种取值方法外,还可以采用缩小单个栅格单元的面积,增加栅格单元总数的方法,这样行列数也相应增加,每个栅格单元可代表更细小的地物类型,然而增加栅格个数、提高精度的同时也带来了一个严重的问题,那就是数据量的大幅度增加,数据冗余严重。
本论文并不对数据采样进行更具体的操作,程序中所使用的数据全都是经过处理的标准数值数据(每一个值都有其确定的含义)。
1.3分明栅格区域拓扑关系RCC5
当 和 为分明栅格区域时,即每个栅格单元的取值仅为Y(属于)或N(不属于),三个谓词的取值范围为 两个布尔值, 、 和 的定义分别如下:
1.3.1下面开始程序的设计:
在开发语言上,我是用最常用的C++语言,完全可以实现要求的全部功能。
编译器,选择GCC(可移植性强,功能强劲)
选择编程风格,风格决定了将来程序的扩展性,可维护性。所以我选择了面向对象编程风格。
以类作为基础先实现RCC5,再通过继承扩展到RCC8。
现在我将选择一种方式巧妙的求出三原谓词P,C和I ,这是实现RCC判断的基础。
算法设计
栅格数据的拓扑关系判断主要是网格单元关系的判断,所以整体设计思想是以网格单元判断开始的。由于程序录入文件的时间远高于程序处理的时间,所以为了提高效率,将把处理尽量集中在录入过程中。
v100.h
/* 实现 分明栅格 RCC-5 关系 判定*/
class ClearGrid
{
public:
/*
使用四位 数据 分别 第1位: Grid1 占用位 为1表示占用 第2位:Grid2占用位
第3位:表示此栅格 是否被使用判断位 第4位 : 1和2位都为1 置位 表示此栅格相交
*/
bitset<4> g[UPPER][UPPER];
bool P,C,I;
public:
ClearGrid();
void RelateJudge();
void Print();
~ClearGrid(){}
};
栅格数据由于占用空间较大,又由于是确定栅格,状态较少,所以本程序采用了位存储方式
#define UPPER 10 这是本程序定义的栅格数据大小,在实际计算中根据需要更改。
bitset<4> g[UPPER][UPPER];
本来使用bitset<2>就已经可以满足存储要求了,可是我发现这样需要对整个数据结构扫描3次,才能判断出三原谓词P,C和I ,运行效率低,而如果使用一位状态位bitset<3>则在一遍扫描中需要对整个栅格进行一遍扫描,时间效率有所降低。因为在判断过程中对于没有被占用的位是不需要判断的。这样我设计了两个状态位,很好的提高了时间效率。对于大数据量的程序设计,时间效率应是主要的。
实现过程
利用类的特点,在ClearGrid();函数中实现数据录入和数据格式转化,并完成状态位的设置。
在RelateJudge();函数中完成对三原谓词P,C和I 的判断实现RCC算法。
实现效果
先使用Gcc编译成可执行文件;本程序v100.exe;使用cywin 键入 ”./v100 < in.input”;
in.input 为输入文件,输出结果显示RCC5的一种情况 如EQ 。
本程序使用字符界面。
此时三个谓词共有8种可能的组合,如规定 ,根据约定 和 ,则显然 和 ,根据此约束条件,可以将8种组合减少为5种可能成立的情形,对应于分明栅格区域间的RCC5关系,对应关系如表。
EQ
PPI
PP
PO
不符合约束条件
DR
T
T
T
T
F
F
F
F
T
T
F
F
T
T
F
F
T
F
T
F
T
F
T
F
本文地址:http://com.8s8s.com/it/it37150.htm