原文发布时间:2016-11-24

翻译文章链接:https://knowledge.safe.com/articles/1283/sherbendgeneralizer-example.html

点击:示例模板下载

简介

SherbendGeneralizer是能够做到“智能”概化(generalization)的FME转换器。它能够保留原始要素的拓扑结构。

Sherbend算法的目标是,根据线要素弯曲部位的分析,减少线要素不必要的细节。Sher bend算法是一个基于约束条件的算法,它保留输入的点、线要素的拓扑结构。Sherbend算法通过直径参数(Diameter参数)选择弯曲部位,然后通过迭代概化线要素的弯曲部位。在解决线要素冲突时,可能会消除,减少,或合并弯曲部位。

概化线要素弯曲部位的策略如下:

1、 使用“Diameter”参数计算参考圆的面积

2、 对每条线,决定弯曲部位的位置

3、 对每个弯曲部位,计算它的周长。然后,构造一个有相同周长的圆。最后,弯曲部位的校正面积采用该圆75%的面积

4、 对每个弯曲部位,如果它的校正面积低于参考圆面积,并且满足拓扑约束条件,那么概化弯曲部位

5、 重复上述步骤,直到没有更多的弯曲部位需要概化

示例

例1:拓扑检查

通常,一个简单的示例比一堆解释性说明更直观。这就是我使用SherbendGeneralizer反复处理一个数据集,直到理解该转换器是如何工作的原因。

FME中已有的概化算法既未考虑要素间的相互关系,也未考虑对每个单独的要素可能造成的不好的改变。

下图分别是等高线和高程点在“旧”的概化转换器处理之前和之后的截屏。

“旧”转换器:

概化前:

通过Generalizer转换器概化后:

我们可以观察到,概化后的等高线至少有三种问题:

1、 一条等高线存在自相交

2、 高程值为437的高程点在转换前后,分别位于440等高线的不同两侧,导致等高线和高程点的位置关系出现错误

3、 等高线之间相交

转换器SherbendGeneralizer能够处理上述三个问题:

它能够控制:

1、 自相交

2、 线之间相交

3、 Sidedness,也就是,它确保没有改变线与点之间的位置关系。

SherbendGeneralizer转换器:

如果概化时产生了改变,该转换器会查看是否存在冲突。转换器的输出端口包含一个Conflicts端口,如果对该端口所示的弯曲部位做概化处理,那么,概化后的线会与选择的约束条件冲突。

转换器SherbendGeneralizer示例相关推荐

  1. Clipper转换器使用示例

    原文发布时间:2017-12-29 10:40:09 原文地址: https://knowledge.safe.com/articles/23184/example-using-the-clipper ...

  2. 进制转换器java程序_Java实现复杂的进制转换器功能示例

    本文实例讲述了Java实现复杂的进制转换器功能.分享给大家供大家参考,具体如下: 这是用java写的进制转换器,包括10.2.8.16进制之间共12种的相互转换.输入一个要转换的数之后,按提示选择所采 ...

  3. jpa 返回数据转换_如何使用JPA类型转换器加密数据

    jpa 返回数据转换 几天前,我读了Bear Giles关于2012年使用JPA监听器进行数据库加密的有趣文章.他讨论了对加密解决方案的要求,并提供了JPA监听器的代码示例. 他的主要要求是: 提供不 ...

  4. flutter dio 示例

    GIT HUB常常打不开,保存一份以方便随时查看. 示例 发起一个 GET 请求 : Response response; var dio = Dio(); response = await dio. ...

  5. 零中频接收机频率转换图_用网络分析仪测量 DC-DC 转换器的反馈环路特征

    DC-DC 转换器的基本工作原理 首先,我们快速概括一下 DC-DC 转换器的基本工作原理.我们以一个简单的.采用电压控制模式的非隔离单相降压转换器为例. 图 1 的原理图和时序图显示了 DC-DC ...

  6. springboot自定义消息转换器HttpMessageConverter

    在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制就是利用HttpMessageCo ...

  7. XStream转换器: 处理xml节点中既有属性又有值

    1.需处理的数据: <orderInfo orderName="酸奶" orderType="奶制品" orderPrice="5.00&quo ...

  8. 参数调整 新部署rac_开工的欲望 | AI Studio悄然上线新功能,用你的模型生成在线预测服务...

    开工第一天,小伙伴们是不是还没有从过年的状态转换过来?今天给大家介绍一个AI Studio新功能,能让大家用自己训练好的模型,轻松生成在线预测服务,通过在线API调用,而且是免费的哦~ 大家是不是已经 ...

  9. Django URL

    一.创建Django项目: 用命令行创建: 创建项目:在终端通过命令:django-admin startproject [项目名称] 即可创建,比如:django-admin startprojec ...

最新文章

  1. log4net 配置参数意思
  2. 独家 | NLP详细教程:手把手教你用ELMo模型提取文本特征(附代码论文)
  3. Servlet-监听器(ServletContext、Request、Session)
  4. C语言程序设计第三次作业——选择结构(1)
  5. Docker-compose配置Mysql,Redis,MongoDB
  6. linux四种集群是什么,lvs四种集群特点及使用场景
  7. JavaFX 2 GameTutorial第1部分
  8. java实现愤怒的小鸟游戏
  9. andriod studio 查看项目依赖_Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图...
  10. CoreData简介
  11. 【Day05】Html5 有哪些新特性?如何处理 Html5 新标签的浏览器兼容问题?如何区分 Html 和 Html5?
  12. Facebook再次发生全球性宕机
  13. qt designer 自定义插件找不到指定的模块_go与qt的新酒老瓶
  14. 关于云计算的讨论,一年就等这一回!
  15. Netty(3)Time protocol
  16. tinyxml读xml
  17. 数字电子技术基础(六):译码器、数据选择器
  18. 戴尔计算机没有硬盘驱动,如果Dell计算机无法从硬盘驱动器启动怎么办
  19. 利用EasyPub为Kindle制作mobi格式书籍
  20. NR 5G 无线接入网

热门文章

  1. Substrate 基础教程(Tutorials) -- 模拟网络 添加可信节点
  2. html语言需要dw吗,DW(HTML-基础知识点1)
  3. 【Pytorch】Pytorch深度学习实战教程:超分辨率重建AI与环境搭建
  4. 谷歌G1反抗iPhone
  5. vscode中用快捷键 Alt + Shift + F 格式化代码不生效的问题
  6. javascript开发微信小程序,怎么把手写稿子转换成word,如何快速把手稿转换为电子稿
  7. 把简单的 Postman,玩出花样?
  8. 中国联通MEC边缘云架构与部署实践
  9. 微信小程序实现蓝牙打印(图片、二维码、文字)
  10. 3D角色遮挡住UI的实现,关于Stencil Buffer,描边,以及其他