ArcGIS For Desktop暗藏的一些“玄机”

0
分享 2014-10-11
这里为什么说是ArcGIS For Desktop中的玄机呢,其实单独来看我下面写的这些内容,也许写出来并无太大意义。只是最近在帮客户优化一个基于Engine开发的程序,发现了其实很多需要代码来完成的东西,完全可以避开,通过GeodataBase或Layer即可解决,大大减轻了开发工作量,同时,我也真是深刻体会到了ArcGIS体系真是一个“体系”,产品跟产品之间是多么的息息相关,下面跟大家分享一下:
一、shp VS geodatabase:
地震的影响场(如下图),是在Engine中基于客户提供的算法生成的,另外也可以通过工具绘制,下面我要着重说的是基于工具绘制的数据编辑的问题。绘制工具(Engine开发的)是基于贝塞尔曲线绘制的,用少数的几个节点就可以构造出影响场,绘制完以后是个Element,最终是要存入到数据库中,并且能够进行修改。如下图,如果再次编辑时有(左图)这么多节点,相信谁也忍受不了。而如果编辑状态如(右图)则能达到很好的编辑效果。

原因很明确:shp数据只能存储点、线、面而不能存储弧段,而geodatabase是可以存储弧段的。
再举个例子:如下绘制两个圆,编辑状态下在shp中和geodatabase中的存储方式是不同的,shp中是存储了很多节点,而geodatabase中只存了一个点。(注:在绘制时都是一个节点,因为绘制后其实是一个element)


二、基于Layer解决了标注位置放置问题
如下是三个要素都是polyGon,标注的位置是不对的(插曲:之前开发团队为了让标注问位置符合实际,将polyGon存成环才解决了此问题)


其实不需要存成环,一方面加大了代码开发量、另一方面给编辑内部多边形时,会出现空隙,所以后来客户要求又改回存成PolyGon,改完后就发现出现了压盖问题。后来通过在Layer中设置符号显示权重接口解决压盖问题:

三、互相压盖的数据顺序显示问题:
ArcGIS在存储polyGon数据时,先存入哪个数据哪个数据就在底下,对于地震行业的影响场数据,毫无疑问,是需要将最大的这个多边形放到最底下,也就是说最在入库时,最先要存这个大的多边形,依次类推。所以在用Engine写程序时就需要判断一下。

其实我们完全可以在lyr中进行符号权重的控制,程序中加载lyr就可以了,我们在做地图配图时可以根据符号进行先后顺序的设置,这样就不会存在小的多边形被大的多边形压盖住的问题了。







文章来源:http://www.cnblogs.com/esrichina/archive/2012/08/26/2657315.html

0 个评论

要回复文章请先登录注册