FME与空间数据库的读写

时间:2024-05-20 10:50:40

原文发布时间:2014-03-05

作者:一峰

FME支持很多种数据库格式,包括OracleArcSDESQLServerDB2googlePostGISMySQL等等,而我们经常用到的空间数据库可能只有Oracle SpatialArcSDE,下面以ArcSDE为例介绍空间数据库的参数设置。

我们对空间数据库的操作无非就是读取和写入,

空间数据库读取

FME通过添加读模块进行数据读取,数据库的读取首先要连接数据库,连接方法前面博客中有详细介绍http://blog.163.com/[email protected]/blog/static/14049249220121019532878/

读模块添加完成后,高级设置中有3个常用的参数:

FME与空间数据库的读写

1.     用于加载数据库的表

2.       WHERE Clause:条件过滤,这个参数非常重要,有的表数据量非常大,但是我们并不需要读取表的全部数据,只需要读取满足部分逻辑条件的数据,就可以通过输入条件进行查询,eg: XZQ LIKE “%12306%,这样大大提高模板效率。

3.       Minimum XMinimum YMaximum XMaximum Y:这4个参数是对空间数据而言的,通过设置X/Y的最大最小范围进行空间查询,与Clip to Search Envelope参数配合使用,Clip to Search Envelope设置为YES意味着以范围进行裁剪(有的要素部分在范围内),如果设置为NO,则不裁剪(那么只有完全包含在范围内的要素才被查询出来)。

我们以前的做法可能是将整个表读取,通过tester进行逻辑判断,或者通过SpatialFilter进行空间判断,这样的话效率非常低,因为如果数据上千万条,那么FME光读取数据的时间就会很长,然后处理,效率极低;如果通过上面的参数设置,那么会大大减少数据的读取量,提高模板效率。

 

小结:通过参数设置,可以根据逻辑和空间关系进行查询,提高数据读取效率。另外这些所有参数都可以进行发布,通过用户输入或者外部调用的方式传递。


空间数据库写入

FME是通过添加写模块进行数据库写入,数据库连接介绍:

https://blog.****.net/fmechina/article/details/80872539

数据库写入同样有一些参数设置对我们工作帮助很大

FME与空间数据库的读写


1.    否先删除表,如果写入数据库中已存在同名表,设置为YES则删除已存在的表,重新创建表;如果设置为NO,则直接写入已存在的表中。

2.       Truncate Table First:是否先清空表,如果写入数据库中已存在同名表,设置为YES则先清空表中的数据,然后写入;如果设置为NO,则直接写入已存在的表中

3.       Update Key Fields:更新关键字段,如果对数据库中的要素进行更新,则此处设置更新的关键字段,当然这里需要与FME的一个格式参数(fme_db_operation)进行配合使用,下一篇博客专门介绍fme_db_operation,如何实现数据库更新。

4.       Feature Dateset:设置关于设置要素集,要素集就是要素类的集合,用于对数据进行分类,这里要素集名称。

另外,在写模块高级中有两个非常重要的参数,对我们的工作帮助非常大:

FME与空间数据库的读写

5.       Features to Write Per TransactionFME事务处理机制,设置每次事务提交的要素个数,事务一旦提交,就无法回滚。那么这个参数对我们有什么用呢?实际上我们在数据入库的时候经常会出现,数据入库到一半的时候,由于某种原因模板运行失败了,那么我们希望写入的数据进行回滚,除非一次性成功,否则回滚,那么就可以将这个参数设置到足够大。

6.       Ignore Failed Features:是否忽略失败要素,我们在数据写入的时候经常会遇到数据自相交、无效等问题导致数据入库失败,如果设置为YES,则忽略掉这些错误要素;如果设置为NO,则只要导致写入失败,模板就停止,这可以与事务参数进行配合设置。

总结:通过FME的这些参数设置能够为我们数据库操作带来很多方便,但是最主要的还是要根据我们工作中的实际问题和实际需要进行参数设置,才能为我们工作提高效率。

下一篇将继续介绍数据库更新,通过哪些设置来完成对数据库的增//改。