FME模板兴趣班第五期任务小结

 

作者:欣欣 

      现在每次出模板兴趣班题目的时候,其实还蛮费脑筋的,一方面希望题目能够跟大家的工作相结合;其次还要考虑不同技术水平的人都能参与进来;然后还要考虑题目的通用性,是否对大部分人都有帮助。所以很感谢一直以来热心给我们提供题目、关注模板兴趣班、积极参与的各位同学。

 

    模板兴趣班第五期的题目是很典型的一个题,也是大家工作中经常会遇到的最常见的CAD到GIS的数据转换。只是源数据不是传统的AutoCAD DWG格式,而是CASS软件生产的DWG格式,也正因为如此,很多人在看到题目的时候第一反应就是“太难了,我不会,我都没用过CASS”,然后就放弃了做题的想法。其实,问题并没有那么难。

 

一、题目要求

     1、将CASS生产的DWG格式的地形图转到GDB格式的成果库,成果库参考“数字线划图数据标准”建立,转换时CASS与GDB的要素、图层映射关系也根据“数字线划图数据标准”进行映射。

     2、数据检查:检查dwg中要素几何类型与目标GDB图层几何类型不一致的,输出数据检查文件。

 

     题目分析:这个问题其实是工作中常见的生产数据入库的问题,很具有典型性。

      这类问题的解法其实很简单,也具有通用性,大概的流程如下:

    分析数据生产标准和数据库标准,通过标准建立生产数据和库标准之间的关系,特别是要素与数据库图层之间的映射关系,把要素与图层之间的映射关系建立一个表格,如EXCEL格式的映射表,如下所示:

 FME模板兴趣班第五期任务小结

    在表格中建立CASS码、GB码、GIS层名、GIS图层几何类型之间的关系。

    在模板中读取源数据和映射表,然后通过诸如FeatureMerger这样的转换器进行关联,让要素获取入库的图层等信息。

    这次题目中提供的“对应关系表.xls”文件中已经罗列了部分要素的映射关系,对于其他无映射关系的在这次转换中可以不考虑。

      1)在关联时,统计无映射关系的要素的编码进行输出,便于人工检查和完善映射表,确保要素完整的转换到GIS库中。如果使用FeatureMerger进行关联,要素连接Requestor端口时,NotMerge端口输出的就是无映射关系的要素了,这些要素的要素编码并去重复,就可以得到无映射关系的要素编码。去重复可以使用Matcher按照要素编码去重。

      2)数据检查:检查dwg中要素几何类型与目标GDB图层几何类型是否一致。在映射表中,每个要素通过“几何类型”可以知道该要素理论的几何类型,A代表面,L代表线,P代表点。如果实际的几何类型与理论几何类型不一致,则输出该要素。

    这个步骤,在要素进行了关联之后,可以有几种方式进行判断,一种是通过GeometryFilter把点、线、面分别输出,再判断点、线、面的“几何类型”字段是否分别是“P、L、A”,不一致的则输出。另一种可以通过fme_geometry这个格式属性进行判断,fme_geometry为fme_point、fme_line、fme_polygon对应的“几何类型”字段是否分别为“P、L、A”,不一致的则输出。

     3)要素属性处理。在本例中,主要的要素属性是GB码,对应数据库中的CODE字段。其次是高程点,需要提取高程值,存入“ELEV”字段中。对于高程点,通过高程点的要素编码进行过滤,然后提取Z值存入“ELEV”中。

      大概的过程就是如上的几个步骤,在本次题目中,已经提供了一个映射表和按照标准建立好的成果库,所以让整个过程变得更简单。(当然提供的映射表很不完整,有大部分要素无法关联,不过重要的是让大家学习此类问题的解法。对于没有关联上的要素需要在作业中输出。)

  

       二、作业情况

    本期一共收到7份作业,作业情况如下:

 FME模板兴趣班第五期任务小结 

 FME模板兴趣班第五期任务小结

    本次作业主要考虑大家模板运行结果的正确性,“入库要素数”、“几何类型错误要素数”、“未映射关系的要素编码数”的数量分别是“8546086”。

      1、“风~~涟漪”和“活力贝贝”的模板正确性较好。我自己(欣欣)的模板主要错误在于没有把GB码赋值给CODE字段,而把CASS码当CODE值了;

      2、方法上面,大家的方法大同小异,基本都是通过FeatureMerger关联图层信息,再通过GeometryFilter进行几何类型的判断。不过因为一些细节还是出现了结果的差异;

      3、在数据处理方面,可能每个人还加入了一些自己的数据经验,比如“活力贝贝”计算了线的长度输出到GDB中,“太阳@指纹”大部分都是平时处理数据的经验,这些经验在实际应用中都非常重要,也值得大家学习;

      4、在读取源数据的时候,为了保证源数据的几何不被破坏,特别注意参数Expand Blocks into entities”(是否打散块为实体)应该设置为“No”。

 

三、小结

 

    这个题目很基础,看似步骤很多,但是只要弄清楚了,就能够对CAD到GIS的转换得心应手了。了解了这个处理过程,还能够有助于帮助大家理解和掌握用FME做数据入库前的质检。

所有的问题难的其实不是题本身,而是是否能迈出第一步的决心。希望更多的同学加入兴趣班,通过参与,学习和掌握FME。

 

    四、FME模板兴趣班第六期

       题目及要求见附件。

FME模板兴趣班第五期作业及第六期任务说明共享