64位FME Server 与32位FME Desktop协同处理MDB格式数据
作者: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时,如何来实现以上步骤呢?
第一步:软件环境准备
安装ArcGIS软件,FME读写MDB需要安装ArcGIS软件;
安装64位FME Server,本文示例安装版本FME Server 2019.1.3.1 Build 19643-win64
安装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格式数据相关推荐
- sql server 2005 32位+64位、企业版+标准版下载地址
sql server 2005 32位+64位.企业版+标准版下载地址 sqlserver2005 enterprise版本的数据引擎只能在server03上安装 sqlserver2005开发版,可 ...
- 64位系统下一个32位的程序究竟可以申请到多少内存?
64位系统下一个32位的程序究竟可以申请到多少内存? cpu的位是指一次性可处理的数据量是多少,1字节=8位,32位处理器可以一次性处理4个字节的数据量,依次类推.32位操作系统针对的32位的CPU设 ...
- 在64位操作系统上运行32位的程序
运行 32 位程序 WOW64 子系统使 32 位程序能够在基于 x64 版本的 Windows Server 2003 和 Windows XP 专业 x64 版的运行而不用修改.WOW64 子系统 ...
- 64位Ubuntu上编译32位程序
1.确认主机为64位架构的内核,应该输出为adm64,执行: $ dpkg --print-architecture 2.确认打开了多支架功能,应该输出为i386,执行: $ dpkg --print ...
- 在64位linux下编译32位程序
一般情况下我们最好是在一个平台上编译本平台的二进制程序,比如在32位平台上编译32位程序而在64位平台上编译64位程序. 现在64位的系统(这里主要指x86_64系统,包括AMD64和Intel的EM ...
- 64 大小_电脑系统32位和64位有什么区别
众所周知,windows系统有32位和64位,但这两者有什么不同呢?什么样的电脑装什么版本的呢?笔者就简单的来讲一下两者的区别. 一.支持的内存不同 32位的操作系统,最多支持4G的内存,实际内存为3 ...
- 你为什么需要在64位系统下用32位程序
在64位系统下,用64位的程序自然是能够充分利用cpu中的64位指令和64位的地址空间,可有的时候,我们却不得不在64位系统下使用32位的程序. 64位和32位 对于64位还是32位,首先要从概念上把 ...
- 64位计算机安装32位,64位电脑装32位系统,小编教你64位电脑怎么装32位系统
对电脑有深入了解的用户就知道,64位电脑一般指的是CPU是64位处理器,64位机器要安装64位系统,发挥硬件最佳性能,当然了,64位电脑也可以装32位系统,因为64位电脑是向下兼容,支持64位系统也支 ...
- 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 ...
最新文章
- 047_Object对象
- 什么是整型类型?Python整型详细介绍
- Http 请求处理流程(转)
- 【剑指offer - C++/Java】7、斐波那契数列
- 基于JAVA+Spring+MYSQL的公共自行车管理系统
- 氮化镓充电器哪家好_氮化镓充电器又添一员猛将
- python编写makefile_Python项目中的Makefiles
- [转载] c++与python 数据类型对应
- UUIDGenerator
- centos8安装和使用fmmpeg
- 1、JavaScript入门
- 机器学习算法原理与编程实践-郑捷著 读书笔记—第一章part1
- 用c语言程序判断谁是小偷
- Uni-App - 接口 - 第三方登录(H5+ APP)(Hcoder 版)
- mc服务器不显示皮肤,游戏中不显示皮肤的可能原因
- ultimate++使用_使用Ultimate Custom Widget个性化您的Android主屏幕
- easyExcel设置最后一行的样式【可以拓展为每一行】
- 计算机网络考研_概述
- 闹市里的宁静一隅,乡村慢生活#观澜山水田园文化旅游园
- python 典型变量分析
热门文章
- 冷暖自知!4年Java小伙收获美团Offer,分享他的社招Java岗4面面经
- OceanBase 2.2初体验
- RuoYi-Vue 分离版 收获与总结
- A*,那个传说中的算法
- Linux服务器12小时制转24小时制
- ubuntu18.04下YOLOV4测试和训练自己的数据集
- 第十二届蓝桥杯电子类嵌入式设计与开发省、国赛经验分享
- 从u盘到计算机内存的过程,U盘装系统步骤图解(超详细)
- 参加“灵狐公司”的技术年会,感受最新MS OFFICE 2007的应用价值!
- Scrapy爬虫实践之搜索并获取前程无忧职位信息(基础篇)