GeoGeo大数据集
一、什么是GG大数据集
GG大数据集是很大的数组。比如这样的数组
BYTE data[360000][480000][6];
数组元素约需要1T的空间,GeoGeo可以创建这样大小的数组。理论上,GeoGeo数组的大小仅受外部存储空间大小的影响。
二、GG大数据集需要的硬件环境
GG大数据集只有一部分映射到计算机内存,绝大部分都在外部存储空间交换,因此需要足够的磁盘空间。
缺省情况下GG使用“D:\RsdTmp”为临时目录,大数据也使用该目录当临时缓存,因此需要D盘空间足够大。
如果需要更改GG临时目录,可将注册表中
HKEY_CURRENT_USER->Software->李国春->GeoGeo->Settings->TempPath
的值“D:\RsdTmp\”改为需要的目录。注意最后面有一个反斜线“\”。
更改节点机上的临时文件目录将上述注册表中的GeoGeo改为GGServer。
三、声明GG大数据集
普通的数组可以直接声明如
BYTE data[1000][1000][6];
大数据集声明使用
int AllocTile(声明语句);
函数,使用该函数如声明上述的1T大小的大数组可以如下
int n = AllocTile(BYTE data[360000][480000][6];);
注意参数是一个完整的数组声明语句,后面一定带有“;”号,以便解释程序确定语句的终结位置。
大数据集数组在GeoGeo脚本中总为全局变量。
创建大数据后,察看临时目录,会看到一个以变量名命名的子目录,打开该子目录可以看见一系列的文件,这些文件在需要时映射到数组的内存空间。这种数组和文件的交换方式在GG中称之为TFS(Tile File System)。
四、打开、关闭和销毁大数据集
辛苦建立的大数据集数组在结束GeoGeo脚本进程时可能不希望像普通全局变量一样被销毁,这些数据可以保留下来供后续的程序使用。使用CloseTile函数可以销毁大数据集的内存部分而保留磁盘映射。
int CloseTile(T var);
函数的参数是大数据集数组的变量名,无需关心变量的数据类型。
重新打开大数据集时使用OpenTile函数。
int OpenTile(STRING tfspath,STRING varname);
第1个参数是大数据集路径;第2个参数是打开后的全局变量的变量名,可以不指定第2个参数,不指定时使用大数据集的TFS名做变量名。
如果确实希望在脚本进程解释时销毁大数据集,可以使用FreeTile函数。
int FreeTile(T var);
此函数将内存数组变量和磁盘TFS全部删除。
五、大数据集的分块操作
大数据集的子变量以及分块存取与普通数组相同。
有关更多的GeoGeo大数据集方面内容请参阅《GEOGEO-PART1》GeoGeo脚本基础第8章第4节。
示例程序清单中下述文件
8-4-TFS创建和销毁.c
8-5-TFS删除.c
8-6-TFSOpen.c
8-8-TFS拷贝粘贴2.c
提供了有关大数据集的示例代码以供参考。