政府网站集约化建设 总结/谷歌seo网站推广
原文发布时间:2012-12-17
作者:一辉
笔者最近遇到一个客户,想要使用FME将2维的shp数据生成2.5维数据,然后将结果输出到pdf里面给领导作展示用。然而在制作的过程中发现发现部分的图形生成的结果是错误的。如下图:大家仔细看左边最小图形的形状是错误的。
稍微想下就不难发现导致这种错误的原因是,小长方体的各个面的放置顺序不对,导致的图层间的压盖以至于显示达不到预期效果。
既然发现了那该如何解决呢,长方体的各个面的压盖顺序又跟什么有关系呢,笔者经过测试,发现长方体的各个面的排列顺序与原始的二维数据的房屋面的各条边的顺序是相同的,所以想要得到正确的图形,首先需要改变原始二维数据的各条边的排列顺序,那么各条边该如何排序才能生成正确的长方体呢?
我们首先了解下FME生成2.5维数据的采用的方法,FME较常采用的方法,首先在原先的多边形房屋的基础上进行Y方向的平移,平移的高度即为房屋的高度,然后在进行三维仿射,仿射完成后进行二维化生成侧面即可,顶面即为前面平移得到的面。
了解了FME生成2.5维数据的方式之后,笔者测试结果是只要找到房屋最左边的点即X坐标最小的点,然后其余的点以此点为起点逆时针的方向排序,则可生成正确的2.5维图形,当然采用这种方法目前没发现问题,不知道后面会不会出现问题。期待各位大侠测试指正。
方法确定以后,就是实现的问题了,给面的各个点重新排序过程并不复杂,附上模板感兴趣的读者可以参考下,当然如果有更加优化的方法的话,也希望大家多多分享。