首页 > 编程知识 正文

arcgis二次开发出统计图(开源gis和arcgis比较)

时间:2023-05-03 21:23:13 阅读:74478 作者:3995

作为加入GIS这个行业有七八年历史的我,非常害怕和Arcgis的底层API接触,甚至自己写算法也不想接触。 当然一般来说,这对我来说,不用Arcgis就可以设计一些算法。 我和她谈过,那大概是说Arcgis以避免思考。 那么今天不要走那么远,先谈谈二次开发吧。 我不怎么广泛地去说。 我觉得很难记住是因为我强调了接口的编程。 接口当然有接口的好处,但如果Arcgis将接口放在任何对象上,则会变得非常复杂

1 )设计了很多低等类,在增加了API整体复杂性的同时,像Arrayclass(Iarray )一样很难记住。 ArrayClass还不支持泛化,却只支持XML,这完全没有必要。 请不要使用ArrayList XML帮助类。

类似的还有RgbColorClass (还不支持多参数构造函数) (死)。

2 ) Arcgis的基础API做了非常多的工作。 例如,PointClass。 这样写代码Var p=new PointClass (的话p.x=10; 那么报告错误((请试试) )。

这一间隔证明Arcgis的API只是对某些语言,如c语言的直接推导。 基本代码很差。 经过测试,C#的API PointF (或自己定义

Point2D )从IPoint对象仅访问属性x时,y为42秒到13秒

3 ) IGPString str=new GPStringClass ) )这样的写法,我认为这里有两个问题。 a )首先写IGPString str=new必须得到c#(ide )的智能提示,所以必须自己考虑实例对象。 b )可以大胆猜测IGPString str=new的继承。那么为什么要降格为接口呢?

4 )多次强制转换。 例如,有一本书写了这样的事情。

公共语音排除(itrackcanceltrackcancel ) )。

istepprogressorpsteppro=(istepprogressor )跟踪取消;

}

相似的有map.featureselectionasienumfeature; 其中FeatureSelection是ISelection接口,与IEnumFeature关系密切,不知道谁还记得。

这个写法是由Arcgis培养出来的,在我们公司有很多邂逅。 谁能给你这样转的勇气? 后面的维护人员需要了解多个函数,但仅调试跟踪取消几乎不知道这是什么。

5 ) IHookHelper对象。 Hook这个词是钩子的意思,这是当时c函数对底层消息的截断处理的一种方式,现在的人几乎不用了。 在这里使用Hook的话,我仿佛回到了10年前。 然后他有对象hook { get; set; 这个不查资料,不想知道都是无知的,我想即使是老手也要考虑一段时间吧。 我什么都讨厌对象。

6 ) ICommand、ITool等接口上的OnClick、OnMouseDown应该可以理解为事件响应。 既然是事件响应,自然就存在事件。 现在没有。 需要绕很大一圈。 例如,要动态调整事件传递的参数只能通过将引用对象添加到其构造函数中来处理。

6 )非常恶心的命名约定。 类后面有很多类似FeatureLayerClass的xx类。 功能层是功能层。 Class怎么翻译? 实例? 种类是什么? 我知道功能层其实已经是功能层了。 我认为添加Class是因为如果Arcgis能够制定新的命名规则,则C#、java等语言的复用就不会这样做了。 还有其他coclass(c样式)、p参数样式和hook样式

7 )完全不能理解IFieldEdit的属性Name_2的含义。 Arcgis任意命名变量,完全无视开发人员是否理解其含义。 在Arcgis上成功的道路只有一条,就是咨询别人的代码复制。

8 )二次开发与原生效果不一致的问题。 例如,在JSAPI中,自己画线会产生卡顿,而不是本机模式。 (使用esri.toolbars.Draw方法,但此类仍有问题。 第一分和第二分不连续。 )这可能是因为找不到相关的方法,或者在其内部进行了优化。

9 )总之,解决需要存储的接口的方法是避免使用var (例如直接写var point=new PointClass () .IPoint point=PointClass () ) ) 这样,不管他的基础怎么变,我都可以同时使用接口的信息和类的信息。

另外,这也是ERSI放弃原来东西的理由,他自己不想维护。 webApp简洁,代码量和存储量大幅减少。

第二部分我的解读之路

1 )封装,大量封装为一个帮助类。 此帮助类庞大,但易于查找,多负载函数可以满足大多数需要。

2 )不直接写接口,使用var定义名称,对于已知对象不转换为接口

3 )写很多笔记,没办法

4 )自己写部分算法,Arcgis慢,而且操作体验差,发挥空间受限。 不能再做了,资料也不够。

5 )舍弃Arcgis编程风格,大胆改变。 否则,永远只会在Arcgis屁股后面工作。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。