Zade's Weblog

程序人生

Monthly Archives: 9月 2009

思维的否定与肯定-display模块的设计反思

       从接口到实现,display模块大的重构就进行了5次之多,小规模的重构我自己都记不清楚了. 发展到现在, 从设计的角度来看,我发现好像回到了最原始的状态. 最早的时候我就是这样的设计的,或者至少我认为是这样的(我并没有真实的记录当时的思考历程).那么为什么中间经历如此之多的重构,我这样做的往返跑,难道真的是无用功?

      总结我进行重构的原因,有主要的两个方面:1)GeoAPI的设计, 我没有GIS的一线的需求,GeoAPI几乎就是我的最高指挥官,在一定程度上是盲从的;2)通过和一线的需求人员lyp的讨论,我不得不修正原来的某些设计.简单的说,GEOAPI的不完善,我对一线需求不确定是导致重构的两个根本原因.

     从我的角度来说, 值得反思是我有机会和一线需求人员早些时候沟通, 但是我总是不屑,这是我的错误. 但是我也可以为自己辩解, 在我没有从实现上确保以前,我真的可以和需求人员有成效的交流吗?

      GeoAPI的问题则更加的直接, 他没有考虑符号库,没有对符号原子和复合的支持,现在看来,真是不可思议,但这就是现实; 回想起我盲目笃信GeoAPI的从前,甚至有些可笑.

       但是,这也不正是我自己的成长历程吗?

我收录一点鲁迅的文字,聊以自慰:

"现在是一年的尽头的深夜,深得这夜将尽了,我的生命,至少是一部分的生命,已经耗费在写这些无聊的东西中,而我所获得的,乃是我自己的灵魂的荒凉和粗糙。但是我并不惧惮这些,也不想遮盖这些,而且实在有些爱他们了,因为这是我转辗而生活于风沙中的瘢痕。凡有自己也觉得在风沙中转辗而生活着的,会知道这意思。"(鲁迅<<华盖集>>题记)

排序在流式标注的作用

所谓流式标注,指的是标注算法率属于贪心算法.

可以这样描述流式标注: 按照某种次序遍历所有要素,如果在当前条件允许的情况下,对标注进行定位和渲染;如果不满足条件,则进行下一个要素,直至遍历完所有的要素.

流式标注的特点是不进行回溯,所以它的效果不一定是最优的;但是速度较快,效果也基本满足实际的需求.

流式标注的一个前提是按照某种次序,在实际中,我们一般按照某个"重要性"字段排序.直观的说来,就是重要的要素先标注,次要的要素后标注.

如果我们不指定所谓的重要性字段,也就是说假定要素的重要性是一样的,让标注算法随机的指定要素的次序,会有什么后果吗?

为了出图,我们需要把label转换为annotation.一般情况下如果二者是一样的,例如相同的数据源和配置样式,那么annotation和label是一样的,所谓的"所见(label)即所得(annotation)".

如果是标注算法随机的指定要素的次序,那么也许会导致二者的次序不同. 在流式标注的算法中,会造成标注的结果不同.我们在实际的测试中遇到了这个问题(结果样图是anno_5w.bmp和pt_5w_no_halo.bmp).

如果是排序的话,则没有这个问题.