如何在数据库格式中保留CAD的符号和文本

原文发布时间:2015-01-27

作者:糖糖

这篇文章探讨用一种简单的方法来存储复杂的CAD符号到数据库格式中。这在需要从CAD转为GIS再转换回CAD、并且要求保留之前的符号和文本(或注记)时会有帮助。

最常见的两种CAD格式,Microstation DGN  AutoCAD DWG都有着各自的符号,这些符号通过很多属性来定义。在数据库中要创建表格字段来存储这所有的属性会很耗时,但是绝大部分属性都需要保留下来,用于写回CAD的时候需要。此外,为了表现CAD特征,FME会另外增加格式属性,所以数据库中的表很可能还需要更新。

还有一种选择就是将每个需要存储的格式属性打包放进一个blob字段中,在写回为CAD时可以解压出来。

FME函数@SupplyAttributes(可通过转换器FunctionCaller调用)具有一种功能,可以将要素的所有属性放在一个单独的属性中,该属性的名称结构为name:value:name:value:name:value:以此类推。@SupplyAttributes也可以将这些挑选的属性不返回到原始属性中,然而一旦选择,@SupplyAttributes会选择所有的属性,包括那些不需要的属性字段。

自定义转换器PackAttributes(通过FME Store获取)使用了一个PythonCaller来选择要素属性到@SupplyAttributes函数中,同时允许你通过设置过滤器,对要选择的属性设置前缀。这样一来,如果想要只存储DGN文件中所有的格式属性、同时舍弃所有的用户属性和FME属性,可以将在过滤器中将前缀设置为"igds_".同理,对于DWG文件来说,前缀设置为"acad_"

工作空间DGNToSqliteSqliteToDGN演示了如何实现这一过程:

DGNToSqlite中读取Microstation DGN文件MajorRoads.dgn,使用PackAttributes选择格式属性到一个新的属性"igds_packed"中,然后将几何对象和选择的属性写出到Sqlite Spatial

SqliteToDGN读取Sqlite表,使用转换器FunctionCaller中的函数@SupplyAttributes来重新存储返回到要素上的属性,然后写出到一个新的DGN文件中。

所有的这些符号都是来自MajorRoads.DGN,包括多线和自定义线型,都重新存储到新的文件中。

这种存储CAD属性的方法是可持续的。未来的FME版本中添加的任何额外格式属性都可以自动包含进来,因为添加了格式前缀,而且不需要对任何一张表做修改。

如果你想处理本机上的CAD数据,存储在数据库中,那么就需要将本地的属性提取出来分别存储到字段中。最简单的方法就是重新命名这些属性。




猜你喜欢

转载自blog.csdn.net/fmechina/article/details/80759889