作者:ZJ
在FME所支持的数据格式中,部分数据格式受限于软件位数,例如常见的GIS数据格式包含SHP(Esri Shapefile)、GDB(File Geodatabase)、MDB(Personal Geodatabase),其中SHP和GDB格式数据采用32位FME和64位FME都可以读写,但是MDB格式只能通过32位的FME进行读写。
那么,当用户提供的格式是MDB格式数据,输出的结果也需要是MDB格式数据时,用传统的32位程序对大量数据进行空间计算时,内存的使用效率不高,FME运行过程中出现MDB内存超限的错误情况,因为在大量数据处理时,32位程序对内存的使用最大只能到4G,但是64位程序对内存的使用远大于32位程序。
针对以上情况,我们在实际运行过程中发现,读写MDB格式的数据所需要的内存并不多,但是MDB数据读取后,在任务过程中进行大量空间计算等操作时,所需要的内存就会增加。因此我们可以考虑用在通过64位的FME去调用32位的FME把MDB数据转为GDB数据,再由64位FME读取GDB数据,数据处理完成后输出到GDB格式再由32位的FME转为MDB格式。文字有点儿绕,看下图:
简而言之,主要分为以下几步:
1、用64位FME软件调用32位FME软件将MDB转为GDB数据;
2、用64位FME软件读取GDB数据进行数据处理,最后输出GDB数据;
3、用64位FME软件调用32位FME软件将GDB转为MDB数据。
以上过程在只通过FME Desktop产品进行数据处理时,则不需要这么复杂,直接安装不同位数的FME软件即可分步执行;但当使用FME Server来提供服务又不能在同一台计算机中同时安装不同位数的FME Server时,如何来实现以上步骤呢?