从事GIS应用开发也有3年了,但是做了些东西自己始终不满意,不是不稳定就是效率低,不是功能杂就是不实用!

  首先是AE开发,我必须说自己很欣赏ArcGIS的软件设计架构和思想。但是在开发的过程中也确实遇到了很多问题。首先是效率问题,Oracle的效率很高,可是建立在Oracle之上的SDE加载矢量图层,添加、删除要素类却很慢,这个让人很费解。不全是数据量的问题,即使是一个图层也会有这样的问题。AE过于庞大了,安装了ArcEngine占用了太多的空间和内存,毕竟是互操作封送了数据。不知道“嵌入互操作类型”能不能解决这个问题!

  其次是扩展性上,可能没有任何一款软件能够开放到如此程度吧,想扩展自己的数据格式或数据结构非常困难。尤其是应用GIS到工程领域还是有很多问题的。当然也有这样的原因,由于AE的庞大,开发者往往不具备足够的知识来洞悉其中的门道。确实,作为一名GIS专业的毕业生,整个大学和研究生阶段都没有系统的讲授软件底层的知识。比如GIS算法,计算机图形学,就算讲了也都是皮毛,对于数据结构和数据库等应用技术也都是自己摸索的。诚然学生最重要的是培养自己的学习能力,但是在从业后估计少有人能够深入的再研究这些基础的东西了吧。没有系统的知识也很难去深入的进行二次开发。

  第三个是稳定性,这个主要是开发者的原因,当然也有AE的问题。项目开发总是太庞杂,太乱。

  现在所在一家三维公司有一个自己的平台,从扩展性方面来说确实是提高了很多,可以做自己想要的渲染结果,但是却也是有诸多问题:

  一是程序版本很乱,不同版本的Dll可能有不同的问题,可能会缺失其它版本所具有的功能。

  二是整合了很多开源的代码,拿来主义,存在很多不稳定因素。而且大家都懒的自己写写东西,连验证有时候都不愿意去做。项目任务分配时候根本不会给你那么长的时间。一旦你说功能有了,领导就认为修改是分分钟的事情。

  三就是需求,项目的需求总是一变再变,导致做的系统总是很庞大,开发都没有心情了。GISer本来不具备行业知识,这个可以学习,但是想专业!难,很难,可能也只是能够装模作样罢了,这样浮躁的社会,从事三五年就能把行业的业务知识搞清楚了吗?我觉得很困难。

  四软件的架构设计非常混乱,总体框架设计、权限管理总是很乱,名义上是插件式、RBAC,但是也仅此而已。功能总是要完成了之后才说权限的问题。GIS不知道是不是都和主流的软件开发脱节,不注重软件架构的分层。图形数据不好分层,业务上明明就是信息管理,却没有什么ORM映射,逻辑分层这样的东西。可能GIS专业人员当项目经理根本就没有很多软件设计的经验吧。信息管理系统和图形数据处理系统区别很大,和数据分析的区别很大,参与的项目总是把所有的功能杂揉在一起,一个系统既包括信息管理,又包括图形编辑处理,还包括数据的计算和分析。对于GIS图形软件尤其是3D软件,采用网络总是要考虑数据的传输和加载问题的,加载矢量数据越多越影响系统的运行效率,如果有影像数据就更慢了。业务分析功能往往是有中间结果的,这些数据没有必要上传到服务器,所以保存在本地。于是系统就成了这个样子,可以加载基础地图数据,可以根据业务需要在SDE中新建各种图层,支持图层版本注册和编辑。有的时候需要从Map中加载图层,有的时候要从SDE中加载数据,有的时候要从非空间的Oracle库中取数据。从Map和非空间数据库中获取各种图层、属性和参数数据进行计算并将分析结果保存在本地,在计算的的过程中可能需要从本地加载一些数据进行分析。这样的系统总是很慢,加载数据慢,分析慢,连信息管理都要卡,可能还会莫名其妙的崩掉。一会是联机数据一会是本地数据,我觉得很别扭,这个和ArcGIS这样的通用平台有什么区别?只是SDE定死了,一个非空间库定死了。其实ArcGIS完全可以实现啊,而且分析功能用的还是GP。个人感觉如果是信息管理干脆做个B/S的得了,这样还实用些,本来就是分权限管理的吗!如果是用于工程设计的软件的话还是做个单机的算了,像sufer软件那样。把ArcGIS那套版本机制拿过来用也没有必要非得联机啊?人家本来就有离线版本啊。设计完了可以提交文件也可以入库啊!更扯的是本来已经很庞大的系统了还要同时支持联机和脱机!在加上没有分层设计,所以各种条件判断。为了保证程序不出问题,各种try-catch-log。

  相比之下感觉GIS行业中Web地图的开发确实不错,比如百度、高德。首先需求明确,面向的用户群体是所有普通的老百姓。二是Web开发相对来说要简单一些,可借鉴的东西很多。不需要特别复杂的空间分析,行业应用也要少。三是这些都是大的网络公司搞的,或者说是计算机背景的人搞出来的,技术实力比GIS专业的强。现在的GIS项目还不是很透明啊!

[随感]GIS开发的困惑的更多相关文章

  1. SuperMap iObject入门开发系列之一组件式GIS开发平台介绍

    本文是一位好友“炀炀”授权给我来发表的,介绍都是他的研究成果,在此,非常感谢.平台介绍:SuperMap iObjects Java/.NET 是面向GIS应用系统开发者的组件式GIS开发平台,具有强 ...

  2. GIS开发之数据查询

    在GIS开发之我们经常会用到属性查询和空间查询,特别是在数据量比较大的时候,如何提高查询效率成为一个问题 1.属性查询 对于属性查询,除了必要的建索引之外,我们还应该考虑使用字段缓存:减少查询字段,减 ...

  3. Android GIS开发系列-- 入门季(14)FeatureLayer之范围查询

    Android GIS开发系列-- 入门季(5),这篇文章中,我们知道如何去查找要素.现在有一个需求,查找某点5000米范围的要素,那如何来做呢?首先我们需要在地图上画个5000米半径的圆,然后根据Q ...

  4. SuperMap iClient 7C——网络客户端GIS开发平台 产品新特性

    SuperMap iClient 7C是空间信息和服务的可视化交互开发平台,是SuperMap服务器系列产品的统一客户端.产品基于统一的架构体系,面向Web端和移动端提供了多种类型的SDK开发包,帮助 ...

  5. 飞锐GIS开发基础系列

    3s知识库和GIS科研站,未经允许,禁止任何形式的复制.转载和传播.联系方式:276888624@qq.com 品GIS,品开发,品人生...... http://www.3sbase.com/3sb ...

  6. GIS开发离线地图应用-初识gis

    http://www.cnblogs.com/kevin-zlg/p/4611671.html 最新公司需要做一个基于gis地图的应用系统,由于之前公司项目中的电子地图模块都是我开发的,所以这个新系统 ...

  7. Web Map Gis 开发系列索引

    Google Map API Version3 :代码添加和删除marker标记 谷歌地图地理解析和反解析geocode.geocoder详解 Google map markers 百度与谷歌地图瓦片 ...

  8. GIS开发环境全面升级10.1

    最近,因为公司开发的需要,对开发环境进行全面的升级,在这其中也遇到了不少问题,在之后将陆续整理出来,以便以后查看. 之前开发环境:VS2008,ArcGIS9.3,ArcEngine9.3,Oracl ...

  9. Engine许可初始化 - gis开发初步

    当需要对SDE中的要素类和要素数据集(矢量和栅格)进行编辑时,例如在调用IFeatureDataset的CreateFeatureClass方法时,报错提示: The application is n ...

随机推荐

  1. mysqldump对于DB进行逻辑备份的时候,是否会备份视图呢?

    需求描述: 今天在mysql备份的书的内容,提到了mysqldump在备份数据库的时候,不会备份视图 所以,就做了个实验测试下,发现,是能够备份视图的,在此记录下. 环境描述: Mysql版本:5.5 ...

  2. mybatis 循环遍历

    /****Service/ public ServiceMessage<MemberFreedomRepModel> getMFListByPay(Long memberId,Long f ...

  3. linux--GCC用法

    1简介 2简单编译 2.1预处理 2.2编译为汇编代码(Compilation) 2.3汇编(Assembly) 2.4连接(Linking) 3多个程序文件的编译 4检错 5库文件连接 5.1编译成 ...

  4. 当inline-block或者float失效的时候怎么弄

    当我们想要元素水平排列的时候,inline-block或者float是最好的选择了,但是当父元素的宽高都设置了的时候,子元素会失效,如下: 代码: <!DOCTYPE html> < ...

  5. Oracle分页查询sql语句

    1. select * from ( select  t.*, rownum RN from TABLE_NAME  t ) where RN > 0 and RN <= 15 2. se ...

  6. <转>Logistic回归总结

    转自http://blog.csdn.net/dongtingzhizi/article/details/15962797 当我第一遍看完台大的机器学习的视频的时候,我以为我理解了逻辑回归,可后来越看 ...

  7. java基础---->java中Properties的使用

    Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支 持的配置文件,配置文件中很多变量是经常改变的,这样做也 ...

  8. 证书:数字签名和验签&加密和解密

    用的是湖北省数字证书认证管理中心的签名和加密 1.带私钥的证书,即p12格式证书(后缀为.pfx) 2.不带私钥的证书,有多种格式,通常我们使用的是cer格式证书(后缀为.cer) 一. 1.什么是对 ...

  9. tomcat项目快速启动设置

    1.现象:tomcat启动项目时,耗费10几秒的时间 2.(tomcat7)解决:打开$JAVA_HOME/jre/lib/security/java.security这个文件 找到下面的内容:sec ...

  10. 问答项目---用户注册的那些事儿(PHP验证)

    JS 验证之后,还需要通过PHP验证: 提交过来的名称不一样,可以用字段映射: 在自动验证的时候,如果这个字段被映射,那么自动验证的时候,自动验证的就是 映射过后的字段: 控制器示例: //注册表单处 ...