我们付出一些成本,时间的或者其他,最终总能收获一些什么。
需求一:手头上有很多wkt文件,每次都是在QGIS中,用wkt的插件将wkt读取后导出shp,一个一个添加,机械又浪费时间,想着开始学习FME,在FME中有没有办法能够将wkt转换为shp,可以的话就可以批量进行wkt转shp了。【目前没有思路,原本是打算用AttributeSplitter进行分割,但FME报错说内存不够,换了环境变量依旧如此,看后续学习能否给自己提供思路,我人都傻了,wkt转shp的格式转换在FME中是支持的】
需求二:由于wkt存在拓扑的问题,主要是面要素存在自相交的问题,我平时一般都是用QGIS将wkt转出shp,再在arcmap中创建地理数据库,创建要素集,将shp导入后,创建拓扑。这样才能定位到问题的位置,否则使用检查几何,也只能检查出问题,无法进行定位,在arcmap中这个流程有点麻烦。学习FME,想了解下FME中是否有其它更为便捷的解决方案。
对于需求一,用AttributeSplitter时分割wkt报内存不足的问题,可能方案不太对,后续再上网搜索下思路。搜索到FME是支持wkt转换为shp的,自己测试的时候存在问题,是因为将wkt文件拉到画布中读模块默认为CSV导致无法空间化。将读模块修改一下,改为wkt就可以了,想要获取fme_basename,需要在读模块进行对其进行暴露。由于修改用户属性改为自动获取,fme_basename字段也无法写出,于是多加了一个AttributeCreator,将fme_basename写入到name字段中
对于需求二,大概了解下可以使用GeometryValidator转换器和Intersector转换器
选择OGC验证,查出自相交的位置,使用AttributeSplitter进行分割
由于学艺不精,直接用vertexCreator写出点坐标报错,就直接写出为excel,经过在FME-HOW-TO中的学习,可以使用FeatureWriter转换器,写出为excel中的数据空间化,正好,本周末下雨,万一在家学习呢。优化下流程
再通过读取该excel,使用vertexCreator创建点,写入到shp中,方便错误的定位。
后续,使用上述的GeometryValidator转换器查面相交有点问题,有一个像元的自相交没有检查出来,最后还是使用的Intersector检查出来的,后续对GeometryValidator各个参数设置需要有个系统的了解。