从事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. 从事GIS开发多年,2017年对GIS行业的心得,尤其对三维GIS的理解

    个人群号 309141738 本人从事GIS方面开发六年了,但是一开始大学并未学的是GIS方面的专业,本人学习的专业叫对日软件开发,呵呵...很新颖的一个名字把,没错,本来想着毕业后去日本从事软件开发 ...

  2. 基于TerraDeveloper的三维GIS开发研究

    [中文题名]  基于TerraDeveloper的三维GIS开发研究 [英文题名]  Research on the Development of 3D GIS Based on TerraDevel ...

  3. Google Maps和GIS开发资源收集

    Google Maps JQuery Maps google map是怎样工作的 Google Map API基本概念 Google Maps API编程资源大全 google map限制地图缩放级别 ...

  4. [转]GIS开发平台的未来 —— .NET还是J2EE?

    在GIS开发领域,从底层开发到应用系统,从数据采集到空间分析,从单机应用到网络发布,我们是否真的需要.NET或J2EE?尽管四周一片鼓噪之声,尽管已经有了转换平台的成功先例,我们依然需要冷静的考虑,慎 ...

  5. GIS开发平台的未来 — .NET还是J2EE?

    在GIS开发领域,从底层开发到应用系统,从数据采集到空间分析,从单机应用到网络发布,我们是否真的需要.NET或J2EE?尽管四周一片鼓噪之声,尽管已经有了转换平台的成功先例,我们依然需要冷静的考虑,慎 ...

  6. GIS开发:Contour(轮廓线)

    Contour(轮廓线)是在gis开发中,一个常用的展示方式,可将一批分布在地图上的点,按照数值分段,连接起来,显示成一块块分布的区域,等高线也是按照这个原理进行生成的. 效果图: 二维的contou ...

  7. GIS开发之二维地下管线综合管理系统(Arcgis)第四节 查询(2)

    目录 1.前言 2.功能介绍 2.1 关于QueryTask实现空间查询和属性查询 3.示例代码 3.1 QueryTask 4.参考资料 1.前言   上节主要和大家分享了点击查询相关的参数设置和前 ...

  8. Web GIS开发教程

    Web GIS开发教程 非程序员的基本 Web GIS 开发 课程英文名:Web GIS development course 此视频教程共4.0小时,中英双语字幕,画质清晰无水印,源码附件全 下载地 ...

  9. 学GIS开发怎么入门,GIS专业的学生应该掌握什么知识 ?

    (一) 打好编程基础 这篇文章仅给那些GIS专业的,想学GIS开发的,但现在还没怎么入门不知道该从哪学起的在校生参考的.这篇文章不是讨论GIS开发是否有前途的,也不是讨论做GIS是不是就一定应该做开发 ...

最新文章

  1. python2.7读写xls
  2. java jsonobject转List_java – 将JSONObject转换为List或JSONArray的简单代码?
  3. java反射重要么_JAVA反射----这些知识你需要知道
  4. 为了更好——关于博客搬迁的说明
  5. python3转码python2_python2写的代码移植到python3后无法转码成中文文本,请大神指教,谢谢~...
  6. linux mysql使用
  7. Android 系统(94)---android系统属性(ro.com.google.clientidbase.ms)随卡适配
  8. const 修饰的对象属性可以修改,但是修饰的常量就不可以修改
  9. 搞定操作系统面试,看这篇就够了(二)
  10. winfrom 窗口起始位置为屏幕中央
  11. php结构的项目,ThinkPHP修改项目结构
  12. 【操作篇】qBittorrent下载+转种Transmission快校版+IYUU Plus辅种教程
  13. vmware运行虚拟机ubuntu,电脑就重启
  14. NR SRB and message transfer
  15. Jenkins项目配置-Nodejs项目(Vue框架)-全面
  16. 腾讯计算机安全实验室,TRP-AI反病毒引擎创新:腾讯安全最新成果入围顶级学术会议...
  17. 学习篇--FPGA学习网站
  18. 【js-xlsx和file-saver插件】前端html的table导出数据到excel的表格合并显示boder
  19. 在线硬盘存储计算机,硬盘存储
  20. IKEv2的认证数据生成过程

热门文章

  1. ASP.NET 常用的33种代码(转,收藏一下,以备后查)
  2. Ubuntu 11.04下编译kernel
  3. NGUI_2.6.3_系列教程三
  4. cocos2d-x调度器原理,mainloop的Update
  5. CString转换为char*
  6. AndroidStudio_android实现双击_3击_监听实现---Android原生开发工作笔记240
  7. STM32工作笔记0093---DAC数模转换实验-M3
  8. SpringCloud工作笔记062---APP消息推送_个推平台API使用经验
  9. python数据结构剑指offer-替换空格
  10. c语言有2维结构体没,c语言结构体说明