作者: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时,如何来实现以上步骤呢?

第一步:软件环境准备

  1. 安装ArcGIS软件,FME读写MDB需要安装ArcGIS软件;

  2. 安装64位FME Server,本文示例安装版本FME Server 2019.1.3.1 Build 19643-win64

  3. 安装32位FME Desktop,本文示例安装版本FME(R) 2019.1.3.1 (20191019 - Build 19643 - WIN32)

第二步:制作模板

1、制作MDB转GDB模板

利用32位FME Desktop制作一个通用型的MDB转GDB模板,这个模板只需要做数据的读取和数据的写出操作,不进行任何空间或者属性的处理。如下图:

同时,设置改模板的数据输入参数和数据输出参数,参数名可自行命名,本文如下:

S_MDB参数为输入源MDB数据;

D_GDB参数为输出临时GDB数据。

将该模板存放在某个目录中,如“D:\Workspace\MDB2GDB.fmw” ,存放路径可以自行指定,但最好不要有中文路径,同时模板名称最好不要用中文命名。

2、制作GDB转MDB模板

利用32位FME Desktop制作一个通用型的GDB转MDB模板,这个模板只需要做数据的读取和数据的写出操作,不进行任何空间或者属性的处理。如下图:

同时,设置改模板的数据输入参数和数据输出参数,参数名可自行命名,本文如下:

S_GDB参数为输入源GDB数据;

D_MDB参数为输出临时MDB数据。

将该模板存放在某个目录中,如“D:\Workspace\GDB2MDB.fmw”,存放路径可以自行指定,但最好不要有中文路径,同时模板名称最好不要用中文命名。

3、制作64位程序主模板

根据程序的需要,我们设置一下参数内容,如下图:

“FME_EXE”为本机32位FME Desktop程序安装路径下的“fme.exe”,如“C:\apps\FME2019643\fme.exe”

“GDB2MDB”为制作的GDB转MDB模板本机存放路径,如“D:\Workspace\GDB2MDB.fmw”

“MDB2GDB”为制作的MDB转GDB模板本机存放路径,如“D:\Workspace\MDB2GDB.fmw”

同时,在主模板中通过“SystemCaller”转换器的来实现32位FME Desktop程序的调用,在“SystemCaller”转换器中设置好执行语句,本文中调用模板的语法结构如下:“程序路径<空格>模板路径<空格>--参数名1<空格>参数值1<空格>--参数名2<空格>参数值2”,

MDB转GDB过程如下:

“C:\apps\FME2019643\fme.exe D:\Workspace\MDB2GDB.fmw --S_MDB D:\Workspace\Data\SourceMDB.mdb --D_GDB D:\Workspace\Data\TempMDB2GDB.gdb”

其中程序路径,模板路径,参数值均可通过参数传递,如下:

“$(FME_EXE) $(MDB2GDB) --S_MDB @Value(_S_MDB) --D_GDB @Value(_D_TempMDB2GDB)”

GDB转MDB过程如下:

“C:\apps\FME2019643\fme.exe D:\Workspace\GDB2MDB.fmw --S_GDB D:\Workspace\Data\TempGDB.gdb --D_MDB D:\Workspace\Data\Result_MDB.mdb”

其中程序路径,模板路径,参数值均可通过参数传递,如下:

“$(FME_EXE) $(GDB2MDB) --S_GDB @Value(_D_TempGDB) --D_MDB @Value(_D_MDB)”

第三步:发布主模板服务并运行

将制作的主模板发布到64位FME Server中运行,即可在一个任务中实现MDB数据在只有64位FME Server中处理的需求。

注意,在利用“SystemCaller”转换器的来实现32位FME Desktop程序的调用的过程中,如果“SystemCaller”转换器中的“Exit Code Attribute”参数如果没有设置,当调用失败的情况下,后续的流程中是无法判断“SystemCaller”转换器是否执行成功,因此我们需要设置“Exit Code Attribute”参数,以便后续利用Tester等参数来进行过滤是否执行成功。

根据帮助文档,在“Exit Code Attribute”设置的属性字段中如果属性值为0,则“SystemCaller”转换器执行成功,属性字段中为非0时,则“SystemCaller”转换器执行失败。

最后,大家在使用“SystemCaller”转换器来执行模板时,如果被执行模板中的参数过多,不知道具体怎么写执行语句时,可在主模板中通过“WorkspaceRunner”来调用模板,运行程序后可以在日志中查看到对应的“SystemCaller”执行语句,如下图,然后根据具体的参数进行修改即可。

64位FME Server 与32位FME Desktop协同处理MDB格式数据相关推荐

  1. sql server 2005 32位+64位、企业版+标准版下载地址

    sql server 2005 32位+64位.企业版+标准版下载地址 sqlserver2005 enterprise版本的数据引擎只能在server03上安装 sqlserver2005开发版,可 ...

  2. 64位系统下一个32位的程序究竟可以申请到多少内存?

    64位系统下一个32位的程序究竟可以申请到多少内存? cpu的位是指一次性可处理的数据量是多少,1字节=8位,32位处理器可以一次性处理4个字节的数据量,依次类推.32位操作系统针对的32位的CPU设 ...

  3. 在64位操作系统上运行32位的程序

    运行 32 位程序 WOW64 子系统使 32 位程序能够在基于 x64 版本的 Windows Server 2003 和 Windows XP 专业 x64 版的运行而不用修改.WOW64 子系统 ...

  4. 64位Ubuntu上编译32位程序

    1.确认主机为64位架构的内核,应该输出为adm64,执行: $ dpkg --print-architecture 2.确认打开了多支架功能,应该输出为i386,执行: $ dpkg --print ...

  5. 在64位linux下编译32位程序

    一般情况下我们最好是在一个平台上编译本平台的二进制程序,比如在32位平台上编译32位程序而在64位平台上编译64位程序. 现在64位的系统(这里主要指x86_64系统,包括AMD64和Intel的EM ...

  6. 64 大小_电脑系统32位和64位有什么区别

    众所周知,windows系统有32位和64位,但这两者有什么不同呢?什么样的电脑装什么版本的呢?笔者就简单的来讲一下两者的区别. 一.支持的内存不同 32位的操作系统,最多支持4G的内存,实际内存为3 ...

  7. 你为什么需要在64位系统下用32位程序

    在64位系统下,用64位的程序自然是能够充分利用cpu中的64位指令和64位的地址空间,可有的时候,我们却不得不在64位系统下使用32位的程序. 64位和32位 对于64位还是32位,首先要从概念上把 ...

  8. 64位计算机安装32位,64位电脑装32位系统,小编教你64位电脑怎么装32位系统

    对电脑有深入了解的用户就知道,64位电脑一般指的是CPU是64位处理器,64位机器要安装64位系统,发挥硬件最佳性能,当然了,64位电脑也可以装32位系统,因为64位电脑是向下兼容,支持64位系统也支 ...

  9. Linux下的32位C程序,linux系统c语言生成.so文件,生成64位可执行文件,在64位系统中运行32位的可执行文件...

    1.linux 系统c语言生成.o文件,---->gcc -m64 -c -fPIC test.c -o test.o 2.linux 系统c语言生成.so文件,----->gcc -sh ...

最新文章

  1. 047_Object对象
  2. 什么是整型类型?Python整型详细介绍
  3. Http 请求处理流程(转)
  4. 【剑指offer - C++/Java】7、斐波那契数列
  5. 基于JAVA+Spring+MYSQL的公共自行车管理系统
  6. 氮化镓充电器哪家好_氮化镓充电器又添一员猛将
  7. python编写makefile_Python项目中的Makefiles
  8. [转载] c++与python 数据类型对应
  9. UUIDGenerator
  10. centos8安装和使用fmmpeg
  11. 1、JavaScript入门
  12. 机器学习算法原理与编程实践-郑捷著 读书笔记—第一章part1
  13. 用c语言程序判断谁是小偷
  14. Uni-App - 接口 - 第三方登录(H5+ APP)(Hcoder 版)
  15. mc服务器不显示皮肤,游戏中不显示皮肤的可能原因
  16. ultimate++使用_使用Ultimate Custom Widget个性化您的Android主屏幕
  17. easyExcel设置最后一行的样式【可以拓展为每一行】
  18. 计算机网络考研_概述
  19. 闹市里的宁静一隅,乡村慢生活#观澜山水田园文化旅游园
  20. python 典型变量分析

热门文章

  1. 冷暖自知!4年Java小伙收获美团Offer,分享他的社招Java岗4面面经
  2. OceanBase 2.2初体验
  3. RuoYi-Vue 分离版 收获与总结
  4. A*,那个传说中的算法
  5. Linux服务器12小时制转24小时制
  6. ubuntu18.04下YOLOV4测试和训练自己的数据集
  7. 第十二届蓝桥杯电子类嵌入式设计与开发省、国赛经验分享
  8. 从u盘到计算机内存的过程,U盘装系统步骤图解(超详细)
  9. 参加“灵狐公司”的技术年会,感受最新MS OFFICE 2007的应用价值!
  10. Scrapy爬虫实践之搜索并获取前程无忧职位信息(基础篇)